Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,14 @@ repositories {
maven { url "https://maven.shedaniel.me/" }
maven { url "https://maven.terraformersmc.com/" }
maven { url "https://www.cursemaven.com" }
maven { url "https://ladysnake.jfrog.io/artifactory/mods" }
// maven { url "https://ladysnake.jfrog.io/artifactory/mods" }
maven { url "https://jitpack.io" }
maven { url "https://maven.nucleoid.xyz/"}
maven { url "https://api.modrinth.com/maven" }

maven {
setUrl("https://maven.ladysnake.org/releases")
}
}

dependencies {
Expand All @@ -29,11 +34,13 @@ dependencies {
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"

// LevelZ
modImplementation ('com.github.Globox1997:LevelZ:1.19-SNAPSHOT') {
// modImplementation ('com.github.Globox1997:LevelZ:1.19-SNAPSHOT') {
modImplementation ('maven.modrinth:levelz:1.4.9+1.19.2') {
exclude(group: "net.fabricmc.fabric-api")
}
// LibZ
modImplementation ('com.github.Globox1997:LibZ:344927d33c') {
// modImplementation ('com.github.Globox1997:LibZ:344927d33c') {
modImplementation ('maven.modrinth:libz:1.0.0') {
exclude(group: "net.fabricmc.fabric-api")
}
// Cloth
Expand All @@ -48,26 +55,26 @@ dependencies {
modCompileOnly ('curse.maven:numismatic-overhaul-568316:3860596') {
exclude(group: "net.fabricmc.fabric-api")
}
modCompileOnly ("dev.onyxstudios.cardinal-components-api:cardinal-components-base:5.0.0-beta.1")
modCompileOnly ("dev.onyxstudios.cardinal-components-api:cardinal-components-entity:5.0.0-beta.1")
modCompileOnly ("dev.onyxstudios.cardinal-components-api:cardinal-components-base:5.0.2")
modCompileOnly ("dev.onyxstudios.cardinal-components-api:cardinal-components-entity:5.0.2")
// FarmersDelight
modCompileOnly ('curse.maven:farmers-delight-fabric-482834:3947019') {
exclude(group: "net.fabricmc.fabric-api")
}
// FallingTree
modCompileOnly ('curse.maven:falling-tree-349559:3968312'),{
modCompileOnly ('curse.maven:falling-tree-349559:3968312'){
exclude(group: "net.fabricmc.fabric-api")
}
// TreeChop
modCompileOnly ('curse.maven:treechop-421377:4413708'),{
modCompileOnly ('curse.maven:treechop-421377:4413708'){
exclude(group: "net.fabricmc.fabric-api")
}
// MedievalWeapons
// modCompileOnly ('curse.maven:medievalweapons-411400:4088548'),{
// exclude(group: "net.fabricmc.fabric-api")
// }
// Harvest Scythes
modCompileOnly ('curse.maven:harvest-scythes-412225:4026103'),{
modCompileOnly ('curse.maven:harvest-scythes-412225:4026103'){
exclude(group: "net.fabricmc.fabric-api")
}
}
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/net/jobsaddon/access/PlayerAccess.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,8 @@ public interface PlayerAccess {

public void setLastRecipeId(Identifier identifier);

public boolean isQuickCrafted();

public void setQuickCraftedRecipe(boolean quickCrafted);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package net.jobsaddon.mixin.misc;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import net.jobsaddon.access.PlayerAccess;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.screen.CraftingScreenHandler;

@Mixin(CraftingScreenHandler.class)
public class CraftingScreenHandlerMixin {

@Inject(method = "transferSlot", at = @At(value = "INVOKE", target = "Lnet/minecraft/screen/ScreenHandlerContext;run(Ljava/util/function/BiConsumer;)V"))
private void quickMoveMixin(PlayerEntity player, int slot, CallbackInfoReturnable<ItemStack> info) {
if (!player.getWorld().isClient()) {
((PlayerAccess) player).setQuickCraftedRecipe(true);
}
}
}
22 changes: 19 additions & 3 deletions src/main/java/net/jobsaddon/mixin/misc/ItemMixin.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package net.jobsaddon.mixin.misc;

import net.minecraft.screen.BlastFurnaceScreenHandler;
import net.minecraft.screen.CraftingScreenHandler;
import net.minecraft.screen.FurnaceScreenHandler;
import net.minecraft.screen.PlayerScreenHandler;
import net.minecraft.util.Identifier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
Expand All @@ -18,13 +23,24 @@ public class ItemMixin {

@Inject(method = "onCraft", at = @At("TAIL"))
private void onCraftMixin(ItemStack stack, World world, PlayerEntity player, CallbackInfo info) {
if (!world.isClient && stack != null && !stack.isEmpty()) {
if (((PlayerAccess) player).getLastRecipeId() == null || !JobLists.restrictedRecipeIds.contains(((PlayerAccess) player).getLastRecipeId())) {

if (!world.isClient() && stack != null && !stack.isEmpty()) {
boolean isQuickCrafted = ((PlayerAccess) player).isQuickCrafted();
boolean isRestricted = JobLists.restrictedRecipeIds.contains(((PlayerAccess) player).getLastRecipeId());
Identifier receipt = ((PlayerAccess) player).getLastRecipeId();


// We need to rely on this check, because of a bug in 1.19 causing wrong setLastRecipeId
boolean isFurnace = player.currentScreenHandler instanceof FurnaceScreenHandler || player.currentScreenHandler instanceof BlastFurnaceScreenHandler;

if (!isQuickCrafted && ((receipt == null || !isRestricted) || isFurnace)) {
JobHelper.addSmitherXp(player, stack);
JobHelper.addFisherCraftingXp(player, stack);
JobHelper.addFarmerCraftingXp(player, stack);
((PlayerAccess) player).setLastRecipeId(null);
}
((PlayerAccess) player).setLastRecipeId(null);
((PlayerAccess) player).setQuickCraftedRecipe(false);
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public interface RecipeUnlockerMixin {

@Inject(method = "shouldCraftRecipe", at = @At("HEAD"))
default public void shouldCraftRecipeMixin(World world, ServerPlayerEntity player, Recipe<?> recipe, CallbackInfoReturnable<Boolean> info) {
System.out.println("Should craft called " + recipe.getId());
((PlayerAccess) player).setLastRecipeId(recipe.getId());
}
}
11 changes: 11 additions & 0 deletions src/main/java/net/jobsaddon/mixin/player/PlayerEntityMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public class PlayerEntityMixin implements JobsManagerAccess, PlayerAccess {
private int blockCount;
@Nullable
private Identifier lastRecipeIdentifier;
private boolean quickCraftedRecipe;

@Inject(method = "readCustomDataFromNbt", at = @At(value = "TAIL"))
private void readCustomDataFromNbtMixin(NbtCompound tag, CallbackInfo info) {
Expand Down Expand Up @@ -114,4 +115,14 @@ public Identifier getLastRecipeId() {
public void setLastRecipeId(Identifier identifier) {
this.lastRecipeIdentifier = identifier;
}

@Override
public boolean isQuickCrafted() {
return this.quickCraftedRecipe;
}

@Override
public void setQuickCraftedRecipe(boolean quickCrafted) {
this.quickCraftedRecipe = quickCrafted;
}
}
46 changes: 46 additions & 0 deletions src/main/resources/data/jobsaddon/restricted/default.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"replace": false,
"recipes": [
"minecraft:wheat",
"minecraft:hay_block",
"minecraft:coal_block",
"minecraft:coal",
"minecraft:gold_ingot_from_nuggets",
"minecraft:gold_nugget",
"minecraft:gold_ingot_from_gold_block",
"minecraft:gold_block",
"minecraft:raw_gold",
"minecraft:raw_gold_block",
"minecraft:iron_ingot_from_nuggets",
"minecraft:iron_nugget",
"minecraft:iron_ingot_from_iron_block",
"minecraft:iron_block",
"minecraft:raw_iron",
"minecraft:raw_iron_block",
"minecraft:copper_block",
"minecraft:copper_ingot",
"minecraft:copper_ingot_from_waxed_copper_block",
"minecraft:raw_copper",
"minecraft:raw_copper_block",
"minecraft:diamond_block",
"minecraft:diamond",
"minecraft:netherite_block",
"minecraft:netherite_ingot_from_netherite_block",
"minecraft:redstone_block",
"minecraft:redstone",
"minecraft:emerald_block",
"minecraft:emerald",
"minecraft:lapis_block",
"minecraft:lapis_lazuli",
"minecraft:quartz_block",
"minecraft:slime_ball",
"minecraft:slime_block",
"minecraft:honey_block",
"minecraft:honey_bottle",
"minecraft:dried_kelp",
"minecraft:dried_kelp_block",
"minecraft:dried_kelp_from_campfire_cooking",
"minecraft:dried_kelp_from_smelting",
"minecraft:dried_kelp_from_smoking"
]
}
1 change: 1 addition & 0 deletions src/main/resources/jobsaddon.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"misc.EnchantmentScreenHandlerMixin",
"misc.ItemMixin",
"misc.RecipeUnlockerMixin",
"misc.CraftingScreenHandlerMixin",
"block.BlockMixin",
"block.TntBlockMixin",
"block.SweetBerryBushBlockMixin",
Expand Down