Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.possible_triangle.sliceanddice.mixins;

import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
import com.possible_triangle.sliceanddice.compat.ModCompat;
import com.simibubi.create.content.contraptions.actors.harvester.HarvesterMovementBehaviour;
Expand All @@ -9,25 +8,22 @@
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
import vectorwing.farmersdelight.common.registry.ModItems;

import java.util.function.Supplier;

@Mixin(HarvesterMovementBehaviour.class)
public class HarvesterMovementBehaviourMixin {

@Unique
private static final Supplier<ItemStack> sliceanddice$TOOL = Suppliers.memoize(() -> {
return ModCompat.INSTANCE.ifLoaded(ModCompat.FARMERS_DELIGHT, () -> new ItemStack(ModItems.IRON_KNIFE.get()));
});
private static final Supplier<ItemStack> sliceanddice$TOOL = Suppliers.memoize(ModCompat.INSTANCE::getHarvesterTool);

@ModifyVariable(
require = 0,
method = "visitNewPosition(Lcom/simibubi/create/content/contraptions/behaviour/MovementContext;Lnet/minecraft/core/BlockPos;)V",
at = @At("STORE")
at = @At(value = "STORE", ordinal = 0)
)
private ItemStack overwriteDefaultItem(ItemStack stack) {
var tool = sliceanddice$TOOL.get();
if (tool != null) return tool;
return stack;
return sliceanddice$TOOL.get();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.possible_triangle.sliceanddice.compat
import com.possible_triangle.sliceanddice.SliceAndDice
import net.fabricmc.loader.api.FabricLoader
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Items
import net.minecraft.world.item.crafting.Recipe
import net.minecraft.world.level.ItemLike
Expand Down Expand Up @@ -31,6 +32,11 @@ object ModCompat : IRecipeInjector {
FarmersDelightCompat.ifLoaded { injectRecipes(existing, add) }
}

val harvesterTool
get(): ItemStack? {
return ifLoaded(FARMERS_DELIGHT) { ModItems.IRON_KNIFE.get() }?.let(::ItemStack) ?: ItemStack.EMPTY
}

val exampleTool
get(): ItemLike {
return ifLoaded(FARMERS_DELIGHT) { ModItems.IRON_KNIFE.get() } ?: Items.IRON_AXE
Expand Down
17 changes: 17 additions & 0 deletions src/main/resources/assets/sliceanddice/lang/fr_fr.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"block.sliceanddice.fertilizer": "Engrais liquide",
"block.sliceanddice.slicer": "Trancheuse",
"block.sliceanddice.sprinkler": "Arroseur",
"block.sliceanddice.wet_air": "Air humide",
"fluid.sliceanddice.fertilizer": "Engrais liquide",
"item.sliceanddice.fertilizer_bucket": "Seau d'engrais liquide",
"sliceanddice.gui.contraptions.wrong_direction": "Il semblerait que ce(t)(te) %s tourne dans la _mauvaise direction_.",
"sliceanddice.ponder.slicer.header": "Couper avec la trancheuse",
"sliceanddice.ponder.slicer.text_1": "Clic droit avec un outil valide",
"sliceanddice.ponder.slicer.text_2": "La trancheuse peut aussi fonctionner sur un bassin",
"sliceanddice.ponder.sprinkler/intro.header": "Pluie d'arrosage",
"sliceanddice.ponder.sprinkler/intro.text_1": "Placer un arroseur sous un tuyau",
"sliceanddice.ponder.sprinkler/uses.header": "Différents arrosages",
"sliceanddice.ponder.sprinkler/uses.text_1": "Des fluides différents affectent les entités différemment",
"sliceanddice.tooltip.rotationDirection": "Sens de rotation"
}
5 changes: 4 additions & 1 deletion src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,16 @@
],
"depends": {
"fabricloader": ">=0.14",
"fabric": "*",
"fabric-api": "*",
"minecraft": "1.20.1",
"java": ">=17",
"fabric-language-kotlin": "^1.9.0",
"create": "*"
},
"recommends": {
"farmersdelight": "*"
},
"breaks": {
"farmersdelight": "<1.20.1-2.0.0"
}
}