diff --git a/gradle.properties b/gradle.properties index 0ab81c7..c2fa5e7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx1G # Mod Properties -projectVersion=4.0.0 +projectVersion=4.0.1 maven_group=gay.ampflower.mod curseforgeId=914551 diff --git a/libs.versions.toml b/libs.versions.toml index 93208ea..36c04fd 100644 --- a/libs.versions.toml +++ b/libs.versions.toml @@ -3,7 +3,7 @@ # Minecraft minecraft_version = "1.19.2" minecraft_required = "1.17" -minecraft_compatible = "1.17,1.17.1,1.18,1.18.1,1.18.2,1.19,1.19.1,1.19.2,1.19.3" +minecraft_compatible = "1.17,1.17.1,1.18,1.18.1,1.18.2,1.19,1.19.1,1.19.2,1.19.3,1.19.4" fabric_loader = "0.14.21" diff --git a/src/main/java/tfar/fastbench/MixinHooks.java b/src/main/java/tfar/fastbench/MixinHooks.java index 7ef7850..9b93b32 100644 --- a/src/main/java/tfar/fastbench/MixinHooks.java +++ b/src/main/java/tfar/fastbench/MixinHooks.java @@ -36,6 +36,7 @@ import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; import tfar.fastbench.interfaces.CraftingInventoryDuck; +import tfar.fastbench.interfaces.RecipeCoercer; import tfar.fastbench.mixin.ContainerAccessor; import java.util.Collections; @@ -55,7 +56,8 @@ public static void slotChangedCraftingGrid(Level level, CraftingContainer inv, R if (recipe == null || !recipe.matches(inv, level)) recipe = findRecipe(inv, level); if (recipe != null) { - itemstack = recipe.assemble(inv); + // assemble + itemstack = ((RecipeCoercer) recipe).method_8116(inv, level.registryAccess()); } result.setItem(0, itemstack); diff --git a/src/main/java/tfar/fastbench/interfaces/RecipeCoercer.java b/src/main/java/tfar/fastbench/interfaces/RecipeCoercer.java new file mode 100644 index 0000000..b619041 --- /dev/null +++ b/src/main/java/tfar/fastbench/interfaces/RecipeCoercer.java @@ -0,0 +1,23 @@ +package tfar.fastbench.interfaces; + +import net.minecraft.core.RegistryAccess; +import net.minecraft.world.Container; +import net.minecraft.world.item.ItemStack; + +/** + * Why support 1.19.4 out of band when you can curse your code? + * + * @author Ampflower + * @since 4.0.1 + **/ +public interface RecipeCoercer { + default ItemStack method_8116(C container) { + return this.assemble(container); + } + + ItemStack assemble(C container); + + default ItemStack method_8116(C container, RegistryAccess registryAccess) { + return this.method_8116(container); + } +} diff --git a/src/main/java/tfar/fastbench/mixin/RecipeCoercerMixin.java b/src/main/java/tfar/fastbench/mixin/RecipeCoercerMixin.java new file mode 100644 index 0000000..8d4edeb --- /dev/null +++ b/src/main/java/tfar/fastbench/mixin/RecipeCoercerMixin.java @@ -0,0 +1,16 @@ +package tfar.fastbench.mixin; + +import net.minecraft.world.Container; +import net.minecraft.world.item.crafting.Recipe; +import org.spongepowered.asm.mixin.Mixin; +import tfar.fastbench.interfaces.RecipeCoercer; + +/** + * For 1.19.4 compatibility, the cursed way. + * + * @author Ampflower + * @since 4.0.1 + **/ +@Mixin(Recipe.class) +public interface RecipeCoercerMixin extends RecipeCoercer { +} diff --git a/src/main/resources/quickbench.mixins.json b/src/main/resources/quickbench.mixins.json index 706a7cf..d7a7adc 100644 --- a/src/main/resources/quickbench.mixins.json +++ b/src/main/resources/quickbench.mixins.json @@ -9,6 +9,7 @@ "CraftingMenuMixin", "CraftingResultSlotMixin", "PlayerContainerMixin", + "RecipeCoercerMixin", "RecipeManagerMixin", "ServerPlaceRecipeMixin" ],