diff options
Diffstat (limited to 'src/main')
4 files changed, 23 insertions, 13 deletions
diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/ActiveCITs.java b/src/main/java/shcm/shsupercm/fabric/citresewn/ActiveCITs.java index 9085e6f..231c1cd 100644 --- a/src/main/java/shcm/shsupercm/fabric/citresewn/ActiveCITs.java +++ b/src/main/java/shcm/shsupercm/fabric/citresewn/ActiveCITs.java @@ -1,8 +1,5 @@ package shcm.shsupercm.fabric.citresewn; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.render.VertexConsumers; import net.minecraft.client.render.model.BakedModel; import net.minecraft.client.world.ClientWorld; import net.minecraft.entity.LivingEntity; diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/ItemRendererMixin.java b/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/ItemRendererMixin.java index 4594d8f..7af6c22 100644 --- a/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/ItemRendererMixin.java +++ b/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/ItemRendererMixin.java @@ -15,25 +15,34 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import shcm.shsupercm.fabric.citresewn.CITResewn; +import shcm.shsupercm.fabric.citresewn.config.CITResewnConfig; import shcm.shsupercm.fabric.citresewn.pack.cits.CITEnchantment; @Mixin(ItemRenderer.class) public class ItemRendererMixin { @Inject(method = "getHeldItemModel", at = @At("TAIL")) private void setAppliedContext(ItemStack stack, World world, LivingEntity entity, int seed, CallbackInfoReturnable<BakedModel> cir) { - if (CITResewn.INSTANCE.activeCITs != null) + if (CITResewnConfig.INSTANCE().enabled && CITResewn.INSTANCE.activeCITs != null) CITResewn.INSTANCE.activeCITs.setEnchantmentAppliedContextCached(stack, world, entity); } + @Inject(method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformation$Mode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", at = @At("HEAD")) + private void startApplyingItem(ItemStack stack, ModelTransformation.Mode renderMode, boolean leftHanded, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay, BakedModel model, CallbackInfo ci) { + if (CITResewnConfig.INSTANCE().enabled) + CITEnchantment.shouldApply = true; + } + @Inject(method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformation$Mode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", at = @At("TAIL")) - private void clearAppliedContext(ItemStack stack, ModelTransformation.Mode renderMode, boolean leftHanded, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay, BakedModel model, CallbackInfo ci) { + private void stopApplyingItem(ItemStack stack, ModelTransformation.Mode renderMode, boolean leftHanded, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay, BakedModel model, CallbackInfo ci) { + CITEnchantment.shouldApply = false; if (CITResewn.INSTANCE.activeCITs != null) CITResewn.INSTANCE.activeCITs.setEnchantmentAppliedContextCached(null, null, null); } - @Inject(method = "getArmorGlintConsumer", cancellable = true, at = @At("RETURN")) private static void getArmorGlintConsumer(VertexConsumerProvider provider, RenderLayer layer, boolean solid, boolean glint, CallbackInfoReturnable<VertexConsumer> cir) { + if (!CITEnchantment.shouldApply) + return; VertexConsumer vertexConsumer = solid ? CITEnchantment.GlintRenderLayer.ARMOR_GLINT.tryApply(cir.getReturnValue(), provider) : CITEnchantment.GlintRenderLayer.ARMOR_ENTITY_GLINT.tryApply(cir.getReturnValue(), provider); if (vertexConsumer != null) cir.setReturnValue(vertexConsumer); @@ -41,6 +50,8 @@ public class ItemRendererMixin { @Inject(method = "getCompassGlintConsumer", cancellable = true, at = @At("RETURN")) private static void getCompassGlintConsumer(VertexConsumerProvider provider, RenderLayer layer, MatrixStack.Entry entry, CallbackInfoReturnable<VertexConsumer> cir) { + if (!CITEnchantment.shouldApply) + return; VertexConsumer vertexConsumer = CITEnchantment.GlintRenderLayer.GLINT.tryApply(null, provider); if (vertexConsumer != null) cir.setReturnValue(VertexConsumers.union(new OverlayVertexConsumer(vertexConsumer, entry.getModel(), entry.getNormal()), cir.getReturnValue())); @@ -48,6 +59,8 @@ public class ItemRendererMixin { @Inject(method = "getDirectCompassGlintConsumer", cancellable = true, at = @At("RETURN")) private static void getDirectCompassGlintConsumer(VertexConsumerProvider provider, RenderLayer layer, MatrixStack.Entry entry, CallbackInfoReturnable<VertexConsumer> cir) { + if (!CITEnchantment.shouldApply) + return; VertexConsumer vertexConsumer = CITEnchantment.GlintRenderLayer.DIRECT_GLINT.tryApply(null, provider); if (vertexConsumer != null) cir.setReturnValue(VertexConsumers.union(new OverlayVertexConsumer(vertexConsumer, entry.getModel(), entry.getNormal()), cir.getReturnValue())); @@ -55,6 +68,8 @@ public class ItemRendererMixin { @Inject(method = "getItemGlintConsumer", cancellable = true, at = @At("RETURN")) private static void getItemGlintConsumer(VertexConsumerProvider provider, RenderLayer layer, boolean solid, boolean glint, CallbackInfoReturnable<VertexConsumer> cir) { + if (!CITEnchantment.shouldApply) + return; VertexConsumer vertexConsumer = MinecraftClient.isFabulousGraphicsOrBetter() && layer == TexturedRenderLayers.getItemEntityTranslucentCull() ? CITEnchantment.GlintRenderLayer.GLINT_TRANSLUCENT.tryApply(cir.getReturnValue(), provider) : (solid ? CITEnchantment.GlintRenderLayer.GLINT.tryApply(cir.getReturnValue(), provider) : CITEnchantment.GlintRenderLayer.ENTITY_GLINT.tryApply(cir.getReturnValue(), provider)); if (vertexConsumer != null) cir.setReturnValue(vertexConsumer); @@ -62,6 +77,8 @@ public class ItemRendererMixin { @Inject(method = "getDirectItemGlintConsumer", cancellable = true, at = @At("RETURN")) private static void getDirectItemGlintConsumer(VertexConsumerProvider provider, RenderLayer layer, boolean solid, boolean glint, CallbackInfoReturnable<VertexConsumer> cir) { + if (!CITEnchantment.shouldApply) + return; VertexConsumer vertexConsumer = solid ? CITEnchantment.GlintRenderLayer.DIRECT_GLINT.tryApply(cir.getReturnValue(), provider) : CITEnchantment.GlintRenderLayer.DIRECT_ENTITY_GLINT.tryApply(cir.getReturnValue(), provider); if (vertexConsumer != null) cir.setReturnValue(vertexConsumer); diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/ItemStackMixin.java b/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/ItemStackMixin.java index 7ac7a3a..4834a76 100644 --- a/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/ItemStackMixin.java +++ b/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/ItemStackMixin.java @@ -29,7 +29,7 @@ public class ItemStackMixin implements CITEnchantment.Cached { @Inject(method = "hasGlint", cancellable = true, at = @At("HEAD")) private void disableDefaultGlint(CallbackInfoReturnable<Boolean> cir) { - if (CITEnchantment.appliedContext != null && !CITEnchantment.appliedContext.get(0).useGlint) + if (CITEnchantment.shouldApply && CITEnchantment.appliedContext != null && !CITEnchantment.appliedContext.get(0).useGlint) cir.setReturnValue(false); } } diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/pack/cits/CITEnchantment.java b/src/main/java/shcm/shsupercm/fabric/citresewn/pack/cits/CITEnchantment.java index 3c063db..cce2f29 100644 --- a/src/main/java/shcm/shsupercm/fabric/citresewn/pack/cits/CITEnchantment.java +++ b/src/main/java/shcm/shsupercm/fabric/citresewn/pack/cits/CITEnchantment.java @@ -2,13 +2,8 @@ package shcm.shsupercm.fabric.citresewn.pack.cits; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.*; -import net.minecraft.entity.LivingEntity; -import net.minecraft.item.ItemStack; import net.minecraft.resource.ResourceType; import net.minecraft.util.Identifier; -import net.minecraft.world.World; -import shcm.shsupercm.fabric.citresewn.ActiveCITs; -import shcm.shsupercm.fabric.citresewn.CITResewn; import shcm.shsupercm.fabric.citresewn.ex.CITParseException; import shcm.shsupercm.fabric.citresewn.mixin.citenchantment.BufferBuilderStorageAccessor; import shcm.shsupercm.fabric.citresewn.mixin.citenchantment.RenderPhaseAccessor; @@ -20,6 +15,7 @@ import java.util.function.Supplier; public class CITEnchantment extends CIT { public static List<CITEnchantment> appliedContext = null; + public static boolean shouldApply = false; public final Identifier textureIdentifier; public final float speed, rotation, duration; @@ -162,7 +158,7 @@ public class CITEnchantment extends CIT { } public VertexConsumer tryApply(VertexConsumer base, VertexConsumerProvider provider) { - if (appliedContext == null) + if (!shouldApply || appliedContext == null) return null; VertexConsumer applied = VertexConsumers.union(appliedContext.stream() |