diff --git a/common/build.gradle b/common/build.gradle index bbf54231..bc9b8299 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -26,6 +26,7 @@ dependencies { modCompileOnly("appeng:appliedenergistics2-fabric:${appeng_version}") { transitive = false } + modCompileOnly("curse.maven:diagonal-fences-458048:${diagonal_fences_version}") // compile against the JEI API but do not include it at runtime modCompileOnly("mezz.jei:jei-${minecraft_version}-common:${jei_version}") modCompileOnly("mezz.jei:jei-${minecraft_version}-gui:${jei_version}") diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/diagonalfences/MultipartAppenderMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/diagonalfences/MultipartAppenderMixin.java new file mode 100644 index 00000000..7c702fba --- /dev/null +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/diagonalfences/MultipartAppenderMixin.java @@ -0,0 +1,43 @@ +package org.embeddedt.modernfix.common.mixin.perf.dynamic_resources.diagonalfences; + +import fuzs.diagonalfences.api.world.level.block.DiagonalBlock; +import fuzs.diagonalfences.client.model.MultipartAppender; +import net.minecraft.client.renderer.block.model.multipart.MultiPart; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.UnbakedModel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.FenceBlock; +import org.embeddedt.modernfix.ModernFixClient; +import org.embeddedt.modernfix.annotation.RequiresMod; +import org.embeddedt.modernfix.api.entrypoint.ModernFixClientIntegration; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(MultipartAppender.class) +@RequiresMod("diagonalfences") +public abstract class MultipartAppenderMixin { + @Shadow(remap = false) + public static void appendDiagonalSelectors(ModelBakery modelBakery, MultiPart multiPart) { + throw new AssertionError(); + } + + @Inject(method = "onPrepareModelBaking", at = @At("RETURN")) + private static void setupHelper(CallbackInfo ci) { + ModernFixClient.CLIENT_INTEGRATIONS.add(new ModernFixClientIntegration() { + @Override + public UnbakedModel onUnbakedModelLoad(ResourceLocation location, UnbakedModel originalModel, ModelBakery bakery) { + if(originalModel instanceof MultiPart multipart) { + Block block = multipart.definition.getOwner(); + if(block instanceof FenceBlock && block instanceof DiagonalBlock diagonalBlock && diagonalBlock.hasProperties()) { + appendDiagonalSelectors(bakery, multipart); + } + } + return originalModel; + } + }); + } +} diff --git a/common/src/main/resources/modernfix.accesswidener b/common/src/main/resources/modernfix.accesswidener index 0873eccb..f43fe931 100644 --- a/common/src/main/resources/modernfix.accesswidener +++ b/common/src/main/resources/modernfix.accesswidener @@ -29,4 +29,5 @@ accessible class net/minecraft/world/level/chunk/PalettedContainer$Data accessible field net/minecraft/server/MinecraftServer resources Lnet/minecraft/server/MinecraftServer$ReloadableResources; accessible class net/minecraft/server/MinecraftServer$ReloadableResources accessible method net/minecraft/client/gui/screens/Screen addRenderableWidget (Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/components/events/GuiEventListener; -accessible field net/minecraft/client/KeyMapping ALL Ljava/util/Map; \ No newline at end of file +accessible field net/minecraft/client/KeyMapping ALL Ljava/util/Map; +accessible field net/minecraft/client/renderer/block/model/multipart/MultiPart definition Lnet/minecraft/world/level/block/state/StateDefinition; \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index cfb24271..b59cb53a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,3 +18,4 @@ fabric_api_version=0.76.0+1.19.2 modmenu_version=4.1.2 appeng_version=12.9.3 +diagonal_fences_version=4545943 \ No newline at end of file