From da85ab83c6d2b509acec71b438a22738eecaebcd Mon Sep 17 00:00:00 2001 From: viciscat <51047087+viciscat@users.noreply.github.com> Date: Thu, 23 Oct 2025 16:48:48 +0200 Subject: [PATCH 1/8] 1.21.10 --- settings.json | 36 +------- .../firstperson/FirstPersonModelCore.java | 8 +- .../dev/tr7zw/firstperson/LogicHandler.java | 14 +++- .../access/LivingEntityRenderStateAccess.java | 27 ++++++ .../config/ConfigScreenProvider.java | 5 +- .../mixins/ArmorFeatureRendererMixin.java | 4 +- .../mixins/CustomHeadLayerMixin.java | 9 +- .../firstperson/mixins/ElytraLayerMixin.java | 12 +-- .../mixins/EntityRendererMixin.java | 30 +++++++ .../mixins/FeatureRendererMixin.java | 10 +-- .../mixins/FishingBobberRendererMixin.java | 7 +- .../mixins/HeldItemFeatureRendererMixin.java | 17 ++-- .../mixins/HeldItemRendererMixin.java | 15 ++-- .../mixins/HumanoidModelMixin.java | 43 ++++++++++ .../mixins/LivingEntityRenderStateMixin.java | 84 +++++++++++++++++++ .../mixins/LivingEntityRendererMixin.java | 14 +++- .../firstperson/mixins/ModelPartMixin.java | 4 +- .../tr7zw/firstperson/mixins/PlayerMixin.java | 4 +- .../mixins/PlayerRendererMixin.java | 57 ++++++++++--- .../mixins/RenderDispatcherMixin.java | 3 +- .../mixins/StuckInBodyLayerMixin.java | 12 +-- .../mixins/WorldRendererMixin.java | 22 ++--- .../modsupport/PlayerAnimatorSupport.java | 7 +- src/main/resources/firstperson.mixins.json | 53 ++++++------ versions/mainProject | 2 +- 25 files changed, 356 insertions(+), 143 deletions(-) create mode 100644 src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java create mode 100644 src/main/java/dev/tr7zw/firstperson/mixins/EntityRendererMixin.java create mode 100644 src/main/java/dev/tr7zw/firstperson/mixins/HumanoidModelMixin.java create mode 100644 src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin.java diff --git a/settings.json b/settings.json index aff456ef..cebd45c9 100644 --- a/settings.json +++ b/settings.json @@ -1,37 +1,7 @@ { "versions": [ - "1.16.5-fabric", - "1.18.2-forge", - "1.18.2-fabric", - "1.19.2-forge", - "1.19.2-fabric", - "1.19.4-forge", - "1.19.4-fabric", - "1.20.1-forge", - "1.20.1-fabric", - "1.20.2-forge", - "1.20.2-neoforge", - "1.20.2-fabric", - "1.20.4-forge", - "1.20.4-neoforge", - "1.20.4-fabric", - "1.20.6-forge", - "1.20.6-neoforge", - "1.20.6-fabric", - "1.21-forge", - "1.21-neoforge", - "1.21-fabric", - "1.21.3-forge", - "1.21.3-neoforge", - "1.21.3-fabric", - "1.21.4-forge", - "1.21.4-neoforge", - "1.21.4-fabric", - "1.21.5-forge", - "1.21.5-neoforge", - "1.21.5-fabric", - "1.21.6-forge", - "1.21.6-neoforge", - "1.21.6-fabric" + "1.21.10-forge", + "1.21.10-neoforge", + "1.21.10-fabric" ] } diff --git a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java index c08cfa01..93091c5c 100644 --- a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java +++ b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java @@ -13,7 +13,9 @@ import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; //#if MC >= 12106 -import net.minecraft.client.renderer.entity.state.PlayerRenderState; +//import net.minecraft.client.renderer.entity.state.PlayerRenderState; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.resources.ResourceLocation; //#endif public abstract class FirstPersonModelCore extends FirstPersonBase { @@ -22,7 +24,7 @@ public abstract class FirstPersonModelCore extends FirstPersonBase { private LogicHandler logicHandler; public static FirstPersonModelCore instance; private boolean isHeld = false; - private KeyMapping keyBinding = new KeyMapping("key.firstperson.toggle", 295, "firstperson.keybind"); + private KeyMapping keyBinding = new KeyMapping("key.firstperson.toggle", 295, new KeyMapping.Category(ResourceLocation.fromNamespaceAndPath("firstperson", "keybind"))); private boolean lateInit = true; @Deprecated public static boolean enabled = true; @@ -113,7 +115,7 @@ public void updatePlayerLayers() { PlayerRendererAccess access = null; //#if MC >= 12106 access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() - .getRenderer(new PlayerRenderState()); + .getRenderer(new AvatarRenderState()); //#else //$$if (Minecraft.getInstance().player != null) { //$$ access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() diff --git a/src/main/java/dev/tr7zw/firstperson/LogicHandler.java b/src/main/java/dev/tr7zw/firstperson/LogicHandler.java index 24c137c8..3a41ba30 100644 --- a/src/main/java/dev/tr7zw/firstperson/LogicHandler.java +++ b/src/main/java/dev/tr7zw/firstperson/LogicHandler.java @@ -16,6 +16,7 @@ import net.minecraft.client.CameraType; import net.minecraft.client.Minecraft; import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; @@ -99,8 +100,7 @@ public void updatePositionOffset(Entity entity, float delta) { double z = 0; AbstractClientPlayer player; double realYaw; - if ((entity != client.player) || (client.options.getCameraType() != CameraType.FIRST_PERSON) - || !fpm.isRenderingPlayer()) { + if ((entity != client.player) || (client.options.getCameraType() != CameraType.FIRST_PERSON)) { return; } player = (AbstractClientPlayer) entity; @@ -283,7 +283,15 @@ && isSwimming(player)) { * @return */ public boolean lookingDown() { - return dynamicHandsEnabled() && EntityUtil.getXRot(Minecraft.getInstance().player) > 30; + return lookingDown(client.player); + } + + public boolean lookingDown(LivingEntity livingEntity) { + return dynamicHandsEnabled() && EntityUtil.getXRot(livingEntity) > 30; + } + + public boolean lookingDown(LivingEntityRenderState state) { + return dynamicHandsEnabled() && state.xRot > 30; } public void addAutoVanillaHandsItem(Item item) { diff --git a/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java b/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java new file mode 100644 index 00000000..48c1525a --- /dev/null +++ b/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java @@ -0,0 +1,27 @@ +package dev.tr7zw.firstperson.access; + +import net.minecraft.world.phys.Vec3; + +public interface LivingEntityRenderStateAccess { + + void setIsCameraEntity(boolean value); + boolean isCameraEntity(); + + default void setHideArms(boolean value) { + setHideLeftArm(value); + setHideRightArm(value); + } + void setHideRightArm(boolean value); + void setHideLeftArm(boolean value); + boolean hideLeftArm(); + boolean hideRightArm(); + + void setHideBody(boolean value); + boolean hideBody(); + + void setArmOffset(float offset); + float getArmOffset(); + + void setRenderOffset(Vec3 offset); + Vec3 getRenderOffset(); +} diff --git a/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java b/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java index cdb01ff7..6c1b6ffd 100644 --- a/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java +++ b/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java @@ -24,8 +24,9 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.entity.layers.RenderLayer; //#if MC >= 12106 -import net.minecraft.client.renderer.entity.state.PlayerRenderState; +//import net.minecraft.client.renderer.entity.state.PlayerRenderState; //#endif +import net.minecraft.client.renderer.entity.state.AvatarRenderState; import net.minecraft.network.chat.CommonComponents; import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.Item; @@ -152,7 +153,7 @@ public CustomConfigScreen(Screen previous) { PlayerRendererAccess access = null; //#if MC >= 12106 access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() - .getRenderer(new PlayerRenderState()); + .getRenderer(new AvatarRenderState()); //#else //$$if (Minecraft.getInstance().player != null) { //$$ access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java index 6c0c5072..4ddeaa02 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java @@ -37,7 +37,7 @@ protected ArmorFeatureRendererMixin(RenderLayerParent context) { super(context); } - //#if MC >= 12103 + /*//#if MC >= 12103 @Inject(method = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;shouldRender(Lnet/minecraft/world/item/equipment/Equippable;Lnet/minecraft/world/entity/EquipmentSlot;)Z", at = @At("HEAD"), cancellable = true) private static void shouldRender(Equippable equippable, EquipmentSlot equipmentSlot, CallbackInfoReturnable ci) { @@ -112,6 +112,6 @@ private void renderArmor(PoseStack matrices, MultiBufferSource vertexConsumers, ((ModelPartBase) (Object) bipedEntityModel.leftArm).showAgain(); ((ModelPartBase) (Object) bipedEntityModel.rightArm).showAgain(); } - } + }*/ } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java index ccf95321..1d408dcc 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java @@ -1,5 +1,7 @@ package dev.tr7zw.firstperson.mixins; +import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; +import net.minecraft.client.renderer.SubmitNodeCollector; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -20,15 +22,14 @@ @Mixin(value = CustomHeadLayer.class, priority = 100) public class CustomHeadLayerMixin { - @Inject(method = "render", at = @At("HEAD"), cancellable = true) + @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;FF)V", at = @At("HEAD"), cancellable = true) //#if MC >= 12103 - public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, - LivingEntityRenderState livingEntityRenderState, float f, float g, CallbackInfo info) { + public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, LivingEntityRenderState livingEntityRenderState, float f, float g, CallbackInfo info) { //#else //$$public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntity livingEntity, //$$ float f, float g, float h, float j, float k, float l, CallbackInfo info) { //#endif - if (FirstPersonModelCore.instance.isRenderingPlayer()) { + if (((LivingEntityRenderStateAccess) livingEntityRenderState).isCameraEntity()) { info.cancel(); } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java index 1fbcb8a4..e606cfee 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java @@ -1,5 +1,7 @@ package dev.tr7zw.firstperson.mixins; +import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; +import net.minecraft.client.renderer.SubmitNodeCollector; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -30,17 +32,15 @@ public class ElytraLayerMixin { //#if MC >= 12103 - @Inject(method = "render", at = @At("HEAD"), cancellable = true) - public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, - HumanoidRenderState humanoidRenderState, float f, float g, CallbackInfo ci) { + @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/HumanoidRenderState;FF)V", at = @At("HEAD"), cancellable = true) + public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, HumanoidRenderState humanoidRenderState, float f, float g, CallbackInfo ci) { //#else //$$ @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) //$$ public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, T livingEntity, float f, //$$ float g, float h, float j, float k, float l, CallbackInfo ci) { //#endif - if (FirstPersonModelCore.instance.isRenderingPlayer() - && Minecraft.getInstance().getCameraEntity() instanceof AbstractClientPlayer player - && FirstPersonModelCore.instance.getLogicHandler().isSwimming(player)) { + if (((LivingEntityRenderStateAccess) humanoidRenderState).isCameraEntity() && humanoidRenderState.isVisuallySwimming + ) { ci.cancel(); } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/EntityRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/EntityRendererMixin.java new file mode 100644 index 00000000..22849f42 --- /dev/null +++ b/src/main/java/dev/tr7zw/firstperson/mixins/EntityRendererMixin.java @@ -0,0 +1,30 @@ +package dev.tr7zw.firstperson.mixins; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.state.EntityRenderState; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(EntityRenderer.class) +public class EntityRendererMixin { + + @WrapOperation(method = "finalizeRenderState", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/EntityRenderer;extractShadow(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;Lnet/minecraft/client/Minecraft;Lnet/minecraft/world/level/Level;)V")) + private void offsetRendering(EntityRenderer instance, EntityRenderState entityRenderState, Minecraft mc, Level level, Operation original) { + if (entityRenderState instanceof LivingEntityRenderStateAccess access && access.isCameraEntity()) { + Vec3 vec3 = access.getRenderOffset(); + entityRenderState.x -= vec3.x; + entityRenderState.z -= vec3.z; + original.call(instance, entityRenderState, mc, level); + entityRenderState.x += vec3.x; + entityRenderState.z += vec3.z; + } else { + original.call(instance, entityRenderState, mc, level); + } + } +} diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java index 8a364672..7e2812e2 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java @@ -1,5 +1,7 @@ package dev.tr7zw.firstperson.mixins; +import net.minecraft.client.model.Model; +import net.minecraft.client.renderer.SubmitNodeCollector; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -27,11 +29,9 @@ @Mixin(RenderLayer.class) @NoArgsConstructor(access = AccessLevel.PRIVATE) public abstract class FeatureRendererMixin { - @Inject(method = "renderColoredCutoutModel", at = @At("HEAD"), cancellable = true) + /*@Inject(method = "renderColoredCutoutModel", at = @At("HEAD"), cancellable = true) //#if MC >= 12103 - private static void renderColoredCutoutModel(EntityModel model, ResourceLocation resourceLocation, - PoseStack poseStack, MultiBufferSource multiBufferSource, int i, - LivingEntityRenderState livingEntityRenderState, int j, CallbackInfo ci) { + private static void renderColoredCutoutModel(Model model, ResourceLocation resourceLocation, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, LivingEntityRenderState livingEntityRenderState, int j, int k, CallbackInfo ci) { //#elseif MC >= 12100 //$$private static void removeHead(EntityModel model, ResourceLocation texture, //$$ PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, int color, CallbackInfo ci) { @@ -75,6 +75,6 @@ private static void removeReturn(EntityModel model, ResourceLocation resource //$$ } //#endif } - } + }*/ } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java index 85b22312..81779a2a 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java @@ -1,5 +1,7 @@ package dev.tr7zw.firstperson.mixins; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.state.CameraRenderState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -43,10 +45,9 @@ private CameraType redirect(Options gameOptions) { return doCorrect() ? CameraType.THIRD_PERSON_BACK : gameOptions.getCameraType(); } - @Inject(method = "render", at = @At("HEAD")) + @Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/FishingHookRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At("HEAD")) //#if MC >= 12103 - public void render(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, - MultiBufferSource multiBufferSource, int i, CallbackInfo info) { + public void render(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState cameraRenderState, CallbackInfo ci) { //#else //$$ private void calcOffset(FishingHook fishingBobberEntity, float f, float g, PoseStack matrixStack, //$$ MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java index 8cfee8f4..89922f37 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java @@ -1,5 +1,7 @@ package dev.tr7zw.firstperson.mixins; +import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; +import net.minecraft.client.renderer.SubmitNodeCollector; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -44,11 +46,9 @@ @Mixin(ItemInHandLayer.class) public class HeldItemFeatureRendererMixin { - @Inject(at = @At("HEAD"), method = "renderArmWithItem", cancellable = true) + @Inject(at = @At("HEAD"), method = "submitArmWithItem", cancellable = true) //#if MC >= 12104 - private void renderArmWithItem(ArmedEntityRenderState livingEntityRenderState, - ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, - MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { + private void renderArmWithItem(ArmedEntityRenderState armedEntityRenderState, ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, CallbackInfo ci) { //#elseif MC >= 12103 //$$private void renderArmWithItem(LivingEntityRenderState livingEntityRenderState, BakedModel bakedModel, //$$ ItemStack itemStack, ItemDisplayContext itemDisplayContext, HumanoidArm humanoidArm, PoseStack poseStack, @@ -60,11 +60,10 @@ private void renderArmWithItem(ArmedEntityRenderState livingEntityRenderState, //$$ private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, TransformType transformType, //$$ HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { //#endif - if (FirstPersonModelCore.instance.isRenderingPlayer()) { - if (FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(Minecraft.getInstance().player) - && !FirstPersonModelCore.instance.getLogicHandler().lookingDown()) { - ci.cancel(); - } + LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) armedEntityRenderState; + if (access.hideLeftArm() && access.hideRightArm() + && !FirstPersonModelCore.instance.getLogicHandler().lookingDown(armedEntityRenderState)) { + ci.cancel(); } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java index 59b09307..6620825b 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java @@ -1,5 +1,6 @@ package dev.tr7zw.firstperson.mixins; +import net.minecraft.client.renderer.SubmitNodeCollector; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -40,10 +41,12 @@ public abstract class HeldItemRendererMixin { @Shadow private ItemStack offHandItem; + @Shadow + protected abstract void renderPlayerArm(PoseStack arg, SubmitNodeCollector arg2, int i, float g, float h, HumanoidArm arg3); + @Inject(at = @At("HEAD"), method = "renderArmWithItem", cancellable = true) - public void renderFirstPersonItem(AbstractClientPlayer player, float tickDelta, float pitch, InteractionHand hand, - float swingProgress, ItemStack item, float equipProgress, PoseStack matrices, - MultiBufferSource vertexConsumers, int light, CallbackInfo info) { + public void renderFirstPersonItem(AbstractClientPlayer player, float deltaTick, float pitch, InteractionHand hand, float swingProgress, + ItemStack item, float equipProgress, PoseStack matrices, SubmitNodeCollector submitNodeCollector, int light, CallbackInfo info) { if (!FirstPersonModelCore.instance.isEnabled()) { return; @@ -78,15 +81,11 @@ public void renderFirstPersonItem(AbstractClientPlayer player, float tickDelta, HumanoidArm arm = bl ? player.getMainArm() : player.getMainArm().getOpposite(); matrices.pushPose(); if (item.isEmpty() && !bl && !player.isInvisible()) { - renderPlayerArm(matrices, vertexConsumers, light, equipProgress, swingProgress, arm); + renderPlayerArm(matrices, submitNodeCollector, light, equipProgress, swingProgress, arm); } matrices.popPose(); } - @Shadow - public abstract void renderPlayerArm(PoseStack matrices, MultiBufferSource vertexConsumers, int light, - float equipProgress, float swingProgress, HumanoidArm arm); - /* * public boolean skip() {//TODO NO NEED? return * !FirstPersonModelCore.instance.isEnabled() || diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HumanoidModelMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HumanoidModelMixin.java new file mode 100644 index 00000000..0be4e7e9 --- /dev/null +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HumanoidModelMixin.java @@ -0,0 +1,43 @@ +package dev.tr7zw.firstperson.mixins; + +import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.renderer.entity.state.HumanoidRenderState; +import org.spongepowered.asm.mixin.Final; +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(HumanoidModel.class) +public class HumanoidModelMixin { + + @Shadow + @Final + public ModelPart leftArm; + + @Shadow + @Final + public ModelPart rightArm; + + @Shadow + @Final + public ModelPart head; + + @Shadow + @Final + public ModelPart body; + + @Inject(method = "setupAnim(Lnet/minecraft/client/renderer/entity/state/HumanoidRenderState;)V", at = @At("TAIL")) + private void setupAnim(HumanoidRenderState renderState, CallbackInfo ci) { + LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) renderState; + head.visible = !access.isCameraEntity(); + leftArm.visible = !access.hideLeftArm(); + leftArm.xRot += access.getArmOffset(); + rightArm.visible = !access.hideRightArm(); + rightArm.xRot += access.getArmOffset(); + body.visible = !access.hideBody(); + } +} diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin.java new file mode 100644 index 00000000..4689d807 --- /dev/null +++ b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin.java @@ -0,0 +1,84 @@ +package dev.tr7zw.firstperson.mixins; + +import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(LivingEntityRenderState.class) +public class LivingEntityRenderStateMixin implements LivingEntityRenderStateAccess { + + @Unique + private boolean cameraEntity; + @Unique + private boolean hideLeftArm; + @Unique + private boolean hideRightArm; + @Unique + private boolean hideBody; + @Unique + private float armOffset; + @Unique + private Vec3 renderOffset = Vec3.ZERO; + + @Override + public void setIsCameraEntity(boolean value) { + this.cameraEntity = value; + } + + @Override + public boolean isCameraEntity() { + return this.cameraEntity; + } + + @Override + public void setHideLeftArm(boolean value) { + this.hideLeftArm = value; + } + + @Override + public boolean hideLeftArm() { + return this.hideLeftArm; + } + + @Override + public void setHideRightArm(boolean value) { + this.hideRightArm = value; + } + + @Override + public boolean hideRightArm() { + return this.hideRightArm; + } + + @Override + public void setHideBody(boolean value) { + this.hideBody = value; + } + + @Override + public boolean hideBody() { + return this.hideBody; + } + + @Override + public void setArmOffset(float offset) { + this.armOffset = offset; + } + + @Override + public float getArmOffset() { + return this.armOffset; + } + + @Override + public void setRenderOffset(Vec3 offset) { + this.renderOffset = offset; + } + + @Override + public Vec3 getRenderOffset() { + return renderOffset; + } +} diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java index d0618d55..413eba3a 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java @@ -1,5 +1,6 @@ package dev.tr7zw.firstperson.mixins; +import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; import net.minecraft.world.item.Items; @@ -39,7 +40,7 @@ import net.minecraft.world.entity.player.Player; //#if MC >= 12103 import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; -import net.minecraft.client.renderer.entity.state.PlayerRenderState; +//import net.minecraft.client.renderer.entity.state.PlayerRenderState; //#endif //#if MC < 12104 //$$import net.minecraft.client.model.VillagerHeadModel; @@ -50,7 +51,7 @@ public abstract class LivingEntityRendererMixin { private static List revert = new ArrayList(); - // pull all registers to try to get rid of the head or other bodyparts + /*// pull all registers to try to get rid of the head or other bodyparts //#if MC >= 12103 @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/EntityModel;setupAnim(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;)V", shift = Shift.AFTER), cancellable = true) public void render(LivingEntityRenderState livingEntityRenderState, PoseStack matrixStack, @@ -190,9 +191,14 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma matrixStack.popPose(); info.cancel(); } + }*/ + + @Inject(method = "extractRenderState(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;F)V", at = @At("HEAD")) + private void checkIfCameraEntity(LivingEntity livingEntity, LivingEntityRenderState livingEntityRenderState, float f, CallbackInfo ci) { + ((LivingEntityRenderStateAccess) livingEntityRenderState).setIsCameraEntity(FirstPersonModelCore.instance.isRenderingPlayer()); } - @Inject(method = "render", at = @At("RETURN")) + /*@Inject(method = "render", at = @At("RETURN")) //#if MC >= 12103 public void renderEnd(LivingEntityRenderState livingEntityRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo info) { @@ -207,7 +213,7 @@ public void renderEnd(LivingEntityRenderState livingEntityRenderState, PoseStack revert.clear(); } FirstPersonModelCore.instance.setRenderingPlayer(false); - } + }*/ @Shadow public abstract EntityModel getModel(); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/ModelPartMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/ModelPartMixin.java index be99cd0d..35f4fc23 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/ModelPartMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/ModelPartMixin.java @@ -47,13 +47,13 @@ public void setPivot(float x, float y, float z, CallbackInfo info) { } } - @Inject(method = "copyFrom", at = @At("RETURN")) + /*@Inject(method = "copyFrom", at = @At("RETURN")) public void copyTransform(ModelPart modelPart, CallbackInfo info) { if (moved) { zCopy = z; z = 5000; } - } + }*/ @Override public boolean isHidden() { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java index 6e4b497e..f2b76d16 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java @@ -21,7 +21,7 @@ //#endif public class PlayerMixin { - @Inject(method = "getItemBySlot", at = @At("HEAD"), cancellable = true) + /*@Inject(method = "getItemBySlot", at = @At("HEAD"), cancellable = true) public void getItemBySlot(EquipmentSlot slot, CallbackInfoReturnable ci) { if (FirstPersonModelCore.instance.isRenderingPlayer() && Minecraft.getInstance().isSameThread() && (Object) this instanceof Player player) { @@ -37,6 +37,6 @@ public void getItemBySlot(EquipmentSlot slot, CallbackInfoReturnable return; } } - } + }*/ } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java index 7135b719..d3a7eabf 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java @@ -1,12 +1,22 @@ package dev.tr7zw.firstperson.mixins; import java.util.ArrayList; -import java.util.Collection; import java.util.List; +import dev.tr7zw.firstperson.InventoryUtil; +import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; +import dev.tr7zw.firstperson.versionless.mixinbase.ModelPartBase; +import dev.tr7zw.transition.mc.EntityUtil; +import net.minecraft.client.renderer.entity.player.AvatarRenderer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.client.renderer.entity.state.EntityRenderState; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Avatar; +import net.minecraft.world.item.Items; 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.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import dev.tr7zw.firstperson.FirstPersonModelCore; @@ -14,19 +24,17 @@ import dev.tr7zw.firstperson.api.FirstPersonAPI; import dev.tr7zw.firstperson.api.PlayerOffsetHandler; import net.minecraft.client.Minecraft; -import net.minecraft.client.model.EntityModel; import net.minecraft.client.model.PlayerModel; import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.entity.LivingEntityRenderer; import net.minecraft.client.renderer.entity.layers.RenderLayer; -import net.minecraft.client.renderer.entity.player.PlayerRenderer; +//import net.minecraft.client.renderer.entity.player.PlayerRenderer; import net.minecraft.world.phys.Vec3; //#if MC >= 11802 import net.minecraft.client.renderer.entity.EntityRendererProvider.Context; //#endif //#if MC >= 12103 -import net.minecraft.client.renderer.entity.state.PlayerRenderState; +//import net.minecraft.client.renderer.entity.state.PlayerRenderState; //#endif /** @@ -35,7 +43,7 @@ * @author tr7zw * */ -@Mixin(value = PlayerRenderer.class, priority = 500) +@Mixin(value = AvatarRenderer.class, priority = 500) public abstract class PlayerRendererMixin extends LivingEntityRenderer implements PlayerRendererAccess { //#if MC >= 11802 @@ -53,16 +61,16 @@ public PlayerRendererMixin(Context context, PlayerModel model, float shadowRadiu @Inject(method = "getRenderOffset", at = @At("RETURN"), cancellable = true) //#if MC >= 12103 - public void getRenderOffset(PlayerRenderState playerRenderState, CallbackInfoReturnable ci) { + public void getRenderOffset(AvatarRenderState playerRenderState, CallbackInfoReturnable ci) { AbstractClientPlayer entity = Minecraft.getInstance().player; float delta = Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(false); //#else //$$public void getRenderOffset(AbstractClientPlayer entity, float delta, CallbackInfoReturnable ci) { //#endif - if (entity == fpmMcInstance.cameraEntity && FirstPersonModelCore.instance.isRenderingPlayer()) { - FirstPersonModelCore.instance.getLogicHandler().updatePositionOffset(entity, delta); - - Vec3 offset = ci.getReturnValue().add(FirstPersonModelCore.instance.getLogicHandler().getOffset()); + LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) playerRenderState; + if (access.isCameraEntity()) { + Vec3 offset = ci.getReturnValue().add(access.getRenderOffset()); + // FIXME use render state instead of entity for (PlayerOffsetHandler handler : FirstPersonAPI.getPlayerOffsetHandlers()) { offset = handler.applyOffset(entity, delta, ci.getReturnValue(), offset); } @@ -71,6 +79,33 @@ public void getRenderOffset(PlayerRenderState playerRenderState, CallbackInfoRet } } + @Inject(method = "extractRenderState(Lnet/minecraft/world/entity/Avatar;Lnet/minecraft/client/renderer/entity/state/AvatarRenderState;F)V", at = @At("TAIL")) + public void extractRenderState(Avatar avatar, AvatarRenderState avatarRenderState, float delta, CallbackInfo ci) { + LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) avatarRenderState; + if (!access.isCameraEntity()) return; + if (FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(avatar)) { + access.setHideArms(true); + } else if (FirstPersonModelCore.instance.getLogicHandler().dynamicHandsEnabled()) { + access.setArmOffset(Mth.clamp(-EntityUtil.getXRot(avatar) / 20 + 2, -0.0f, 0.7f)); + if (!FirstPersonModelCore.instance.getLogicHandler().lookingDown(avatar)) {// TODO DYNAMIC HAND + if (!avatar.getOffhandItem().isEmpty() + || avatar.getMainHandItem().getItem().equals(Items.FILLED_MAP)) { + access.setHideLeftArm(true); + } + if (!avatar.getMainHandItem().isEmpty()) { + access.setHideRightArm(true); + } + } + } + if (avatar.isSwimming()) { + access.setHideBody(true); + avatarRenderState.showCape = false; + } + if (FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(avatar, avatar.getMainHandItem(), avatar.getOffhandItem())) access.setHideArms(true); + FirstPersonModelCore.instance.getLogicHandler().updatePositionOffset(avatar, delta); + access.setRenderOffset(FirstPersonModelCore.instance.getLogicHandler().getOffset()); + } + @Override public List getRenderLayers() { List layers = new ArrayList<>(this.layers); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java index aed88e51..e5d653bf 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java @@ -43,7 +43,7 @@ @NoArgsConstructor(access = AccessLevel.PRIVATE) public abstract class RenderDispatcherMixin { - private static Minecraft fpmMcInstance = Minecraft.getInstance(); + /*private static Minecraft fpmMcInstance = Minecraft.getInstance(); //#if MC >= 12103 private static double tmpX; @@ -138,5 +138,6 @@ private static void renderHitbox(PoseStack poseStack, VertexConsumer buffer, //$$ } //$$} //#endif +*/ } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java index 80b27c78..bc8ecc48 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java @@ -1,5 +1,8 @@ package dev.tr7zw.firstperson.mixins; +import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -12,7 +15,7 @@ import net.minecraft.client.renderer.entity.layers.StuckInBodyLayer; import net.minecraft.world.entity.LivingEntity; //#if MC >= 12103 -import net.minecraft.client.renderer.entity.state.PlayerRenderState; +//import net.minecraft.client.renderer.entity.state.PlayerRenderState; //#endif /** @@ -22,15 +25,14 @@ public class StuckInBodyLayerMixin { //#if MC >= 12103 - @Inject(method = "render", at = @At("HEAD"), cancellable = true) - public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, - PlayerRenderState playerRenderState, float f, float g, CallbackInfo ci) { + @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/AvatarRenderState;FF)V", at = @At("HEAD"), cancellable = true) + public void disableStuckFeatureLayer(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, AvatarRenderState avatarRenderState, float f, float g, CallbackInfo ci) { //#else //$$@Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) //$$public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, //$$ T livingEntity, float f, float g, float h, float j, float k, float l, CallbackInfo ci) { //#endif - if (FirstPersonModelCore.instance.isRenderingPlayer() + if (((LivingEntityRenderStateAccess) avatarRenderState).isCameraEntity() && !FirstPersonModelCore.instance.getConfig().renderStuckFeatures) { ci.cancel(); } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java index 2897d68b..c01f85f7 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java @@ -1,5 +1,8 @@ package dev.tr7zw.firstperson.mixins; +import net.minecraft.client.renderer.culling.Frustum; +import net.minecraft.client.renderer.entity.state.EntityRenderState; +import net.minecraft.client.renderer.state.LevelRenderState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -39,7 +42,10 @@ * */ @Mixin(LevelRenderer.class) -public class WorldRendererMixin { +public abstract class WorldRendererMixin { + + @Shadow + protected abstract EntityRenderState extractEntity(Entity arg, float f); @Shadow private RenderBuffers renderBuffers; @@ -59,9 +65,8 @@ public class WorldRendererMixin { //$$ LightTexture lightTexture, Matrix4f matrix4f, Matrix4f matrix4f2, CallbackInfo info) { //$$ PoseStack matrices = new PoseStack(); //#else - @Inject(method = "renderEntities", at = @At(value = "HEAD")) - private void renderEntities(PoseStack poseStack, BufferSource bufferSource, Camera camera, - DeltaTracker deltaTracker, List list, CallbackInfo ci) { + @Inject(method = "extractVisibleEntities", at = @At(value = "HEAD")) + private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTracker, LevelRenderState levelRenderState, CallbackInfo ci) { PoseStack matrices = new PoseStack(); //#endif if (camera.isDetached() || !FirstPersonModelCore.instance.getLogicHandler().shouldApplyThirdPerson(false)) { @@ -74,17 +79,12 @@ private void renderEntities(PoseStack poseStack, BufferSource bufferSource, Came //#if MC < 12100 //$$ renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), tickDelta, matrices, immediate); //#else - renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), - deltaTracker.getGameTimeDeltaPartialTick(false), matrices, immediate); + levelRenderState.entityRenderStates.add(extractEntity(camera.getEntity(), deltaTracker.getGameTimeDeltaPartialTick(false))); //#endif FirstPersonModelCore.instance.setRenderingPlayer(false); FirstPersonModelCore.instance.setRenderingPlayerPost(false); - } - @Shadow - private void renderEntity(Entity entity, double cameraX, double cameraY, double cameraZ, float tickDelta, - PoseStack matrices, MultiBufferSource vertexConsumers) { - // shadow + } } diff --git a/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java b/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java index 03435625..4b128a81 100644 --- a/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java +++ b/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java @@ -24,7 +24,8 @@ public class PlayerAnimatorSupport implements PlayerOffsetHandler { @Override public Vec3 applyOffset(AbstractClientPlayer entity, float delta, Vec3 original, Vec3 current) { - if (entity instanceof IAnimatedPlayer player && player.playerAnimator_getAnimation().isActive()) { + // FIXME for some reason I don't have PartKey + /*if (entity instanceof IAnimatedPlayer player && player.playerAnimator_getAnimation().isActive()) { AnimationProcessor anim = player.playerAnimator_getAnimation(); anim.setTickDelta(delta); // Probably the tick is done, set tick delta. @@ -148,8 +149,8 @@ public Vec3 applyOffset(AbstractClientPlayer entity, float delta, Vec3 original, // You may use the Y offset too. new Vector, since it already cancels out all // deltas - return current.add(offset.x(), /* offset.y() */ 0, offset.z()); - } + return current.add(offset.x(), /* offset.y() *//* 0, offset.z()); + }*/ return current; } diff --git a/src/main/resources/firstperson.mixins.json b/src/main/resources/firstperson.mixins.json index 31ed4d5c..b172138d 100644 --- a/src/main/resources/firstperson.mixins.json +++ b/src/main/resources/firstperson.mixins.json @@ -1,27 +1,30 @@ { - "required": true, - "package": "dev.tr7zw.firstperson.mixins", - "compatibilityLevel": "JAVA_8", - "mixins": [], - "client": [ - "HeldItemRendererMixin", - "WorldRendererMixin", - "FishingBobberRendererMixin", - "RenderDispatcherMixin", - "HeldItemFeatureRendererMixin", - "ModelPartMixin", - "LivingEntityRendererMixin", - "FeatureRendererMixin", - "ArmorFeatureRendererMixin", - "StuckInBodyLayerMixin", - "ElytraLayerMixin", - "PlayerRendererMixin", - "CustomHeadLayerMixin", - "PlayerModelMixin", - "PlayerMixin", - "AgeableListModelMixin" - ], - "injectors": { - "defaultRequire": 1 - } + "required": true, + "package": "dev.tr7zw.firstperson.mixins", + "compatibilityLevel": "JAVA_8", + "mixins": [], + "client": [ + "AgeableListModelMixin", + "ArmorFeatureRendererMixin", + "CustomHeadLayerMixin", + "ElytraLayerMixin", + "EntityRendererMixin", + "FeatureRendererMixin", + "FishingBobberRendererMixin", + "HeldItemFeatureRendererMixin", + "HeldItemRendererMixin", + "HumanoidModelMixin", + "LivingEntityRendererMixin", + "LivingEntityRenderStateMixin", + "ModelPartMixin", + "PlayerMixin", + "PlayerModelMixin", + "PlayerRendererMixin", + "RenderDispatcherMixin", + "StuckInBodyLayerMixin", + "WorldRendererMixin" + ], + "injectors": { + "defaultRequire": 1 + } } diff --git a/versions/mainProject b/versions/mainProject index 2a40342d..5138a900 100644 --- a/versions/mainProject +++ b/versions/mainProject @@ -1 +1 @@ -1.21.6-fabric \ No newline at end of file +1.21.10-fabric \ No newline at end of file From 6211720571c4c0ced919d5dc415265ac3d74a549 Mon Sep 17 00:00:00 2001 From: tr7zw Date: Fri, 31 Oct 2025 19:07:19 +0100 Subject: [PATCH 2/8] Convert to stonecutter --- gradle-compose.yml | 2 +- .../firstperson/FirstPersonBootstrap.java | 84 +++++---- .../firstperson/FirstPersonModelCore.java | 45 +++-- .../firstperson/FirstPersonModelMod.java | 15 +- .../dev/tr7zw/firstperson/InventoryUtil.java | 50 +++-- .../dev/tr7zw/firstperson/LogicHandler.java | 5 +- .../firstperson/access/PlayerModelAccess.java | 14 +- .../config/ConfigScreenProvider.java | 21 ++- .../firstperson/fabric/FPModMenuProvider.java | 5 +- .../forge/RenderHandEventListener.java | 79 ++++---- .../mixins/AgeableListModelMixin.java | 43 +++-- .../mixins/ArmorFeatureRendererMixin.java | 12 +- .../mixins/CustomHeadLayerMixin.java | 22 ++- .../firstperson/mixins/ElytraLayerMixin.java | 34 ++-- .../mixins/FeatureRendererMixin.java | 76 ++++---- .../mixins/FishingBobberRendererMixin.java | 78 ++++---- .../mixins/HeldItemFeatureRendererMixin.java | 78 ++++---- .../mixins/HeldItemRendererMixin.java | 10 +- .../mixins/LivingEntityRendererMixin.java | 79 ++++---- .../tr7zw/firstperson/mixins/PlayerMixin.java | 10 +- .../firstperson/mixins/PlayerModelMixin.java | 32 ++-- .../mixins/PlayerRendererMixin.java | 34 ++-- .../mixins/RenderDispatcherMixin.java | 154 ++++++++------- .../mixins/StuckInBodyLayerMixin.java | 19 +- .../mixins/WorldRendererMixin.java | 66 ++++--- .../modsupport/FreecamSupport.java | 2 +- .../modsupport/PlayerAnimatorSupport.java | 178 +++++++++--------- src/test/java/dev/tr7zw/tests/MixinTests.java | 5 +- 28 files changed, 695 insertions(+), 557 deletions(-) diff --git a/gradle-compose.yml b/gradle-compose.yml index a567398e..0f03bdd0 100644 --- a/gradle-compose.yml +++ b/gradle-compose.yml @@ -1,5 +1,5 @@ version: '0.0.2' -source: "https://github.com/tr7zw/ProcessedModTemplate/tree/master" +source: "https://github.com/tr7zw/ProcessedModTemplate/tree/stonecutter" replacements: name: "FirstPerson" id: "firstperson" diff --git a/src/main/java/dev/tr7zw/firstperson/FirstPersonBootstrap.java b/src/main/java/dev/tr7zw/firstperson/FirstPersonBootstrap.java index 0261273d..56a6814e 100644 --- a/src/main/java/dev/tr7zw/firstperson/FirstPersonBootstrap.java +++ b/src/main/java/dev/tr7zw/firstperson/FirstPersonBootstrap.java @@ -1,41 +1,43 @@ -//#if FORGE -//$$package dev.tr7zw.firstperson; -//$$ -//$$import net.minecraftforge.api.distmarker.Dist; -//$$import net.minecraftforge.fml.DistExecutor; -//$$import net.minecraftforge.fml.common.Mod; -//$$import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -//$$import dev.tr7zw.transition.loader.ModLoaderUtil; -//$$ -//$$@Mod("firstperson") -//$$public class FirstPersonBootstrap { -//$$ -//$$ public FirstPersonBootstrap(FMLJavaModLoadingContext context) { -//$$ ModLoaderUtil.setModLoadingContext(context); -//$$ DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { -//$$ new FirstPersonModelMod().sharedSetup(); -//$$ }); -//$$ } -//$$ public FirstPersonBootstrap() { -//$$ this(FMLJavaModLoadingContext.get()); -//$$ } -//$$ -//$$} -//#elseif NEOFORGE -//$$package dev.tr7zw.firstperson; -//$$ -//$$import net.neoforged.api.distmarker.Dist; -//$$import net.neoforged.fml.loading.FMLEnvironment; -//$$import net.neoforged.fml.common.Mod; -//$$ -//$$@Mod("firstperson") -//$$public class FirstPersonBootstrap { -//$$ -//$$ public FirstPersonBootstrap() { -//$$ if(FMLEnvironment.dist == Dist.CLIENT) { -//$$ dev.tr7zw.transition.loader.ModLoaderEventUtil.registerClientSetupListener(() -> new FirstPersonModelMod().sharedSetup()); -//$$ } -//$$ } -//$$ -//$$} -//#endif \ No newline at end of file +//? if forge { + +// package dev.tr7zw.firstperson; +// +// import net.minecraftforge.api.distmarker.Dist; +// import net.minecraftforge.fml.DistExecutor; +// import net.minecraftforge.fml.common.Mod; +// import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +// import dev.tr7zw.transition.loader.ModLoaderUtil; +// +// @Mod("firstperson") +// public class FirstPersonBootstrap { +// +// public FirstPersonBootstrap(FMLJavaModLoadingContext context) { +// ModLoaderUtil.setModLoadingContext(context); +// DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { +// new FirstPersonModelMod().sharedSetup(); +// }); +// } +// public FirstPersonBootstrap() { +// this(FMLJavaModLoadingContext.get()); +// } +// +// } +//? } else if neoforge { + +// package dev.tr7zw.firstperson; +// +// import net.neoforged.api.distmarker.Dist; +// import net.neoforged.fml.loading.FMLEnvironment; +// import net.neoforged.fml.common.Mod; +// +// @Mod("firstperson") +// public class FirstPersonBootstrap { +// +// public FirstPersonBootstrap() { +// if(FMLEnvironment.dist == Dist.CLIENT) { +// dev.tr7zw.transition.loader.ModLoaderEventUtil.registerClientSetupListener(() -> new FirstPersonModelMod().sharedSetup()); +// } +// } +// +// } +//? } diff --git a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java index 93091c5c..b7749e91 100644 --- a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java +++ b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java @@ -12,11 +12,12 @@ import net.minecraft.client.CameraType; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; -//#if MC >= 12106 +//? if >= 1.21.6 { + //import net.minecraft.client.renderer.entity.state.PlayerRenderState; import net.minecraft.client.renderer.entity.state.AvatarRenderState; import net.minecraft.resources.ResourceLocation; -//#endif +//? } public abstract class FirstPersonModelCore extends FirstPersonBase { @@ -47,16 +48,20 @@ public void sharedSetup() { ModLoaderUtil.disableDisplayTest(); ModLoaderUtil.registerConfigScreen(ConfigScreenProvider::createConfigScreen); - //#if NEOFORGE - //$$ ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); - //#endif - //#if FORGE - //#if MC >= 12106 - //$$ net.minecraftforge.client.event.RenderHandEvent.BUS.addListener(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); - //#else - //$$ ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); - //#endif - //#endif +//? if neoforge { + + // ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); +//? } +//? if forge { + +// //? if >= 1.21.6 { + + // // net.minecraftforge.client.event.RenderHandEvent.BUS.addListener(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); +// //? } else { + + // // ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); +// //? } +//? } ModSupportLoader.loadSupport(); } @@ -113,15 +118,17 @@ public void setEnabled(boolean enabled) { public void updatePlayerLayers() { PlayerRendererAccess access = null; - //#if MC >= 12106 +//? if >= 1.21.6 { + access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() .getRenderer(new AvatarRenderState()); - //#else - //$$if (Minecraft.getInstance().player != null) { - //$$ access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() - //$$ .getRenderer(Minecraft.getInstance().player); - //$$} - //#endif +//? } else { + + // if (Minecraft.getInstance().player != null) { + // access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() + // .getRenderer(Minecraft.getInstance().player); + // } +//? } if (access != null) { access.updatePartsList(lastCameraType != CameraType.FIRST_PERSON); } diff --git a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java index a6fdfc2e..fa0b53ac 100644 --- a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java +++ b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java @@ -1,18 +1,21 @@ package dev.tr7zw.firstperson; -//#if FABRIC +//? if fabric { + import net.fabricmc.api.ClientModInitializer; -//#endif +//? } public class FirstPersonModelMod extends FirstPersonModelCore - //#if FABRIC +//? if fabric { + implements ClientModInitializer -//#endif +//? } { - //#if FABRIC +//? if fabric { + @Override - //#endif +//? } public void onInitializeClient() { sharedSetup(); } diff --git a/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java b/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java index 78ce1cfe..f5850a75 100644 --- a/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java +++ b/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java @@ -9,43 +9,53 @@ public class InventoryUtil { public static Inventory getInventory(Player player) { - //#if MC >= 11700 +//? if >= 1.17.0 { + return player.getInventory(); - //#else - //$$ return player.inventory; - //#endif +//? } else { + + // return player.inventory; +//? } } public static ItemStack getSelected(Inventory inventory) { - //#if MC >= 12105 +//? if >= 1.21.5 { + return inventory.getSelectedItem(); - //#else - //$$ return inventory.getSelected(); - //#endif +//? } else { + + // return inventory.getSelected(); +//? } } public static ItemStack getOffhand(Inventory inventory) { - //#if MC >= 12105 +//? if >= 1.21.5 { + return inventory.getItem(Inventory.SLOT_OFFHAND); - //#else - //$$ return inventory.offhand.get(0); - //#endif +//? } else { + + // return inventory.offhand.get(0); +//? } } public static int getSelectedId(Inventory inventory) { - //#if MC >= 12105 +//? if >= 1.21.5 { + return inventory.getSelectedSlot(); - //#else - //$$ return inventory.selected; - //#endif +//? } else { + + // return inventory.selected; +//? } } public static List getNonEquipmentItems(Inventory inventory) { - //#if MC >= 12105 +//? if >= 1.21.5 { + return inventory.getNonEquipmentItems(); - //#else - //$$ return inventory.items; - //#endif +//? } else { + + // return inventory.items; +//? } } } diff --git a/src/main/java/dev/tr7zw/firstperson/LogicHandler.java b/src/main/java/dev/tr7zw/firstperson/LogicHandler.java index 3a41ba30..f25a6aac 100644 --- a/src/main/java/dev/tr7zw/firstperson/LogicHandler.java +++ b/src/main/java/dev/tr7zw/firstperson/LogicHandler.java @@ -54,11 +54,12 @@ void registerDefaultHandlers() { || autoDisableItems.contains(client.player.getOffhandItem().getItem())) { return true; } - //#if MC >= 11700 +//? if >= 1.17.0 { + if (client.player.isScoping()) { return true; } - //#endif +//? } return false; }); } diff --git a/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java b/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java index 46f337ab..e44557f4 100644 --- a/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java +++ b/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java @@ -1,13 +1,15 @@ package dev.tr7zw.firstperson.access; -//#if MC < 12103 -//$$import net.minecraft.client.model.geom.ModelPart; -//#endif +//? if < 1.21.3 { + +// import net.minecraft.client.model.geom.ModelPart; +//? } public interface PlayerModelAccess { - //#if MC < 12103 - //$$ ModelPart getCloak(); - //#endif +//? if < 1.21.3 { + + // ModelPart getCloak(); +//? } } diff --git a/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java b/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java index 6c1b6ffd..1e9a0554 100644 --- a/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java +++ b/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java @@ -23,9 +23,10 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.entity.layers.RenderLayer; -//#if MC >= 12106 +//? if >= 1.21.6 { + //import net.minecraft.client.renderer.entity.state.PlayerRenderState; -//#endif +//? } import net.minecraft.client.renderer.entity.state.AvatarRenderState; import net.minecraft.network.chat.CommonComponents; import net.minecraft.resources.ResourceKey; @@ -151,15 +152,17 @@ public CustomConfigScreen(Screen previous) { // Layers PlayerRendererAccess access = null; - //#if MC >= 12106 +//? if >= 1.21.6 { + access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() .getRenderer(new AvatarRenderState()); - //#else - //$$if (Minecraft.getInstance().player != null) { - //$$ access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() - //$$ .getRenderer(Minecraft.getInstance().player); - //$$} - //#endif +//? } else { + + // if (Minecraft.getInstance().player != null) { + // access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() + // .getRenderer(Minecraft.getInstance().player); + // } +//? } if (access != null) { WListPanel layerList = new WListPanel( access.getRenderLayers(), () -> new WToggleButton(ComponentProvider.EMPTY), (s, l) -> { diff --git a/src/main/java/dev/tr7zw/firstperson/fabric/FPModMenuProvider.java b/src/main/java/dev/tr7zw/firstperson/fabric/FPModMenuProvider.java index f41a7ea9..b3654175 100644 --- a/src/main/java/dev/tr7zw/firstperson/fabric/FPModMenuProvider.java +++ b/src/main/java/dev/tr7zw/firstperson/fabric/FPModMenuProvider.java @@ -1,4 +1,5 @@ -//#if FABRIC +//? if fabric { + package dev.tr7zw.firstperson.fabric; import com.terraformersmc.modmenu.api.ConfigScreenFactory; @@ -14,4 +15,4 @@ public ConfigScreenFactory getModConfigScreenFactory() { } } -//#endif \ No newline at end of file +//? } diff --git a/src/main/java/dev/tr7zw/firstperson/forge/RenderHandEventListener.java b/src/main/java/dev/tr7zw/firstperson/forge/RenderHandEventListener.java index 5ce5f27b..38e63294 100644 --- a/src/main/java/dev/tr7zw/firstperson/forge/RenderHandEventListener.java +++ b/src/main/java/dev/tr7zw/firstperson/forge/RenderHandEventListener.java @@ -1,36 +1,43 @@ -//#if FORGE || NEOFORGE -//$$ package dev.tr7zw.firstperson.forge; -//$$ -//$$ import dev.tr7zw.firstperson.FirstPersonModelCore; -//#if FORGE -//$$ import net.minecraftforge.client.event.RenderHandEvent; -//#if MC >= 12106 -//$$ import net.minecraftforge.eventbus.api.listener.SubscribeEvent; -//#else -//$$ import net.minecraftforge.eventbus.api.SubscribeEvent; -//#endif -//#else -//$$ import net.neoforged.bus.api.SubscribeEvent; -//$$ import net.neoforged.neoforge.client.event.RenderHandEvent; -//#endif -//$$ -//$$ public class RenderHandEventListener { -//$$ -//$$ @SubscribeEvent -//#if MC >= 12106 && FORGE -//$$ public boolean onRender(RenderHandEvent e) { -//$$ if(FirstPersonModelCore.instance.isEnabled() && !FirstPersonModelCore.instance.getLogicHandler().showVanillaHands()) { -//$$ return true; -//$$ } -//$$ return false; -//$$ } -//#else -//$$ public void onRender(RenderHandEvent e) { -//$$ if(FirstPersonModelCore.instance.isEnabled() && !FirstPersonModelCore.instance.getLogicHandler().showVanillaHands()) { -//$$ e.setCanceled(true); -//$$ } -//$$ } -//#endif -//$$ -//$$ } -//#endif \ No newline at end of file +//? if forge || neoforge { + +// package dev.tr7zw.firstperson.forge; +// +// import dev.tr7zw.firstperson.FirstPersonModelCore; +// //? if forge { + +// // import net.minecraftforge.client.event.RenderHandEvent; +// //? if >= 1.21.6 { + +// // import net.minecraftforge.eventbus.api.listener.SubscribeEvent; +// //? } else { + +// // import net.minecraftforge.eventbus.api.SubscribeEvent; +// //? } +// //? } else { + +// // import net.neoforged.bus.api.SubscribeEvent; +// // import net.neoforged.neoforge.client.event.RenderHandEvent; +// //? } +// +// public class RenderHandEventListener { +// +// @SubscribeEvent +// //? if >= 1.21.6 && forge { + +// // public boolean onRender(RenderHandEvent e) { +// // if(FirstPersonModelCore.instance.isEnabled() && !FirstPersonModelCore.instance.getLogicHandler().showVanillaHands()) { +// // return true; +// // } +// // return false; +// // } +// //? } else { + +// // public void onRender(RenderHandEvent e) { +// // if(FirstPersonModelCore.instance.isEnabled() && !FirstPersonModelCore.instance.getLogicHandler().showVanillaHands()) { +// // e.setCanceled(true); +// // } +// // } +// //? } +// +// } +//? } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/AgeableListModelMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/AgeableListModelMixin.java index 9ff9d8aa..177922ca 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/AgeableListModelMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/AgeableListModelMixin.java @@ -2,28 +2,31 @@ import org.spongepowered.asm.mixin.Mixin; -//#if MC < 12103 -//$$import org.spongepowered.asm.mixin.Shadow; -//$$import dev.tr7zw.firstperson.access.AgeableListModelAccess; -//$$import net.minecraft.client.model.AgeableListModel; -//#endif +//? if < 1.21.3 { + +// import org.spongepowered.asm.mixin.Shadow; +// import dev.tr7zw.firstperson.access.AgeableListModelAccess; +// import net.minecraft.client.model.AgeableListModel; +//? } import net.minecraft.client.model.geom.ModelPart; -//#if MC >= 12103 +//? if >= 1.21.3 { + @Mixin(ModelPart.class) public abstract class AgeableListModelMixin { } -//#else -//$$@Mixin(AgeableListModel.class) -//$$public abstract class AgeableListModelMixin implements AgeableListModelAccess { -//$$ -//$$ @Override -//$$ public Iterable firstPersonHeadPartsGetter() { -//$$ return headParts(); -//$$ } -//$$ -//$$ @Shadow -//$$ public abstract Iterable headParts(); -//$$ -//$$} -//#endif \ No newline at end of file +//? } else { + +// @Mixin(AgeableListModel.class) +// public abstract class AgeableListModelMixin implements AgeableListModelAccess { +// +// @Override +// public Iterable firstPersonHeadPartsGetter() { +// return headParts(); +// } +// +// @Shadow +// public abstract Iterable headParts(); +// +// } +//? } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java index 4ddeaa02..4beaedd7 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java @@ -19,9 +19,10 @@ import net.minecraft.client.renderer.entity.layers.RenderLayer; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; -//#if MC >= 12103 +//? if >= 1.21.3 { + import net.minecraft.world.item.equipment.Equippable; -//#endif +//? } // lower prio to run before fabric api @SuppressWarnings("rawtypes") @@ -79,9 +80,10 @@ protected void setPartVisibility(A model, EquipmentSlot slot, CallbackInfo ci) { } } - //#else - //$$@Inject(method = "renderArmorPiece", at = @At("HEAD"), cancellable = true) - //#endif +//? } else { + + // @Inject(method = "renderArmorPiece", at = @At("HEAD"), cancellable = true) +//? } private void renderArmor(PoseStack matrices, MultiBufferSource vertexConsumers, T livingEntity, EquipmentSlot equipmentSlot, int i, A bipedEntityModel, CallbackInfo info) { if (livingEntity != fpmMcInstance.cameraEntity) { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java index 1d408dcc..f8510210 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java @@ -12,23 +12,27 @@ import dev.tr7zw.firstperson.FirstPersonModelCore; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.layers.CustomHeadLayer; -//#if MC >= 12103 +//? if >= 1.21.3 { + import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; -//#else -//$$import net.minecraft.world.entity.LivingEntity; -//#endif +//? } else { + +// import net.minecraft.world.entity.LivingEntity; +//? } //lower prio to run before other mods @Mixin(value = CustomHeadLayer.class, priority = 100) public class CustomHeadLayerMixin { @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;FF)V", at = @At("HEAD"), cancellable = true) - //#if MC >= 12103 +//? if >= 1.21.3 { + public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, LivingEntityRenderState livingEntityRenderState, float f, float g, CallbackInfo info) { - //#else - //$$public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntity livingEntity, - //$$ float f, float g, float h, float j, float k, float l, CallbackInfo info) { - //#endif +//? } else { + + // public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntity livingEntity, + // float f, float g, float h, float j, float k, float l, CallbackInfo info) { +//? } if (((LivingEntityRenderStateAccess) livingEntityRenderState).isCameraEntity()) { info.cancel(); } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java index e606cfee..3131e711 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java @@ -13,32 +13,38 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.client.renderer.MultiBufferSource; -//#if MC >= 12103 +//? if >= 1.21.3 { + import net.minecraft.client.renderer.entity.layers.WingsLayer; import net.minecraft.client.renderer.entity.state.HumanoidRenderState; -//#else -//$$import net.minecraft.client.renderer.entity.layers.ElytraLayer; -//#endif +//? } else { + +// import net.minecraft.client.renderer.entity.layers.ElytraLayer; +//? } import net.minecraft.world.entity.LivingEntity; /** * @author KxmischesDomi | https://github.com/kxmischesdomi */ -//#if MC >= 12103 +//? if >= 1.21.3 { + @Mixin(WingsLayer.class) -//#else -//$$@Mixin(ElytraLayer.class) -//#endif +//? } else { + +// @Mixin(ElytraLayer.class) +//? } public class ElytraLayerMixin { - //#if MC >= 12103 +//? if >= 1.21.3 { + @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/HumanoidRenderState;FF)V", at = @At("HEAD"), cancellable = true) public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, HumanoidRenderState humanoidRenderState, float f, float g, CallbackInfo ci) { - //#else - //$$ @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) - //$$ public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, T livingEntity, float f, - //$$ float g, float h, float j, float k, float l, CallbackInfo ci) { - //#endif +//? } else { + + // @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) + // public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, T livingEntity, float f, + // float g, float h, float j, float k, float l, CallbackInfo ci) { +//? } if (((LivingEntityRenderStateAccess) humanoidRenderState).isCameraEntity() && humanoidRenderState.isVisuallySwimming ) { ci.cancel(); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java index 7e2812e2..803e8822 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java @@ -19,61 +19,71 @@ import net.minecraft.client.renderer.entity.layers.RenderLayer; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.LivingEntity; -//#if MC >= 12103 +//? if >= 1.21.3 { + import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; -//#endif -//#if MC < 12104 -//$$import net.minecraft.client.model.VillagerHeadModel; -//#endif +//? } +//? if < 1.21.4 { + +// import net.minecraft.client.model.VillagerHeadModel; +//? } @Mixin(RenderLayer.class) @NoArgsConstructor(access = AccessLevel.PRIVATE) public abstract class FeatureRendererMixin { /*@Inject(method = "renderColoredCutoutModel", at = @At("HEAD"), cancellable = true) - //#if MC >= 12103 +//? if >= 1.21.3 { + private static void renderColoredCutoutModel(Model model, ResourceLocation resourceLocation, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, LivingEntityRenderState livingEntityRenderState, int j, int k, CallbackInfo ci) { - //#elseif MC >= 12100 - //$$private static void removeHead(EntityModel model, ResourceLocation texture, - //$$ PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, int color, CallbackInfo ci) { - //#else - //$$private static void removeHead(EntityModel model, ResourceLocation texture, - //$$ PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, float red, float green, - //$$ float blue, CallbackInfo ci) { - //#endif +//? } else if >= 1.21.0 { + + // private static void removeHead(EntityModel model, ResourceLocation texture, + // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, int color, CallbackInfo ci) { +//? } else { + + // private static void removeHead(EntityModel model, ResourceLocation texture, + // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, float red, float green, + // float blue, CallbackInfo ci) { +//? } if (FirstPersonModelCore.instance.isRenderingPlayer()) { if (!(model instanceof HeadedModel)) { ci.cancel(); return; } ((ModelPartBase) (Object) ((HeadedModel) model).getHead()).setHidden(); - //#if MC < 12104 - //$$if (model instanceof VillagerHeadModel villager) { - //$$ villager.hatVisible(false); - //$$} - //#endif +//? if < 1.21.4 { + + // if (model instanceof VillagerHeadModel villager) { + // villager.hatVisible(false); + // } +//? } } } @Inject(method = "renderColoredCutoutModel", at = @At("RETURN"), cancellable = true) - //#if MC >= 12103 +//? if >= 1.21.3 { + private static void removeReturn(EntityModel model, ResourceLocation resourceLocation, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntityRenderState livingEntityRenderState, int j, CallbackInfo ci) { - //#elseif MC >= 12100 - //$$private static void removeReturn(EntityModel model, ResourceLocation texture, - //$$ PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, int color, CallbackInfo ci) { - //#else - //$$private static void removeReturn(EntityModel model, ResourceLocation texture, - //$$ PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, float red, float green, - //$$ float blue, CallbackInfo ci) { - //#endif +//? } else if >= 1.21.0 { + + // private static void removeReturn(EntityModel model, ResourceLocation texture, + // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, int color, CallbackInfo ci) { +//? } else { + + // private static void removeReturn(EntityModel model, ResourceLocation texture, + // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, float red, float green, + // float blue, CallbackInfo ci) { +//? } if (model instanceof HeadedModel) { ((ModelPartBase) (Object) ((HeadedModel) model).getHead()).showAgain(); - //#if MC < 12104 - //$$ if (model instanceof VillagerHeadModel villager) { - //$$ villager.hatVisible(true); - //$$ } - //#endif +//? if < 1.21.4 { + + // if (model instanceof VillagerHeadModel villager) { + // villager.hatVisible(true); + // } +//? } } }*/ diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java index 81779a2a..1cb55a87 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java @@ -19,11 +19,13 @@ import net.minecraft.client.renderer.entity.FishingHookRenderer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.phys.Vec3; -//#if MC >= 12103 +//? if >= 1.21.3 { + import net.minecraft.client.renderer.entity.state.FishingHookRenderState; -//#else -//$$ import net.minecraft.world.entity.projectile.FishingHook; -//#endif +//? } else { + +// import net.minecraft.world.entity.projectile.FishingHook; +//? } @Mixin(FishingHookRenderer.class) public class FishingBobberRendererMixin { @@ -36,22 +38,26 @@ private boolean doCorrect() { && !FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(); } - //#if MC <= 12004 - //$$ @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Options;getCameraType()Lnet/minecraft/client/CameraType;")) - //#else +//? if <= 1.20.4 { + + // @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Options;getCameraType()Lnet/minecraft/client/CameraType;")) +//? } else { + @Redirect(method = "getPlayerHandPos", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Options;getCameraType()Lnet/minecraft/client/CameraType;")) - //#endif +//? } private CameraType redirect(Options gameOptions) { return doCorrect() ? CameraType.THIRD_PERSON_BACK : gameOptions.getCameraType(); } @Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/FishingHookRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At("HEAD")) - //#if MC >= 12103 +//? if >= 1.21.3 { + public void render(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState cameraRenderState, CallbackInfo ci) { - //#else - //$$ private void calcOffset(FishingHook fishingBobberEntity, float f, float g, PoseStack matrixStack, - //$$ MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { - //#endif +//? } else { + + // private void calcOffset(FishingHook fishingBobberEntity, float f, float g, PoseStack matrixStack, + // MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { +//? } if (FirstPersonModelCore.instance.isRenderingPlayer()) { offsetvec3d = FirstPersonModelCore.instance.getLogicHandler().getOffset();// getPositionOffset((Player) // fishingBobberEntity.getOwner(), @@ -61,31 +67,33 @@ public void render(FishingHookRenderState fishingHookRenderState, PoseStack pose } } - //#if MC <= 12004 - //$$ @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getX()D")) - //$$ private double offsetX(Player playerEntity) { - //$$ return playerEntity.getX() + offsetvec3d.x(); - //$$ } - //$$ - //$$ @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getZ()D")) - //$$ private double offsetZ(Player playerEntity) { - //$$ return playerEntity.getZ() + offsetvec3d.z(); - //$$ } - //$$ - //$$ @Redirect(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/player/Player;xo:D")) - //$$ private double prevOffsetX(Player playerEntity) { - //$$ return playerEntity.xo + offsetvec3d.x(); - //$$ } - //$$ - //$$ @Redirect(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/player/Player;zo:D")) - //$$ private double prevOffsetZ(Player playerEntity) { - //$$ return playerEntity.zo + offsetvec3d.z(); - //$$ } - //#else +//? if <= 1.20.4 { + + // @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getX()D")) + // private double offsetX(Player playerEntity) { + // return playerEntity.getX() + offsetvec3d.x(); + // } + // + // @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getZ()D")) + // private double offsetZ(Player playerEntity) { + // return playerEntity.getZ() + offsetvec3d.z(); + // } + // + // @Redirect(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/player/Player;xo:D")) + // private double prevOffsetX(Player playerEntity) { + // return playerEntity.xo + offsetvec3d.x(); + // } + // + // @Redirect(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/player/Player;zo:D")) + // private double prevOffsetZ(Player playerEntity) { + // return playerEntity.zo + offsetvec3d.z(); + // } +//? } else { + @Inject(method = "getPlayerHandPos", at = @At("RETURN"), cancellable = true) private void getPlayerHandPosOffset(Player player, float f, float g, CallbackInfoReturnable ci) { ci.setReturnValue(ci.getReturnValue().add(offsetvec3d)); } - //#endif +//? } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java index 89922f37..a1a63685 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java @@ -15,29 +15,37 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.layers.ItemInHandLayer; import net.minecraft.world.entity.HumanoidArm; -//#if MC < 12104 -//$$import net.minecraft.world.item.ItemStack; -//#endif -//#if MC == 12103 -//$$import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; -//#endif -//#if MC >= 12103 && MC < 12104 -//$$import net.minecraft.client.resources.model.BakedModel; -//#else -//$$import net.minecraft.client.player.LocalPlayer; -//$$import net.minecraft.world.entity.LivingEntity; -//#endif -//#if MC >= 11904 -//#if MC < 12104 -//$$import net.minecraft.world.item.ItemDisplayContext; -//#endif -//#else -//$$ import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; -//#endif -//#if MC >= 12104 +//? if < 1.21.4 { + +// import net.minecraft.world.item.ItemStack; +//? } +//? if = 12103 { + +// import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +//? } +//? if >= 1.21.3 && < 1.21.4 { + +// import net.minecraft.client.resources.model.BakedModel; +//? } else { + +// import net.minecraft.client.player.LocalPlayer; +// import net.minecraft.world.entity.LivingEntity; +//? } +//? if >= 1.19.4 { + +//? if < 1.21.4 { + +// import net.minecraft.world.item.ItemDisplayContext; +//? } +//? } else { + +// import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; +//? } +//? if >= 1.21.4 { + import net.minecraft.client.renderer.entity.state.ArmedEntityRenderState; import net.minecraft.client.renderer.item.ItemStackRenderState; -//#endif +//? } /** * Stops items in the hand from rendering while in first person. @@ -47,19 +55,23 @@ public class HeldItemFeatureRendererMixin { @Inject(at = @At("HEAD"), method = "submitArmWithItem", cancellable = true) - //#if MC >= 12104 +//? if >= 1.21.4 { + private void renderArmWithItem(ArmedEntityRenderState armedEntityRenderState, ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, CallbackInfo ci) { - //#elseif MC >= 12103 - //$$private void renderArmWithItem(LivingEntityRenderState livingEntityRenderState, BakedModel bakedModel, - //$$ ItemStack itemStack, ItemDisplayContext itemDisplayContext, HumanoidArm humanoidArm, PoseStack poseStack, - //$$ MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { - //#elseif MC >= 11904 - //$$private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, ItemDisplayContext itemDisplayContext, - //$$ HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { - //#else - //$$ private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, TransformType transformType, - //$$ HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { - //#endif +//? } else if >= 1.21.3 { + + // private void renderArmWithItem(LivingEntityRenderState livingEntityRenderState, BakedModel bakedModel, + // ItemStack itemStack, ItemDisplayContext itemDisplayContext, HumanoidArm humanoidArm, PoseStack poseStack, + // MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { +//? } else if >= 1.19.4 { + + // private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, ItemDisplayContext itemDisplayContext, + // HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { +//? } else { + + // private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, TransformType transformType, + // HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { +//? } LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) armedEntityRenderState; if (access.hideLeftArm() && access.hideRightArm() && !FirstPersonModelCore.instance.getLogicHandler().lookingDown(armedEntityRenderState)) { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java index 6620825b..1274b2de 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java @@ -70,11 +70,13 @@ public void renderFirstPersonItem(AbstractClientPlayer player, float deltaTick, // double hands if (FirstPersonModelCore.instance.getConfig().vanillaHandsMode != VanillaHands.ALL_DOUBLE || player.getMainHandItem().getItem() == Items.FILLED_MAP - //#if MC >= 11700 +//? if >= 1.17.0 { + || player.isScoping()) { - //#else - //$$|| false) { - //#endif +//? } else { + + // || false) { +//? } return; } boolean bl = hand == InteractionHand.MAIN_HAND; diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java index 413eba3a..c9d92cc9 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java @@ -20,9 +20,10 @@ import dev.tr7zw.firstperson.FirstPersonModelCore; import dev.tr7zw.firstperson.InventoryUtil; import dev.tr7zw.firstperson.access.AgeableListModelAccess; -//#if MC < 12103 -//$$ import dev.tr7zw.firstperson.access.PlayerModelAccess; -//#endif +//? if < 1.21.3 { + +// import dev.tr7zw.firstperson.access.PlayerModelAccess; +//? } import dev.tr7zw.firstperson.versionless.mixinbase.ModelPartBase; import dev.tr7zw.transition.mc.EntityUtil; import net.minecraft.client.model.EntityModel; @@ -38,13 +39,15 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.monster.Shulker; import net.minecraft.world.entity.player.Player; -//#if MC >= 12103 +//? if >= 1.21.3 { + import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; //import net.minecraft.client.renderer.entity.state.PlayerRenderState; -//#endif -//#if MC < 12104 -//$$import net.minecraft.client.model.VillagerHeadModel; -//#endif +//? } +//? if < 1.21.4 { + +// import net.minecraft.client.model.VillagerHeadModel; +//? } @Mixin(LivingEntityRenderer.class) public abstract class LivingEntityRendererMixin { @@ -52,7 +55,8 @@ public abstract class LivingEntityRendererMixin { private static List revert = new ArrayList(); /*// pull all registers to try to get rid of the head or other bodyparts - //#if MC >= 12103 +//? if >= 1.21.3 { + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/EntityModel;setupAnim(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;)V", shift = Shift.AFTER), cancellable = true) public void render(LivingEntityRenderState livingEntityRenderState, PoseStack matrixStack, MultiBufferSource multiBufferSource, int i, CallbackInfo info) { @@ -63,11 +67,12 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma return; } LivingEntity livingEntity = (LivingEntity) entity; - //#else - //$$@Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/EntityModel;setupAnim(Lnet/minecraft/world/entity/Entity;FFFFF)V", shift = Shift.AFTER), cancellable = true) - //$$public void renderPostAnim(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, - //$$ MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { - //#endif +//? } else { + + // @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/EntityModel;setupAnim(Lnet/minecraft/world/entity/Entity;FFFFF)V", shift = Shift.AFTER), cancellable = true) + // public void renderPostAnim(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, + // MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { +//? } if (!revert.isEmpty()) { for (Runnable r : revert) { r.run(); @@ -126,14 +131,15 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma } } } - //#if MC < 12104 - //$$if (model instanceof VillagerHeadModel villaterHead) { - //$$ villaterHead.hatVisible(false); - //$$ revert.add(() -> { - //$$ villaterHead.hatVisible(true); - //$$ }); - //$$} - //#endif +//? if < 1.21.4 { + + // if (model instanceof VillagerHeadModel villaterHead) { + // villaterHead.hatVisible(false); + // revert.add(() -> { + // villaterHead.hatVisible(true); + // }); + // } +//? } if (model instanceof PlayerModel playerModel) { headShouldBeHidden = true; ((ModelPartBase) (Object) playerModel.hat).setHidden(); @@ -171,18 +177,21 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma if (livingEntity instanceof AbstractClientPlayer player && (Object) model instanceof PlayerModel playerModel && FirstPersonModelCore.instance.getLogicHandler().isSwimming(player)) { ((ModelPartBase) (Object) playerModel.body).setHidden(); - //#if MC >= 12103 +//? if >= 1.21.3 { + if (livingEntityRenderState instanceof PlayerRenderState prs) { prs.showCape = false; } - //#else - //$$((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).setHidden(); - //#endif +//? } else { + + // ((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).setHidden(); +//? } revert.add(() -> { ((ModelPartBase) (Object) playerModel.body).showAgain(); - //#if MC < 12103 - //$$ ((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).showAgain(); - //#endif +//? if < 1.21.3 { + + // ((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).showAgain(); +//? } }); } if (!headShouldBeHidden) { @@ -199,13 +208,15 @@ private void checkIfCameraEntity(LivingEntity livingEntity, LivingEntityRenderSt } /*@Inject(method = "render", at = @At("RETURN")) - //#if MC >= 12103 +//? if >= 1.21.3 { + public void renderEnd(LivingEntityRenderState livingEntityRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo info) { - //#else - //$$ public void renderReturn(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, - //$$ MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { - //#endifs +//? } else { + + // public void renderReturn(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, + // MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { +//? } if (!revert.isEmpty()) { for (Runnable r : revert) { r.run(); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java index f2b76d16..ed0d1b0a 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java @@ -12,13 +12,15 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -//#if MC >= 12105 +//? if >= 1.21.5 { + import net.minecraft.world.entity.LivingEntity; @Mixin(LivingEntity.class) -//#else -//$$ @Mixin(Player.class) -//#endif +//? } else { + +// @Mixin(Player.class) +//? } public class PlayerMixin { /*@Inject(method = "getItemBySlot", at = @At("HEAD"), cancellable = true) diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java index 438cd235..62b765b1 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java @@ -5,24 +5,26 @@ import dev.tr7zw.firstperson.access.PlayerModelAccess; import net.minecraft.client.model.PlayerModel; import net.minecraft.world.entity.LivingEntity; -//#if MC < 12103 -//$$ import org.spongepowered.asm.mixin.Final; -//$$ import org.spongepowered.asm.mixin.Shadow; -//$$ import net.minecraft.client.model.geom.ModelPart; -//#endif +//? if < 1.21.3 { + +// import org.spongepowered.asm.mixin.Final; +// import org.spongepowered.asm.mixin.Shadow; +// import net.minecraft.client.model.geom.ModelPart; +//? } @Mixin(value = PlayerModel.class) public class PlayerModelMixin implements PlayerModelAccess { - //#if MC < 12103 - //$$@Shadow - //$$@Final - //$$private ModelPart cloak; - //$$ - //$$@Override - //$$public ModelPart getCloak() { - //$$ return cloak; - //$$} - //#endif +//? if < 1.21.3 { + + // @Shadow + // @Final + // private ModelPart cloak; + // + // @Override + // public ModelPart getCloak() { + // return cloak; + // } +//? } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java index d3a7eabf..1716d4ea 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java @@ -30,12 +30,14 @@ import net.minecraft.client.renderer.entity.layers.RenderLayer; //import net.minecraft.client.renderer.entity.player.PlayerRenderer; import net.minecraft.world.phys.Vec3; -//#if MC >= 11802 +//? if >= 1.18.2 { + import net.minecraft.client.renderer.entity.EntityRendererProvider.Context; -//#endif -//#if MC >= 12103 +//? } +//? if >= 1.21.3 { + //import net.minecraft.client.renderer.entity.state.PlayerRenderState; -//#endif +//? } /** * Offset the player behind the camera @@ -46,27 +48,31 @@ @Mixin(value = AvatarRenderer.class, priority = 500) public abstract class PlayerRendererMixin extends LivingEntityRenderer implements PlayerRendererAccess { - //#if MC >= 11802 +//? if >= 1.18.2 { + public PlayerRendererMixin(Context context, PlayerModel model, float shadowRadius) { super(context, model, shadowRadius); } - //#else - //$$public PlayerRendererMixin(EntityRenderDispatcher entityRenderDispatcher, EntityModel entityModel, float f) { - //$$ super(entityRenderDispatcher, entityModel, f); - //$$} - //#endif +//? } else { + + // public PlayerRendererMixin(EntityRenderDispatcher entityRenderDispatcher, EntityModel entityModel, float f) { + // super(entityRenderDispatcher, entityModel, f); + // } +//? } private static Minecraft fpmMcInstance = Minecraft.getInstance(); private List removedLayers = new ArrayList<>(); @Inject(method = "getRenderOffset", at = @At("RETURN"), cancellable = true) - //#if MC >= 12103 +//? if >= 1.21.3 { + public void getRenderOffset(AvatarRenderState playerRenderState, CallbackInfoReturnable ci) { AbstractClientPlayer entity = Minecraft.getInstance().player; float delta = Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(false); - //#else - //$$public void getRenderOffset(AbstractClientPlayer entity, float delta, CallbackInfoReturnable ci) { - //#endif +//? } else { + + // public void getRenderOffset(AbstractClientPlayer entity, float delta, CallbackInfoReturnable ci) { +//? } LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) playerRenderState; if (access.isCameraEntity()) { Vec3 offset = ci.getReturnValue().add(access.getRenderOffset()); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java index e5d653bf..8db2d37a 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java @@ -17,23 +17,26 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.level.LevelReader; -//#if MC >= 12105 +//? if >= 1.21.5 { + import net.minecraft.client.renderer.entity.state.HitboxRenderState; -//#endif -//#if MC >= 12103 +//? } +//? if >= 1.21.3 { + import net.minecraft.client.renderer.entity.state.EntityRenderState; -//#else -//$$import org.spongepowered.asm.mixin.injection.At; -//$$import org.spongepowered.asm.mixin.injection.At.Shift; -//$$import org.spongepowered.asm.mixin.injection.Redirect; -//$$import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -//$$import com.mojang.blaze3d.vertex.VertexConsumer; -//$$import net.minecraft.client.renderer.MultiBufferSource; -//$$import net.minecraft.util.Mth; -//$$import net.minecraft.world.entity.Entity; -//$$import net.minecraft.world.level.LevelReader; -//$$import net.minecraft.world.phys.Vec3; -//#endif +//? } else { + +// import org.spongepowered.asm.mixin.injection.At; +// import org.spongepowered.asm.mixin.injection.At.Shift; +// import org.spongepowered.asm.mixin.injection.Redirect; +// import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +// import com.mojang.blaze3d.vertex.VertexConsumer; +// import net.minecraft.client.renderer.MultiBufferSource; +// import net.minecraft.util.Mth; +// import net.minecraft.world.entity.Entity; +// import net.minecraft.world.level.LevelReader; +// import net.minecraft.world.phys.Vec3; +//? } /** * Move the first person shadow to be at the correct location @@ -45,16 +48,18 @@ public abstract class RenderDispatcherMixin { /*private static Minecraft fpmMcInstance = Minecraft.getInstance(); - //#if MC >= 12103 +//? if >= 1.21.3 { + private static double tmpX; private static double tmpZ; @Inject(method = "renderShadow", at = @At("HEAD")) private static void renderShadow(PoseStack poseStack, MultiBufferSource multiBufferSource, EntityRenderState entityRenderState, float f, - //#if MC < 12105 - //$$float g, - //#endif +//? if < 1.21.5 { + + // float g, +//? } LevelReader levelReader, float h, CallbackInfo ci) { if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { poseStack.pushPose(); @@ -69,9 +74,10 @@ private static void renderShadow(PoseStack poseStack, MultiBufferSource multiBuf @Inject(method = "renderShadow", at = @At("RETURN")) private static void renderShadowEnd(PoseStack poseStack, MultiBufferSource multiBufferSource, EntityRenderState entityRenderState, float f, - //#if MC < 12105 - //$$float g, - //#endif +//? if < 1.21.5 { + + // float g, +//? } LevelReader levelReader, float h, CallbackInfo ci) { if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { entityRenderState.x = tmpX; @@ -82,62 +88,68 @@ private static void renderShadowEnd(PoseStack poseStack, MultiBufferSource multi @Inject(method = "renderHitbox", at = @At(value = "HEAD"), cancellable = true) private static void renderHitbox(PoseStack poseStack, VertexConsumer buffer, - //#if MC >= 12105 +//? if >= 1.21.5 { + HitboxRenderState hitboxRenderState, - //#else - //$$ Entity entity, float red, float green, float blue, float alpha, - //#endif +//? } else { + + // Entity entity, float red, float green, float blue, float alpha, +//? } CallbackInfo ci) { if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { ci.cancel(); } } - //#else - //$$ @Redirect(method = "renderShadow", at = @At(value = "invoke", target = "Lnet/minecraft/util/Mth;lerp(DDD)D", ordinal = 0)) - //$$ private static double shadowOffsetX(double delta, double old, double cur, PoseStack poseStack, - //$$ MultiBufferSource multiBufferSource, Entity entity, float f, float g, LevelReader levelReader, float h) { - //$$ if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { - //$$ return Mth.lerp(delta, old, cur) + FirstPersonModelCore.instance.getLogicHandler().getOffset().x; - //$$ } - //$$ return Mth.lerp(delta, old, cur); - //$$ } - //$$ - //$$ @Redirect(method = "renderShadow", at = @At(value = "invoke", target = "Lnet/minecraft/util/Mth;lerp(DDD)D", ordinal = 2)) - //$$ private static double shadowOffsetZ(double delta, double old, double cur, PoseStack poseStack, - //$$ MultiBufferSource multiBufferSource, Entity entity, float f, float g, LevelReader levelReader, float h) { - //$$ if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { - //$$ return Mth.lerp(delta, old, cur) + FirstPersonModelCore.instance.getLogicHandler().getOffset().z; - //$$ } - //$$ return Mth.lerp(delta, old, cur); - //$$ } - //$$ - //$$ @Inject(method = "renderShadow", at = @At(value = "invoke", target = "Lcom/mojang/blaze3d/vertex/PoseStack;last()Lcom/mojang/blaze3d/vertex/PoseStack$Pose;", shift = Shift.BEFORE)) - //$$ private static void shadowMove(PoseStack matrices, MultiBufferSource vertexConsumers, Entity entity, float opacity, - //$$ float tickDelta, LevelReader world, float radius, CallbackInfo ci) { - //$$ if (!FirstPersonModelCore.instance.isRenderingPlayerPost()) { - //$$ return; - //$$ } - //$$ Vec3 offset = FirstPersonModelCore.instance.getLogicHandler().getOffset(); - //$$ matrices.translate(offset.x, offset.y, offset.z); - //$$ } - //$$ - //$$@Inject(method = "renderHitbox", at = @At(value = "HEAD"), cancellable = true) - //#if MC < 11700 - //$$ private void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, CallbackInfo ci) { - //#elseif MC < 12100 - //$$ private static void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, - //$$ CallbackInfo ci) { - //#else - //$$private static void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, - //$$ float g, float h, float i, - //$$ CallbackInfo ci) { - //#endif - //$$ if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { - //$$ ci.cancel(); - //$$ } - //$$} - //#endif +//? } else { + + // @Redirect(method = "renderShadow", at = @At(value = "invoke", target = "Lnet/minecraft/util/Mth;lerp(DDD)D", ordinal = 0)) + // private static double shadowOffsetX(double delta, double old, double cur, PoseStack poseStack, + // MultiBufferSource multiBufferSource, Entity entity, float f, float g, LevelReader levelReader, float h) { + // if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { + // return Mth.lerp(delta, old, cur) + FirstPersonModelCore.instance.getLogicHandler().getOffset().x; + // } + // return Mth.lerp(delta, old, cur); + // } + // + // @Redirect(method = "renderShadow", at = @At(value = "invoke", target = "Lnet/minecraft/util/Mth;lerp(DDD)D", ordinal = 2)) + // private static double shadowOffsetZ(double delta, double old, double cur, PoseStack poseStack, + // MultiBufferSource multiBufferSource, Entity entity, float f, float g, LevelReader levelReader, float h) { + // if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { + // return Mth.lerp(delta, old, cur) + FirstPersonModelCore.instance.getLogicHandler().getOffset().z; + // } + // return Mth.lerp(delta, old, cur); + // } + // + // @Inject(method = "renderShadow", at = @At(value = "invoke", target = "Lcom/mojang/blaze3d/vertex/PoseStack;last()Lcom/mojang/blaze3d/vertex/PoseStack$Pose;", shift = Shift.BEFORE)) + // private static void shadowMove(PoseStack matrices, MultiBufferSource vertexConsumers, Entity entity, float opacity, + // float tickDelta, LevelReader world, float radius, CallbackInfo ci) { + // if (!FirstPersonModelCore.instance.isRenderingPlayerPost()) { + // return; + // } + // Vec3 offset = FirstPersonModelCore.instance.getLogicHandler().getOffset(); + // matrices.translate(offset.x, offset.y, offset.z); + // } + // + // @Inject(method = "renderHitbox", at = @At(value = "HEAD"), cancellable = true) +// //? if < 1.17.0 { + + // // private void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, CallbackInfo ci) { +// //? } else if < 1.21.0 { + + // // private static void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, + // // CallbackInfo ci) { +// //? } else { + + // // private static void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, + // // float g, float h, float i, + // // CallbackInfo ci) { +// //? } + // if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { + // ci.cancel(); + // } + // } +//? } */ } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java index bc8ecc48..2f55ea10 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java @@ -14,9 +14,10 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.layers.StuckInBodyLayer; import net.minecraft.world.entity.LivingEntity; -//#if MC >= 12103 +//? if >= 1.21.3 { + //import net.minecraft.client.renderer.entity.state.PlayerRenderState; -//#endif +//? } /** * @author KxmischesDomi | https://github.com/kxmischesdomi @@ -24,14 +25,16 @@ @Mixin(StuckInBodyLayer.class) public class StuckInBodyLayerMixin { - //#if MC >= 12103 +//? if >= 1.21.3 { + @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/AvatarRenderState;FF)V", at = @At("HEAD"), cancellable = true) public void disableStuckFeatureLayer(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, AvatarRenderState avatarRenderState, float f, float g, CallbackInfo ci) { - //#else - //$$@Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) - //$$public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, - //$$ T livingEntity, float f, float g, float h, float j, float k, float l, CallbackInfo ci) { - //#endif +//? } else { + + // @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) + // public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, + // T livingEntity, float f, float g, float h, float j, float k, float l, CallbackInfo ci) { +//? } if (((LivingEntityRenderStateAccess) avatarRenderState).isCameraEntity() && !FirstPersonModelCore.instance.getConfig().renderStuckFeatures) { ci.cancel(); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java index c01f85f7..62fb9a79 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java @@ -22,20 +22,24 @@ import net.minecraft.client.renderer.RenderBuffers; import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.Vec3; -//#if MC >= 12103 +//? if >= 1.21.3 { + import com.mojang.blaze3d.resource.GraphicsResourceAllocator; -//#endif -//#if MC >= 12100 +//? } +//? if >= 1.21.0 { + import net.minecraft.client.DeltaTracker; import java.util.List; -//#endif -//#if MC >= 11903 +//? } +//? if >= 1.19.3 { + import org.joml.Matrix4f; -//#else -//$$ import com.mojang.math.Matrix4f; -//#endif +//? } else { + +// import com.mojang.math.Matrix4f; +//? } /** * Detects when the player is rendered and triggers the correct changes @@ -50,25 +54,29 @@ public abstract class WorldRendererMixin { @Shadow private RenderBuffers renderBuffers; - //#if MC <= 12004 - //$$ @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) - //$$ public void render(PoseStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, - //$$ GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f matrix4f, CallbackInfo info) { - //#elseif MC < 12100 - //$$ @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) - //$$ public void render(float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, - //$$ GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f matrix4f, Matrix4f matrix4f2, CallbackInfo info) { - //$$ PoseStack matrices = new PoseStack(); - //#elseif MC < 12103 - //$$ @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) - //$$ public void render(DeltaTracker deltaTracker, boolean bl, Camera camera, GameRenderer gameRenderer, - //$$ LightTexture lightTexture, Matrix4f matrix4f, Matrix4f matrix4f2, CallbackInfo info) { - //$$ PoseStack matrices = new PoseStack(); - //#else +//? if <= 1.20.4 { + + // @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) + // public void render(PoseStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, + // GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f matrix4f, CallbackInfo info) { +//? } else if < 1.21.0 { + + // @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) + // public void render(float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, + // GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f matrix4f, Matrix4f matrix4f2, CallbackInfo info) { + // PoseStack matrices = new PoseStack(); +//? } else if < 1.21.3 { + + // @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) + // public void render(DeltaTracker deltaTracker, boolean bl, Camera camera, GameRenderer gameRenderer, + // LightTexture lightTexture, Matrix4f matrix4f, Matrix4f matrix4f2, CallbackInfo info) { + // PoseStack matrices = new PoseStack(); +//? } else { + @Inject(method = "extractVisibleEntities", at = @At(value = "HEAD")) private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTracker, LevelRenderState levelRenderState, CallbackInfo ci) { PoseStack matrices = new PoseStack(); - //#endif +//? } if (camera.isDetached() || !FirstPersonModelCore.instance.getLogicHandler().shouldApplyThirdPerson(false)) { return; } @@ -76,11 +84,13 @@ private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTr MultiBufferSource.BufferSource immediate = renderBuffers.bufferSource(); FirstPersonModelCore.instance.setRenderingPlayer(true); FirstPersonModelCore.instance.setRenderingPlayerPost(true); - //#if MC < 12100 - //$$ renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), tickDelta, matrices, immediate); - //#else +//? if < 1.21.0 { + + // renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), tickDelta, matrices, immediate); +//? } else { + levelRenderState.entityRenderStates.add(extractEntity(camera.getEntity(), deltaTracker.getGameTimeDeltaPartialTick(false))); - //#endif +//? } FirstPersonModelCore.instance.setRenderingPlayer(false); FirstPersonModelCore.instance.setRenderingPlayerPost(false); diff --git a/src/main/java/dev/tr7zw/firstperson/modsupport/FreecamSupport.java b/src/main/java/dev/tr7zw/firstperson/modsupport/FreecamSupport.java index bf0d64e3..a4c898e9 100644 --- a/src/main/java/dev/tr7zw/firstperson/modsupport/FreecamSupport.java +++ b/src/main/java/dev/tr7zw/firstperson/modsupport/FreecamSupport.java @@ -15,4 +15,4 @@ public boolean preventFirstperson() { return Freecam.isEnabled(); } -} \ No newline at end of file +} diff --git a/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java b/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java index 4b128a81..62544c48 100644 --- a/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java +++ b/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java @@ -9,16 +9,19 @@ import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; -//#if MC < 12000 -//$$ import net.minecraft.client.Minecraft; -//#endif -//#if MC >= 11903 +//? if < 1.20.0 { + +// import net.minecraft.client.Minecraft; +//? } +//? if >= 1.19.3 { + import org.joml.Matrix4f; import org.joml.Vector4f; -//#else -//$$ import com.mojang.math.Matrix4f; -//$$ import com.mojang.math.Vector4f; -//#endif +//? } else { + +// import com.mojang.math.Matrix4f; +// import com.mojang.math.Vector4f; +//? } public class PlayerAnimatorSupport implements PlayerOffsetHandler { @@ -30,20 +33,23 @@ public Vec3 applyOffset(AbstractClientPlayer entity, float delta, Vec3 original, anim.setTickDelta(delta); // Probably the tick is done, set tick delta. // get required data - //#if MC >= 12103 +//? if >= 1.21.3 { + Vec3f rot = anim.get3DTransform(dev.kosmx.playerAnim.api.PartKey.BODY, TransformType.ROTATION, Vec3f.ZERO); Vec3f pos = anim.get3DTransform(dev.kosmx.playerAnim.api.PartKey.BODY, TransformType.POSITION, Vec3f.ZERO); // .scale(1 / 16f); It has been // pre-scaled Vec3f headPos = anim .get3DTransform(dev.kosmx.playerAnim.api.PartKey.HEAD, TransformType.POSITION, Vec3f.ZERO) .scale(1 / 16f); - //#else - //$$Vec3f rot = anim.get3DTransform("body", TransformType.ROTATION, Vec3f.ZERO); - //$$Vec3f pos = anim.get3DTransform("body", TransformType.POSITION, Vec3f.ZERO); // .scale(1 / 16f); It has been - //$$ // pre-scaled - //$$Vec3f headPos = anim.get3DTransform("head", TransformType.POSITION, Vec3f.ZERO).scale(1 / 16f); - //#endif - //#if MC >= 11903 +//? } else { + + // Vec3f rot = anim.get3DTransform("body", TransformType.ROTATION, Vec3f.ZERO); + // Vec3f pos = anim.get3DTransform("body", TransformType.POSITION, Vec3f.ZERO); // .scale(1 / 16f); It has been + // // pre-scaled + // Vec3f headPos = anim.get3DTransform("head", TransformType.POSITION, Vec3f.ZERO).scale(1 / 16f); +//? } +//? if >= 1.19.3 { + // Matrix4f#translate is an offset applied from LEFT (or absolute) Matrix4f relativeTranslation = new Matrix4f(); relativeTranslation.identity(); @@ -77,75 +83,77 @@ public Vec3 applyOffset(AbstractClientPlayer entity, float delta, Vec3 original, Vector4f offset = new Vector4f(0, 0, 0, 1); offset.mul(matrix); - //#elseif MC > 11700 - //$$ Matrix4f relativeTranslation = new Matrix4f(); - //$$ relativeTranslation.setIdentity(); - //$$ relativeTranslation.multiply(-1f); // 0.935 scaling is not even needed :D - //$$ final float bodyOffset = 0.8f; // Distance from the base origin to the head pivot - //$$ relativeTranslation.multiplyWithTranslation(0, -bodyOffset, 0); // Shift matrix down - //$$ - //$$ relativeTranslation.multiplyWithTranslation(pos.getX(), pos.getY(), pos.getZ()); // Apply torso - //$$ // transformation - //$$ - //$$ relativeTranslation.multiply(MathUtil.ZP.rotation(rot.getZ())); - //$$ relativeTranslation.multiply(MathUtil.YP.rotation(rot.getY())); - //$$ relativeTranslation.multiply(MathUtil.XP.rotation(rot.getX())); - //$$ // relativeTranslation.multiply(Quaternion.fromXYZ(rot.getX(), rot.getY(), - //$$ // rot.getZ())); - //$$ - //$$ relativeTranslation.multiplyWithTranslation(-headPos.getX(), -headPos.getY(), headPos.getZ()); - //$$ - //$$ relativeTranslation.multiplyWithTranslation(0, bodyOffset, 0); // Roll back the first [0,1,0] translation. - //$$ - //$$ // calculate the actual rotations and - //$$ float realYaw = Mth.rotLerp(Minecraft.getInstance().getFrameTime(), entity.yBodyRotO, entity.yBodyRot); - //$$ - //$$ Matrix4f matrix = new Matrix4f(); // To multiply from LEFT, I have to create a new instance?! - //$$ matrix.setIdentity(); - //$$ matrix.multiply(Matrix4f.createScaleMatrix(-1, 1, 1)); // What is going on with this?! - //$$ - //$$ matrix.multiply(new Matrix4f(MathUtil.YP.rotationDegrees(realYaw))); - //$$ - //$$ matrix.multiply(Matrix4f.createScaleMatrix(1, 1, -1)); - //$$ matrix.multiply(relativeTranslation); - //$$ - //$$ Vector4f offset = new Vector4f(0, 0, 0, 1); - //$$ offset.transform(matrix); - //#else - //$$ Matrix4f relativeTranslation = new Matrix4f(); - //$$ relativeTranslation.setIdentity(); - //$$ relativeTranslation.multiply(-1f); // 0.935 scaling is not even needed :D - //$$ final float bodyOffset = 0.8f; // Distance from the base origin to the head pivot - //$$ relativeTranslation.multiply(Matrix4f.createTranslateMatrix(0, -bodyOffset, 0)); // Shift matrix down - //$$ - //$$ relativeTranslation.multiply(Matrix4f.createTranslateMatrix(pos.getX(), pos.getY(), pos.getZ())); // Apply torso - //$$ // transformation - //$$ - //$$ relativeTranslation.multiply(MathUtil.ZP.rotation(rot.getZ())); - //$$ relativeTranslation.multiply(MathUtil.YP.rotation(rot.getY())); - //$$ relativeTranslation.multiply(MathUtil.XP.rotation(rot.getX())); - //$$ // relativeTranslation.multiply(Quaternion.fromXYZ(rot.getX(), rot.getY(), - //$$ // rot.getZ())); - //$$ - //$$ relativeTranslation.multiply(Matrix4f.createTranslateMatrix(-headPos.getX(), -headPos.getY(), headPos.getZ())); - //$$ - //$$ relativeTranslation.multiply(Matrix4f.createTranslateMatrix(0, bodyOffset, 0)); // Roll back the first [0,1,0] translation. - //$$ - //$$ // calculate the actual rotations and - //$$ float realYaw = Mth.rotLerp(Minecraft.getInstance().getFrameTime(), entity.yBodyRotO, entity.yBodyRot); - //$$ - //$$ Matrix4f matrix = new Matrix4f(); // To multiply from LEFT, I have to create a new instance?! - //$$ matrix.setIdentity(); - //$$ matrix.multiply(Matrix4f.createScaleMatrix(-1, 1, 1)); // What is going on with this?! - //$$ - //$$ matrix.multiply(new Matrix4f(MathUtil.YP.rotationDegrees(realYaw))); - //$$ - //$$ matrix.multiply(Matrix4f.createScaleMatrix(1, 1, -1)); - //$$ matrix.multiply(relativeTranslation); - //$$ - //$$ Vector4f offset = new Vector4f(0, 0, 0, 1); - //$$ offset.transform(matrix); - //#endif +//? } else if > 1.17.0 { + + // Matrix4f relativeTranslation = new Matrix4f(); + // relativeTranslation.setIdentity(); + // relativeTranslation.multiply(-1f); // 0.935 scaling is not even needed :D + // final float bodyOffset = 0.8f; // Distance from the base origin to the head pivot + // relativeTranslation.multiplyWithTranslation(0, -bodyOffset, 0); // Shift matrix down + // + // relativeTranslation.multiplyWithTranslation(pos.getX(), pos.getY(), pos.getZ()); // Apply torso + // // transformation + // + // relativeTranslation.multiply(MathUtil.ZP.rotation(rot.getZ())); + // relativeTranslation.multiply(MathUtil.YP.rotation(rot.getY())); + // relativeTranslation.multiply(MathUtil.XP.rotation(rot.getX())); + // // relativeTranslation.multiply(Quaternion.fromXYZ(rot.getX(), rot.getY(), + // // rot.getZ())); + // + // relativeTranslation.multiplyWithTranslation(-headPos.getX(), -headPos.getY(), headPos.getZ()); + // + // relativeTranslation.multiplyWithTranslation(0, bodyOffset, 0); // Roll back the first [0,1,0] translation. + // + // // calculate the actual rotations and + // float realYaw = Mth.rotLerp(Minecraft.getInstance().getFrameTime(), entity.yBodyRotO, entity.yBodyRot); + // + // Matrix4f matrix = new Matrix4f(); // To multiply from LEFT, I have to create a new instance?! + // matrix.setIdentity(); + // matrix.multiply(Matrix4f.createScaleMatrix(-1, 1, 1)); // What is going on with this?! + // + // matrix.multiply(new Matrix4f(MathUtil.YP.rotationDegrees(realYaw))); + // + // matrix.multiply(Matrix4f.createScaleMatrix(1, 1, -1)); + // matrix.multiply(relativeTranslation); + // + // Vector4f offset = new Vector4f(0, 0, 0, 1); + // offset.transform(matrix); +//? } else { + + // Matrix4f relativeTranslation = new Matrix4f(); + // relativeTranslation.setIdentity(); + // relativeTranslation.multiply(-1f); // 0.935 scaling is not even needed :D + // final float bodyOffset = 0.8f; // Distance from the base origin to the head pivot + // relativeTranslation.multiply(Matrix4f.createTranslateMatrix(0, -bodyOffset, 0)); // Shift matrix down + // + // relativeTranslation.multiply(Matrix4f.createTranslateMatrix(pos.getX(), pos.getY(), pos.getZ())); // Apply torso + // // transformation + // + // relativeTranslation.multiply(MathUtil.ZP.rotation(rot.getZ())); + // relativeTranslation.multiply(MathUtil.YP.rotation(rot.getY())); + // relativeTranslation.multiply(MathUtil.XP.rotation(rot.getX())); + // // relativeTranslation.multiply(Quaternion.fromXYZ(rot.getX(), rot.getY(), + // // rot.getZ())); + // + // relativeTranslation.multiply(Matrix4f.createTranslateMatrix(-headPos.getX(), -headPos.getY(), headPos.getZ())); + // + // relativeTranslation.multiply(Matrix4f.createTranslateMatrix(0, bodyOffset, 0)); // Roll back the first [0,1,0] translation. + // + // // calculate the actual rotations and + // float realYaw = Mth.rotLerp(Minecraft.getInstance().getFrameTime(), entity.yBodyRotO, entity.yBodyRot); + // + // Matrix4f matrix = new Matrix4f(); // To multiply from LEFT, I have to create a new instance?! + // matrix.setIdentity(); + // matrix.multiply(Matrix4f.createScaleMatrix(-1, 1, 1)); // What is going on with this?! + // + // matrix.multiply(new Matrix4f(MathUtil.YP.rotationDegrees(realYaw))); + // + // matrix.multiply(Matrix4f.createScaleMatrix(1, 1, -1)); + // matrix.multiply(relativeTranslation); + // + // Vector4f offset = new Vector4f(0, 0, 0, 1); + // offset.transform(matrix); +//? } // You may use the Y offset too. new Vector, since it already cancels out all // deltas diff --git a/src/test/java/dev/tr7zw/tests/MixinTests.java b/src/test/java/dev/tr7zw/tests/MixinTests.java index cf04c454..9fd822f2 100644 --- a/src/test/java/dev/tr7zw/tests/MixinTests.java +++ b/src/test/java/dev/tr7zw/tests/MixinTests.java @@ -1,4 +1,5 @@ -//#if MC >= 11800 +//? if >= 1.18.0 { + package dev.tr7zw.tests; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -54,4 +55,4 @@ void testMixins() { } } -//#endif \ No newline at end of file +//? } From 455a8cb752ef2addb2b7b053471c96f4f24514f5 Mon Sep 17 00:00:00 2001 From: tr7zw Date: Fri, 31 Oct 2025 19:16:07 +0100 Subject: [PATCH 3/8] Add MixinExtras --- gradle-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/gradle-compose.yml b/gradle-compose.yml index 0f03bdd0..d376ac86 100644 --- a/gradle-compose.yml +++ b/gradle-compose.yml @@ -43,6 +43,7 @@ enabledFlags: - includeLibs - addTRansitionLib - addTRenderLib + - mixinextras rootProject: template: "." subProjects: From 8c3bffc9fdf1ea013d992fab53cb86e73ef1ea26 Mon Sep 17 00:00:00 2001 From: tr7zw Date: Fri, 31 Oct 2025 19:44:39 +0100 Subject: [PATCH 4/8] Get builds building --- .../firstperson/FirstPersonBootstrap.java | 85 ++++++++++--------- .../firstperson/FirstPersonModelCore.java | 37 ++++---- .../firstperson/FirstPersonModelMod.java | 6 +- .../dev/tr7zw/firstperson/InventoryUtil.java | 30 +++---- .../dev/tr7zw/firstperson/LogicHandler.java | 4 +- .../access/LivingEntityRenderStateAccess.java | 8 ++ .../firstperson/access/PlayerModelAccess.java | 4 +- .../config/ConfigScreenProvider.java | 15 ++-- .../forge/RenderHandEventListener.java | 82 +++++++++--------- .../mixins/ArmorFeatureRendererMixin.java | 12 +-- .../mixins/CustomHeadLayerMixin.java | 9 +- .../firstperson/mixins/ElytraLayerMixin.java | 13 +-- .../mixins/EntityRendererMixin.java | 3 +- .../mixins/FeatureRendererMixin.java | 42 ++++----- .../mixins/FishingBobberRendererMixin.java | 21 ++--- .../mixins/HeldItemFeatureRendererMixin.java | 18 ++-- .../mixins/HeldItemRendererMixin.java | 14 +-- .../mixins/LivingEntityRendererMixin.java | 52 ++++++------ .../firstperson/mixins/PlayerModelMixin.java | 4 +- .../mixins/PlayerRendererMixin.java | 30 ++++--- .../mixins/RenderDispatcherMixin.java | 58 ++++++------- .../mixins/StuckInBodyLayerMixin.java | 17 ++-- .../mixins/WorldRendererMixin.java | 23 ++--- src/main/resources/firstperson.mixins.json | 56 ++++++------ src/test/java/dev/tr7zw/tests/MixinTests.java | 8 +- 25 files changed, 347 insertions(+), 304 deletions(-) diff --git a/src/main/java/dev/tr7zw/firstperson/FirstPersonBootstrap.java b/src/main/java/dev/tr7zw/firstperson/FirstPersonBootstrap.java index 56a6814e..ab162929 100644 --- a/src/main/java/dev/tr7zw/firstperson/FirstPersonBootstrap.java +++ b/src/main/java/dev/tr7zw/firstperson/FirstPersonBootstrap.java @@ -1,43 +1,48 @@ //? if forge { +/* + package dev.tr7zw.firstperson; -// package dev.tr7zw.firstperson; -// -// import net.minecraftforge.api.distmarker.Dist; -// import net.minecraftforge.fml.DistExecutor; -// import net.minecraftforge.fml.common.Mod; -// import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -// import dev.tr7zw.transition.loader.ModLoaderUtil; -// -// @Mod("firstperson") -// public class FirstPersonBootstrap { -// -// public FirstPersonBootstrap(FMLJavaModLoadingContext context) { -// ModLoaderUtil.setModLoadingContext(context); -// DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { -// new FirstPersonModelMod().sharedSetup(); -// }); -// } -// public FirstPersonBootstrap() { -// this(FMLJavaModLoadingContext.get()); -// } -// -// } -//? } else if neoforge { + import net.minecraftforge.api.distmarker.Dist; + import net.minecraftforge.fml.DistExecutor; + import net.minecraftforge.fml.common.Mod; + import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; + import dev.tr7zw.transition.loader.ModLoaderUtil; -// package dev.tr7zw.firstperson; -// -// import net.neoforged.api.distmarker.Dist; -// import net.neoforged.fml.loading.FMLEnvironment; -// import net.neoforged.fml.common.Mod; -// -// @Mod("firstperson") -// public class FirstPersonBootstrap { -// -// public FirstPersonBootstrap() { -// if(FMLEnvironment.dist == Dist.CLIENT) { -// dev.tr7zw.transition.loader.ModLoaderEventUtil.registerClientSetupListener(() -> new FirstPersonModelMod().sharedSetup()); -// } -// } -// -// } -//? } + @Mod("firstperson") + public class FirstPersonBootstrap { + + public FirstPersonBootstrap(FMLJavaModLoadingContext context) { + ModLoaderUtil.setModLoadingContext(context); + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { + new FirstPersonModelMod().sharedSetup(); + }); + } + public FirstPersonBootstrap() { + this(FMLJavaModLoadingContext.get()); + } + + } +*///? } else if neoforge { +/* + package dev.tr7zw.firstperson; + +import net.neoforged.api.distmarker.Dist; +import net.neoforged.fml.loading.FMLEnvironment; +import net.neoforged.fml.common.Mod; + + @Mod("firstperson") + public class FirstPersonBootstrap { + + public FirstPersonBootstrap() { + //? if < 1.21.9 { + /^ + if (FMLEnvironment.dist == Dist.CLIENT) { + ^///? } else { + + if (FMLEnvironment.getDist() == Dist.CLIENT) { + //? } + dev.tr7zw.transition.loader.ModLoaderEventUtil.registerClientSetupListener(() -> new FirstPersonModelMod().sharedSetup()); + } + } +} +*///? } diff --git a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java index b7749e91..e1e79e6d 100644 --- a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java +++ b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java @@ -25,7 +25,8 @@ public abstract class FirstPersonModelCore extends FirstPersonBase { private LogicHandler logicHandler; public static FirstPersonModelCore instance; private boolean isHeld = false; - private KeyMapping keyBinding = new KeyMapping("key.firstperson.toggle", 295, new KeyMapping.Category(ResourceLocation.fromNamespaceAndPath("firstperson", "keybind"))); + private KeyMapping keyBinding = new KeyMapping("key.firstperson.toggle", 295, + new KeyMapping.Category(ResourceLocation.fromNamespaceAndPath("firstperson", "keybind"))); private boolean lateInit = true; @Deprecated public static boolean enabled = true; @@ -48,20 +49,20 @@ public void sharedSetup() { ModLoaderUtil.disableDisplayTest(); ModLoaderUtil.registerConfigScreen(ConfigScreenProvider::createConfigScreen); -//? if neoforge { - - // ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); -//? } -//? if forge { - -// //? if >= 1.21.6 { - - // // net.minecraftforge.client.event.RenderHandEvent.BUS.addListener(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); -// //? } else { - - // // ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); -// //? } -//? } + //? if neoforge { + /* + ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); + *///? } + //? if forge { + /* + //? if >= 1.21.6 { + + net.minecraftforge.client.event.RenderHandEvent.BUS.addListener(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); + //? } else { + + // ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); + //? } + *///? } ModSupportLoader.loadSupport(); } @@ -118,17 +119,17 @@ public void setEnabled(boolean enabled) { public void updatePlayerLayers() { PlayerRendererAccess access = null; -//? if >= 1.21.6 { + //? if >= 1.21.6 { access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() .getRenderer(new AvatarRenderState()); -//? } else { + //? } else { // if (Minecraft.getInstance().player != null) { // access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() // .getRenderer(Minecraft.getInstance().player); // } -//? } + //? } if (access != null) { access.updatePartsList(lastCameraType != CameraType.FIRST_PERSON); } diff --git a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java index fa0b53ac..f58c9576 100644 --- a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java +++ b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java @@ -6,16 +6,16 @@ //? } public class FirstPersonModelMod extends FirstPersonModelCore -//? if fabric { + //? if fabric { implements ClientModInitializer //? } { -//? if fabric { + //? if fabric { @Override -//? } + //? } public void onInitializeClient() { sharedSetup(); } diff --git a/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java b/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java index f5850a75..51a6229c 100644 --- a/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java +++ b/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java @@ -9,53 +9,53 @@ public class InventoryUtil { public static Inventory getInventory(Player player) { -//? if >= 1.17.0 { + //? if >= 1.17.0 { return player.getInventory(); -//? } else { + //? } else { // return player.inventory; -//? } + //? } } public static ItemStack getSelected(Inventory inventory) { -//? if >= 1.21.5 { + //? if >= 1.21.5 { return inventory.getSelectedItem(); -//? } else { + //? } else { // return inventory.getSelected(); -//? } + //? } } public static ItemStack getOffhand(Inventory inventory) { -//? if >= 1.21.5 { + //? if >= 1.21.5 { return inventory.getItem(Inventory.SLOT_OFFHAND); -//? } else { + //? } else { // return inventory.offhand.get(0); -//? } + //? } } public static int getSelectedId(Inventory inventory) { -//? if >= 1.21.5 { + //? if >= 1.21.5 { return inventory.getSelectedSlot(); -//? } else { + //? } else { // return inventory.selected; -//? } + //? } } public static List getNonEquipmentItems(Inventory inventory) { -//? if >= 1.21.5 { + //? if >= 1.21.5 { return inventory.getNonEquipmentItems(); -//? } else { + //? } else { // return inventory.items; -//? } + //? } } } diff --git a/src/main/java/dev/tr7zw/firstperson/LogicHandler.java b/src/main/java/dev/tr7zw/firstperson/LogicHandler.java index f25a6aac..deadee01 100644 --- a/src/main/java/dev/tr7zw/firstperson/LogicHandler.java +++ b/src/main/java/dev/tr7zw/firstperson/LogicHandler.java @@ -54,12 +54,12 @@ void registerDefaultHandlers() { || autoDisableItems.contains(client.player.getOffhandItem().getItem())) { return true; } -//? if >= 1.17.0 { + //? if >= 1.17.0 { if (client.player.isScoping()) { return true; } -//? } + //? } return false; }); } diff --git a/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java b/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java index 48c1525a..f22d12d9 100644 --- a/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java +++ b/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java @@ -5,23 +5,31 @@ public interface LivingEntityRenderStateAccess { void setIsCameraEntity(boolean value); + boolean isCameraEntity(); default void setHideArms(boolean value) { setHideLeftArm(value); setHideRightArm(value); } + void setHideRightArm(boolean value); + void setHideLeftArm(boolean value); + boolean hideLeftArm(); + boolean hideRightArm(); void setHideBody(boolean value); + boolean hideBody(); void setArmOffset(float offset); + float getArmOffset(); void setRenderOffset(Vec3 offset); + Vec3 getRenderOffset(); } diff --git a/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java b/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java index e44557f4..71855ac9 100644 --- a/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java +++ b/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java @@ -7,9 +7,9 @@ public interface PlayerModelAccess { -//? if < 1.21.3 { + //? if < 1.21.3 { // ModelPart getCloak(); -//? } + //? } } diff --git a/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java b/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java index 1e9a0554..cc4107e1 100644 --- a/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java +++ b/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java @@ -23,11 +23,14 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.entity.layers.RenderLayer; -//? if >= 1.21.6 { +//? if >= 1.21.6 && < 1.21.9 { +/* +import net.minecraft.client.renderer.entity.state.PlayerRenderState; +*///? } + //? if >= 1.21.9 { -//import net.minecraft.client.renderer.entity.state.PlayerRenderState; -//? } import net.minecraft.client.renderer.entity.state.AvatarRenderState; +//? } import net.minecraft.network.chat.CommonComponents; import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.Item; @@ -152,17 +155,17 @@ public CustomConfigScreen(Screen previous) { // Layers PlayerRendererAccess access = null; -//? if >= 1.21.6 { + //? if >= 1.21.6 { access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() .getRenderer(new AvatarRenderState()); -//? } else { + //? } else { // if (Minecraft.getInstance().player != null) { // access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() // .getRenderer(Minecraft.getInstance().player); // } -//? } + //? } if (access != null) { WListPanel layerList = new WListPanel( access.getRenderLayers(), () -> new WToggleButton(ComponentProvider.EMPTY), (s, l) -> { diff --git a/src/main/java/dev/tr7zw/firstperson/forge/RenderHandEventListener.java b/src/main/java/dev/tr7zw/firstperson/forge/RenderHandEventListener.java index 38e63294..f1ddef9e 100644 --- a/src/main/java/dev/tr7zw/firstperson/forge/RenderHandEventListener.java +++ b/src/main/java/dev/tr7zw/firstperson/forge/RenderHandEventListener.java @@ -1,43 +1,43 @@ //? if forge || neoforge { +/* + package dev.tr7zw.firstperson.forge; -// package dev.tr7zw.firstperson.forge; -// -// import dev.tr7zw.firstperson.FirstPersonModelCore; -// //? if forge { - -// // import net.minecraftforge.client.event.RenderHandEvent; -// //? if >= 1.21.6 { - -// // import net.minecraftforge.eventbus.api.listener.SubscribeEvent; -// //? } else { - -// // import net.minecraftforge.eventbus.api.SubscribeEvent; -// //? } -// //? } else { - -// // import net.neoforged.bus.api.SubscribeEvent; -// // import net.neoforged.neoforge.client.event.RenderHandEvent; -// //? } -// -// public class RenderHandEventListener { -// -// @SubscribeEvent -// //? if >= 1.21.6 && forge { - -// // public boolean onRender(RenderHandEvent e) { -// // if(FirstPersonModelCore.instance.isEnabled() && !FirstPersonModelCore.instance.getLogicHandler().showVanillaHands()) { -// // return true; -// // } -// // return false; -// // } -// //? } else { - -// // public void onRender(RenderHandEvent e) { -// // if(FirstPersonModelCore.instance.isEnabled() && !FirstPersonModelCore.instance.getLogicHandler().showVanillaHands()) { -// // e.setCanceled(true); -// // } -// // } -// //? } -// -// } -//? } + import dev.tr7zw.firstperson.FirstPersonModelCore; + + //? if >= 1.21.6 && forge { +/^ + import net.minecraftforge.eventbus.api.listener.SubscribeEvent; + ^///? } else if forge { + + // import net.minecraftforge.eventbus.api.SubscribeEvent; + //? } + + +//? if neoforge { +/^ + import net.neoforged.bus.api.SubscribeEvent; + import net.neoforged.neoforge.client.event.RenderHandEvent; + ^///? } + + public class RenderHandEventListener { + + @SubscribeEvent + //? if >= 1.21.6 && forge { +/^ + public boolean onRender(net.minecraftforge.client.event.RenderHandEvent e) { + if(FirstPersonModelCore.instance.isEnabled() && !FirstPersonModelCore.instance.getLogicHandler().showVanillaHands()) { + return true; + } + return false; + } + ^///? } else { + + public void onRender(RenderHandEvent e) { + if(FirstPersonModelCore.instance.isEnabled() && !FirstPersonModelCore.instance.getLogicHandler().showVanillaHands()) { + e.setCanceled(true); + } + } + //? } + + } +*///? } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java index 4beaedd7..e15cc838 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java @@ -56,7 +56,7 @@ private static void shouldRender(Equippable equippable, EquipmentSlot equipmentS hideLeftArm = true; hideRightArm = true; } else if (FirstPersonModelCore.instance.getLogicHandler().dynamicHandsEnabled()) {// TODO DYNAMIC HAND - + if (!Minecraft.getInstance().player.getOffhandItem().isEmpty()) hideLeftArm = true; if (!Minecraft.getInstance().player.getMainHandItem().isEmpty()) @@ -65,7 +65,7 @@ private static void shouldRender(Equippable equippable, EquipmentSlot equipmentS } } } - + @Inject(method = "setPartVisibility", at = @At("TAIL")) protected void setPartVisibility(A model, EquipmentSlot slot, CallbackInfo ci) { if (hideLeftArm) { @@ -79,11 +79,11 @@ protected void setPartVisibility(A model, EquipmentSlot slot, CallbackInfo ci) { ((ModelPartBase) (Object) model.rightArm).showAgain(); } } - -//? } else { - + + //? } else { + // @Inject(method = "renderArmorPiece", at = @At("HEAD"), cancellable = true) -//? } + //? } private void renderArmor(PoseStack matrices, MultiBufferSource vertexConsumers, T livingEntity, EquipmentSlot equipmentSlot, int i, A bipedEntityModel, CallbackInfo info) { if (livingEntity != fpmMcInstance.cameraEntity) { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java index f8510210..b83c2e79 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java @@ -25,14 +25,15 @@ public class CustomHeadLayerMixin { @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;FF)V", at = @At("HEAD"), cancellable = true) -//? if >= 1.21.3 { + //? if >= 1.21.3 { - public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, LivingEntityRenderState livingEntityRenderState, float f, float g, CallbackInfo info) { -//? } else { + public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, + LivingEntityRenderState livingEntityRenderState, float f, float g, CallbackInfo info) { + //? } else { // public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntity livingEntity, // float f, float g, float h, float j, float k, float l, CallbackInfo info) { -//? } + //? } if (((LivingEntityRenderStateAccess) livingEntityRenderState).isCameraEntity()) { info.cancel(); } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java index 3131e711..401be155 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java @@ -35,18 +35,19 @@ //? } public class ElytraLayerMixin { -//? if >= 1.21.3 { + //? if >= 1.21.3 { @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/HumanoidRenderState;FF)V", at = @At("HEAD"), cancellable = true) - public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, HumanoidRenderState humanoidRenderState, float f, float g, CallbackInfo ci) { -//? } else { + public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, + HumanoidRenderState humanoidRenderState, float f, float g, CallbackInfo ci) { + //? } else { // @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) // public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, T livingEntity, float f, // float g, float h, float j, float k, float l, CallbackInfo ci) { -//? } - if (((LivingEntityRenderStateAccess) humanoidRenderState).isCameraEntity() && humanoidRenderState.isVisuallySwimming - ) { + //? } + if (((LivingEntityRenderStateAccess) humanoidRenderState).isCameraEntity() + && humanoidRenderState.isVisuallySwimming) { ci.cancel(); } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/EntityRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/EntityRendererMixin.java index 22849f42..4456b12c 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/EntityRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/EntityRendererMixin.java @@ -15,7 +15,8 @@ public class EntityRendererMixin { @WrapOperation(method = "finalizeRenderState", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/EntityRenderer;extractShadow(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;Lnet/minecraft/client/Minecraft;Lnet/minecraft/world/level/Level;)V")) - private void offsetRendering(EntityRenderer instance, EntityRenderState entityRenderState, Minecraft mc, Level level, Operation original) { + private void offsetRendering(EntityRenderer instance, EntityRenderState entityRenderState, Minecraft mc, + Level level, Operation original) { if (entityRenderState instanceof LivingEntityRenderStateAccess access && access.isCameraEntity()) { Vec3 vec3 = access.getRenderOffset(); entityRenderState.x -= vec3.x; diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java index 803e8822..a062f03a 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java @@ -32,58 +32,58 @@ @NoArgsConstructor(access = AccessLevel.PRIVATE) public abstract class FeatureRendererMixin { /*@Inject(method = "renderColoredCutoutModel", at = @At("HEAD"), cancellable = true) -//? if >= 1.21.3 { - + //? if >= 1.21.3 { + private static void renderColoredCutoutModel(Model model, ResourceLocation resourceLocation, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, LivingEntityRenderState livingEntityRenderState, int j, int k, CallbackInfo ci) { -//? } else if >= 1.21.0 { - + //? } else if >= 1.21.0 { + // private static void removeHead(EntityModel model, ResourceLocation texture, // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, int color, CallbackInfo ci) { -//? } else { - + //? } else { + // private static void removeHead(EntityModel model, ResourceLocation texture, // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, float red, float green, // float blue, CallbackInfo ci) { -//? } + //? } if (FirstPersonModelCore.instance.isRenderingPlayer()) { if (!(model instanceof HeadedModel)) { ci.cancel(); return; } ((ModelPartBase) (Object) ((HeadedModel) model).getHead()).setHidden(); -//? if < 1.21.4 { - + //? if < 1.21.4 { + // if (model instanceof VillagerHeadModel villager) { // villager.hatVisible(false); // } -//? } + //? } } } - + @Inject(method = "renderColoredCutoutModel", at = @At("RETURN"), cancellable = true) -//? if >= 1.21.3 { - + //? if >= 1.21.3 { + private static void removeReturn(EntityModel model, ResourceLocation resourceLocation, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntityRenderState livingEntityRenderState, int j, CallbackInfo ci) { -//? } else if >= 1.21.0 { - + //? } else if >= 1.21.0 { + // private static void removeReturn(EntityModel model, ResourceLocation texture, // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, int color, CallbackInfo ci) { -//? } else { - + //? } else { + // private static void removeReturn(EntityModel model, ResourceLocation texture, // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, float red, float green, // float blue, CallbackInfo ci) { -//? } + //? } if (model instanceof HeadedModel) { ((ModelPartBase) (Object) ((HeadedModel) model).getHead()).showAgain(); -//? if < 1.21.4 { - + //? if < 1.21.4 { + // if (model instanceof VillagerHeadModel villager) { // villager.hatVisible(true); // } -//? } + //? } } }*/ diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java index 1cb55a87..577a8231 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java @@ -38,26 +38,27 @@ private boolean doCorrect() { && !FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(); } -//? if <= 1.20.4 { + //? if <= 1.20.4 { // @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Options;getCameraType()Lnet/minecraft/client/CameraType;")) -//? } else { + //? } else { @Redirect(method = "getPlayerHandPos", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Options;getCameraType()Lnet/minecraft/client/CameraType;")) -//? } + //? } private CameraType redirect(Options gameOptions) { return doCorrect() ? CameraType.THIRD_PERSON_BACK : gameOptions.getCameraType(); } @Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/FishingHookRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At("HEAD")) -//? if >= 1.21.3 { + //? if >= 1.21.3 { - public void render(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState cameraRenderState, CallbackInfo ci) { -//? } else { + public void render(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, + SubmitNodeCollector submitNodeCollector, CameraRenderState cameraRenderState, CallbackInfo ci) { + //? } else { // private void calcOffset(FishingHook fishingBobberEntity, float f, float g, PoseStack matrixStack, // MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { -//? } + //? } if (FirstPersonModelCore.instance.isRenderingPlayer()) { offsetvec3d = FirstPersonModelCore.instance.getLogicHandler().getOffset();// getPositionOffset((Player) // fishingBobberEntity.getOwner(), @@ -67,7 +68,7 @@ public void render(FishingHookRenderState fishingHookRenderState, PoseStack pose } } -//? if <= 1.20.4 { + //? if <= 1.20.4 { // @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getX()D")) // private double offsetX(Player playerEntity) { @@ -88,12 +89,12 @@ public void render(FishingHookRenderState fishingHookRenderState, PoseStack pose // private double prevOffsetZ(Player playerEntity) { // return playerEntity.zo + offsetvec3d.z(); // } -//? } else { + //? } else { @Inject(method = "getPlayerHandPos", at = @At("RETURN"), cancellable = true) private void getPlayerHandPosOffset(Player player, float f, float g, CallbackInfoReturnable ci) { ci.setReturnValue(ci.getReturnValue().add(offsetvec3d)); } -//? } + //? } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java index a1a63685..840f2c1e 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java @@ -28,8 +28,8 @@ // import net.minecraft.client.resources.model.BakedModel; //? } else { -// import net.minecraft.client.player.LocalPlayer; -// import net.minecraft.world.entity.LivingEntity; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.LivingEntity; //? } //? if >= 1.19.4 { @@ -55,23 +55,25 @@ public class HeldItemFeatureRendererMixin { @Inject(at = @At("HEAD"), method = "submitArmWithItem", cancellable = true) -//? if >= 1.21.4 { + //? if >= 1.21.4 { - private void renderArmWithItem(ArmedEntityRenderState armedEntityRenderState, ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, CallbackInfo ci) { -//? } else if >= 1.21.3 { + private void renderArmWithItem(ArmedEntityRenderState armedEntityRenderState, + ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, + SubmitNodeCollector submitNodeCollector, int i, CallbackInfo ci) { + //? } else if >= 1.21.3 { // private void renderArmWithItem(LivingEntityRenderState livingEntityRenderState, BakedModel bakedModel, // ItemStack itemStack, ItemDisplayContext itemDisplayContext, HumanoidArm humanoidArm, PoseStack poseStack, // MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { -//? } else if >= 1.19.4 { + //? } else if >= 1.19.4 { // private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, ItemDisplayContext itemDisplayContext, // HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { -//? } else { + //? } else { // private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, TransformType transformType, // HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { -//? } + //? } LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) armedEntityRenderState; if (access.hideLeftArm() && access.hideRightArm() && !FirstPersonModelCore.instance.getLogicHandler().lookingDown(armedEntityRenderState)) { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java index 1274b2de..b55289f2 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java @@ -42,11 +42,13 @@ public abstract class HeldItemRendererMixin { private ItemStack offHandItem; @Shadow - protected abstract void renderPlayerArm(PoseStack arg, SubmitNodeCollector arg2, int i, float g, float h, HumanoidArm arg3); + protected abstract void renderPlayerArm(PoseStack arg, SubmitNodeCollector arg2, int i, float g, float h, + HumanoidArm arg3); @Inject(at = @At("HEAD"), method = "renderArmWithItem", cancellable = true) - public void renderFirstPersonItem(AbstractClientPlayer player, float deltaTick, float pitch, InteractionHand hand, float swingProgress, - ItemStack item, float equipProgress, PoseStack matrices, SubmitNodeCollector submitNodeCollector, int light, CallbackInfo info) { + public void renderFirstPersonItem(AbstractClientPlayer player, float deltaTick, float pitch, InteractionHand hand, + float swingProgress, ItemStack item, float equipProgress, PoseStack matrices, + SubmitNodeCollector submitNodeCollector, int light, CallbackInfo info) { if (!FirstPersonModelCore.instance.isEnabled()) { return; @@ -70,13 +72,13 @@ public void renderFirstPersonItem(AbstractClientPlayer player, float deltaTick, // double hands if (FirstPersonModelCore.instance.getConfig().vanillaHandsMode != VanillaHands.ALL_DOUBLE || player.getMainHandItem().getItem() == Items.FILLED_MAP -//? if >= 1.17.0 { + //? if >= 1.17.0 { || player.isScoping()) { -//? } else { + //? } else { // || false) { -//? } + //? } return; } boolean bl = hand == InteractionHand.MAIN_HAND; diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java index c9d92cc9..2443c5b6 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java @@ -55,8 +55,8 @@ public abstract class LivingEntityRendererMixin { private static List revert = new ArrayList(); /*// pull all registers to try to get rid of the head or other bodyparts -//? if >= 1.21.3 { - + //? if >= 1.21.3 { + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/EntityModel;setupAnim(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;)V", shift = Shift.AFTER), cancellable = true) public void render(LivingEntityRenderState livingEntityRenderState, PoseStack matrixStack, MultiBufferSource multiBufferSource, int i, CallbackInfo info) { @@ -67,12 +67,12 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma return; } LivingEntity livingEntity = (LivingEntity) entity; -//? } else { - + //? } else { + // @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/EntityModel;setupAnim(Lnet/minecraft/world/entity/Entity;FFFFF)V", shift = Shift.AFTER), cancellable = true) // public void renderPostAnim(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, // MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { -//? } + //? } if (!revert.isEmpty()) { for (Runnable r : revert) { r.run(); @@ -113,7 +113,7 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma humanModel.leftArm.xRot += offset; // humanModel.rightArm.offsetRotation(new Vector3f(offset, 0, 0)); // humanModel.leftArm.offsetRotation(new Vector3f(offset, 0, 0)); - + if (!FirstPersonModelCore.instance.getLogicHandler().lookingDown()) {// TODO DYNAMIC HAND if (!InventoryUtil.getOffhand(InventoryUtil.getInventory(player)).isEmpty() || livingEntity.getMainHandItem().getItem().equals(Items.FILLED_MAP)) { @@ -131,15 +131,15 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma } } } -//? if < 1.21.4 { - + //? if < 1.21.4 { + // if (model instanceof VillagerHeadModel villaterHead) { // villaterHead.hatVisible(false); // revert.add(() -> { // villaterHead.hatVisible(true); // }); // } -//? } + //? } if (model instanceof PlayerModel playerModel) { headShouldBeHidden = true; ((ModelPartBase) (Object) playerModel.hat).setHidden(); @@ -159,7 +159,7 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma playerModel.leftSleeve.xRot += offset; // playerModel.rightSleeve.offsetRotation(new Vector3f(offset, 0, 0)); // playerModel.leftSleeve.offsetRotation(new Vector3f(offset, 0, 0)); - + if (!FirstPersonModelCore.instance.getLogicHandler().lookingDown()) {// TODO DYNAMIC HAND if (!InventoryUtil.getOffhand(InventoryUtil.getInventory(player)).isEmpty() || livingEntity.getMainHandItem().getItem().equals(Items.FILLED_MAP)) { @@ -177,21 +177,21 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma if (livingEntity instanceof AbstractClientPlayer player && (Object) model instanceof PlayerModel playerModel && FirstPersonModelCore.instance.getLogicHandler().isSwimming(player)) { ((ModelPartBase) (Object) playerModel.body).setHidden(); -//? if >= 1.21.3 { - + //? if >= 1.21.3 { + if (livingEntityRenderState instanceof PlayerRenderState prs) { prs.showCape = false; } -//? } else { - + //? } else { + // ((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).setHidden(); -//? } + //? } revert.add(() -> { ((ModelPartBase) (Object) playerModel.body).showAgain(); -//? if < 1.21.3 { - + //? if < 1.21.3 { + // ((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).showAgain(); -//? } + //? } }); } if (!headShouldBeHidden) { @@ -203,20 +203,22 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma }*/ @Inject(method = "extractRenderState(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;F)V", at = @At("HEAD")) - private void checkIfCameraEntity(LivingEntity livingEntity, LivingEntityRenderState livingEntityRenderState, float f, CallbackInfo ci) { - ((LivingEntityRenderStateAccess) livingEntityRenderState).setIsCameraEntity(FirstPersonModelCore.instance.isRenderingPlayer()); + private void checkIfCameraEntity(LivingEntity livingEntity, LivingEntityRenderState livingEntityRenderState, + float f, CallbackInfo ci) { + ((LivingEntityRenderStateAccess) livingEntityRenderState) + .setIsCameraEntity(FirstPersonModelCore.instance.isRenderingPlayer()); } /*@Inject(method = "render", at = @At("RETURN")) -//? if >= 1.21.3 { - + //? if >= 1.21.3 { + public void renderEnd(LivingEntityRenderState livingEntityRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo info) { -//? } else { - + //? } else { + // public void renderReturn(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, // MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { -//? } + //? } if (!revert.isEmpty()) { for (Runnable r : revert) { r.run(); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java index 62b765b1..0b4f0ddd 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java @@ -15,7 +15,7 @@ @Mixin(value = PlayerModel.class) public class PlayerModelMixin implements PlayerModelAccess { -//? if < 1.21.3 { + //? if < 1.21.3 { // @Shadow // @Final @@ -25,6 +25,6 @@ public class PlayerModelMixin implements PlayerModelAcce // public ModelPart getCloak() { // return cloak; // } -//? } + //? } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java index 1716d4ea..7afebefa 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java @@ -34,9 +34,13 @@ import net.minecraft.client.renderer.entity.EntityRendererProvider.Context; //? } -//? if >= 1.21.3 { +//? if >= 1.21.6 && < 1.21.9 { +/* +import net.minecraft.client.renderer.entity.state.PlayerRenderState; +*///? } + //? if >= 1.21.9 { -//import net.minecraft.client.renderer.entity.state.PlayerRenderState; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; //? } /** @@ -48,31 +52,31 @@ @Mixin(value = AvatarRenderer.class, priority = 500) public abstract class PlayerRendererMixin extends LivingEntityRenderer implements PlayerRendererAccess { -//? if >= 1.18.2 { + //? if >= 1.18.2 { public PlayerRendererMixin(Context context, PlayerModel model, float shadowRadius) { super(context, model, shadowRadius); } -//? } else { + //? } else { // public PlayerRendererMixin(EntityRenderDispatcher entityRenderDispatcher, EntityModel entityModel, float f) { // super(entityRenderDispatcher, entityModel, f); // } -//? } + //? } private static Minecraft fpmMcInstance = Minecraft.getInstance(); private List removedLayers = new ArrayList<>(); @Inject(method = "getRenderOffset", at = @At("RETURN"), cancellable = true) -//? if >= 1.21.3 { + //? if >= 1.21.3 { public void getRenderOffset(AvatarRenderState playerRenderState, CallbackInfoReturnable ci) { AbstractClientPlayer entity = Minecraft.getInstance().player; float delta = Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(false); -//? } else { + //? } else { // public void getRenderOffset(AbstractClientPlayer entity, float delta, CallbackInfoReturnable ci) { -//? } + //? } LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) playerRenderState; if (access.isCameraEntity()) { Vec3 offset = ci.getReturnValue().add(access.getRenderOffset()); @@ -88,14 +92,14 @@ public void getRenderOffset(AvatarRenderState playerRenderState, CallbackInfoRet @Inject(method = "extractRenderState(Lnet/minecraft/world/entity/Avatar;Lnet/minecraft/client/renderer/entity/state/AvatarRenderState;F)V", at = @At("TAIL")) public void extractRenderState(Avatar avatar, AvatarRenderState avatarRenderState, float delta, CallbackInfo ci) { LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) avatarRenderState; - if (!access.isCameraEntity()) return; + if (!access.isCameraEntity()) + return; if (FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(avatar)) { access.setHideArms(true); } else if (FirstPersonModelCore.instance.getLogicHandler().dynamicHandsEnabled()) { access.setArmOffset(Mth.clamp(-EntityUtil.getXRot(avatar) / 20 + 2, -0.0f, 0.7f)); if (!FirstPersonModelCore.instance.getLogicHandler().lookingDown(avatar)) {// TODO DYNAMIC HAND - if (!avatar.getOffhandItem().isEmpty() - || avatar.getMainHandItem().getItem().equals(Items.FILLED_MAP)) { + if (!avatar.getOffhandItem().isEmpty() || avatar.getMainHandItem().getItem().equals(Items.FILLED_MAP)) { access.setHideLeftArm(true); } if (!avatar.getMainHandItem().isEmpty()) { @@ -107,7 +111,9 @@ public void extractRenderState(Avatar avatar, AvatarRenderState avatarRenderStat access.setHideBody(true); avatarRenderState.showCape = false; } - if (FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(avatar, avatar.getMainHandItem(), avatar.getOffhandItem())) access.setHideArms(true); + if (FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(avatar, avatar.getMainHandItem(), + avatar.getOffhandItem())) + access.setHideArms(true); FirstPersonModelCore.instance.getLogicHandler().updatePositionOffset(avatar, delta); access.setRenderOffset(FirstPersonModelCore.instance.getLogicHandler().getOffset()); } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java index 8db2d37a..7e96a41f 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java @@ -47,19 +47,19 @@ public abstract class RenderDispatcherMixin { /*private static Minecraft fpmMcInstance = Minecraft.getInstance(); - -//? if >= 1.21.3 { - + + //? if >= 1.21.3 { + private static double tmpX; private static double tmpZ; - + @Inject(method = "renderShadow", at = @At("HEAD")) private static void renderShadow(PoseStack poseStack, MultiBufferSource multiBufferSource, EntityRenderState entityRenderState, float f, -//? if < 1.21.5 { - + //? if < 1.21.5 { + // float g, -//? } + //? } LevelReader levelReader, float h, CallbackInfo ci) { if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { poseStack.pushPose(); @@ -70,14 +70,14 @@ private static void renderShadow(PoseStack poseStack, MultiBufferSource multiBuf entityRenderState.z += FirstPersonModelCore.instance.getLogicHandler().getOffset().z; } } - + @Inject(method = "renderShadow", at = @At("RETURN")) private static void renderShadowEnd(PoseStack poseStack, MultiBufferSource multiBufferSource, EntityRenderState entityRenderState, float f, -//? if < 1.21.5 { - + //? if < 1.21.5 { + // float g, -//? } + //? } LevelReader levelReader, float h, CallbackInfo ci) { if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { entityRenderState.x = tmpX; @@ -85,24 +85,24 @@ private static void renderShadowEnd(PoseStack poseStack, MultiBufferSource multi poseStack.popPose(); } } - + @Inject(method = "renderHitbox", at = @At(value = "HEAD"), cancellable = true) private static void renderHitbox(PoseStack poseStack, VertexConsumer buffer, -//? if >= 1.21.5 { - + //? if >= 1.21.5 { + HitboxRenderState hitboxRenderState, -//? } else { - + //? } else { + // Entity entity, float red, float green, float blue, float alpha, -//? } + //? } CallbackInfo ci) { if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { ci.cancel(); } } - -//? } else { - + + //? } else { + // @Redirect(method = "renderShadow", at = @At(value = "invoke", target = "Lnet/minecraft/util/Mth;lerp(DDD)D", ordinal = 0)) // private static double shadowOffsetX(double delta, double old, double cur, PoseStack poseStack, // MultiBufferSource multiBufferSource, Entity entity, float f, float g, LevelReader levelReader, float h) { @@ -132,24 +132,24 @@ private static void renderHitbox(PoseStack poseStack, VertexConsumer buffer, // } // // @Inject(method = "renderHitbox", at = @At(value = "HEAD"), cancellable = true) -// //? if < 1.17.0 { - + // //? if < 1.17.0 { + // // private void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, CallbackInfo ci) { -// //? } else if < 1.21.0 { - + // //? } else if < 1.21.0 { + // // private static void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, // // CallbackInfo ci) { -// //? } else { - + // //? } else { + // // private static void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, // // float g, float h, float i, // // CallbackInfo ci) { -// //? } + // //? } // if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { // ci.cancel(); // } // } -//? } -*/ + //? } + */ } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java index 2f55ea10..bde982cd 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java @@ -14,9 +14,13 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.layers.StuckInBodyLayer; import net.minecraft.world.entity.LivingEntity; -//? if >= 1.21.3 { +//? if >= 1.21.6 && < 1.21.9 { +/* +import net.minecraft.client.renderer.entity.state.PlayerRenderState; +*///? } + //? if >= 1.21.9 { -//import net.minecraft.client.renderer.entity.state.PlayerRenderState; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; //? } /** @@ -25,16 +29,17 @@ @Mixin(StuckInBodyLayer.class) public class StuckInBodyLayerMixin { -//? if >= 1.21.3 { + //? if >= 1.21.3 { @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/AvatarRenderState;FF)V", at = @At("HEAD"), cancellable = true) - public void disableStuckFeatureLayer(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, AvatarRenderState avatarRenderState, float f, float g, CallbackInfo ci) { -//? } else { + public void disableStuckFeatureLayer(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, + AvatarRenderState avatarRenderState, float f, float g, CallbackInfo ci) { + //? } else { // @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) // public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, // T livingEntity, float f, float g, float h, float j, float k, float l, CallbackInfo ci) { -//? } + //? } if (((LivingEntityRenderStateAccess) avatarRenderState).isCameraEntity() && !FirstPersonModelCore.instance.getConfig().renderStuckFeatures) { ci.cancel(); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java index 62fb9a79..a1fdb8c0 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java @@ -54,29 +54,30 @@ public abstract class WorldRendererMixin { @Shadow private RenderBuffers renderBuffers; -//? if <= 1.20.4 { + //? if <= 1.20.4 { // @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) // public void render(PoseStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, // GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f matrix4f, CallbackInfo info) { -//? } else if < 1.21.0 { + //? } else if < 1.21.0 { // @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) // public void render(float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, // GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f matrix4f, Matrix4f matrix4f2, CallbackInfo info) { // PoseStack matrices = new PoseStack(); -//? } else if < 1.21.3 { + //? } else if < 1.21.3 { // @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) // public void render(DeltaTracker deltaTracker, boolean bl, Camera camera, GameRenderer gameRenderer, // LightTexture lightTexture, Matrix4f matrix4f, Matrix4f matrix4f2, CallbackInfo info) { // PoseStack matrices = new PoseStack(); -//? } else { + //? } else { @Inject(method = "extractVisibleEntities", at = @At(value = "HEAD")) - private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTracker, LevelRenderState levelRenderState, CallbackInfo ci) { + private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTracker, + LevelRenderState levelRenderState, CallbackInfo ci) { PoseStack matrices = new PoseStack(); -//? } + //? } if (camera.isDetached() || !FirstPersonModelCore.instance.getLogicHandler().shouldApplyThirdPerson(false)) { return; } @@ -84,17 +85,17 @@ private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTr MultiBufferSource.BufferSource immediate = renderBuffers.bufferSource(); FirstPersonModelCore.instance.setRenderingPlayer(true); FirstPersonModelCore.instance.setRenderingPlayerPost(true); -//? if < 1.21.0 { + //? if < 1.21.0 { // renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), tickDelta, matrices, immediate); -//? } else { + //? } else { - levelRenderState.entityRenderStates.add(extractEntity(camera.getEntity(), deltaTracker.getGameTimeDeltaPartialTick(false))); -//? } + levelRenderState.entityRenderStates + .add(extractEntity(camera.getEntity(), deltaTracker.getGameTimeDeltaPartialTick(false))); + //? } FirstPersonModelCore.instance.setRenderingPlayer(false); FirstPersonModelCore.instance.setRenderingPlayerPost(false); - } } diff --git a/src/main/resources/firstperson.mixins.json b/src/main/resources/firstperson.mixins.json index b172138d..2a5c7906 100644 --- a/src/main/resources/firstperson.mixins.json +++ b/src/main/resources/firstperson.mixins.json @@ -1,30 +1,30 @@ { - "required": true, - "package": "dev.tr7zw.firstperson.mixins", - "compatibilityLevel": "JAVA_8", - "mixins": [], - "client": [ - "AgeableListModelMixin", - "ArmorFeatureRendererMixin", - "CustomHeadLayerMixin", - "ElytraLayerMixin", - "EntityRendererMixin", - "FeatureRendererMixin", - "FishingBobberRendererMixin", - "HeldItemFeatureRendererMixin", - "HeldItemRendererMixin", - "HumanoidModelMixin", - "LivingEntityRendererMixin", - "LivingEntityRenderStateMixin", - "ModelPartMixin", - "PlayerMixin", - "PlayerModelMixin", - "PlayerRendererMixin", - "RenderDispatcherMixin", - "StuckInBodyLayerMixin", - "WorldRendererMixin" - ], - "injectors": { - "defaultRequire": 1 - } + "required": true, + "package": "dev.tr7zw.firstperson.mixins", + "compatibilityLevel": "JAVA_8", + "mixins": [], + "client": [ + "AgeableListModelMixin", + "ArmorFeatureRendererMixin", + "CustomHeadLayerMixin", + "ElytraLayerMixin", + "EntityRendererMixin", + "FeatureRendererMixin", + "FishingBobberRendererMixin", + "HeldItemFeatureRendererMixin", + "HeldItemRendererMixin", + "HumanoidModelMixin", + "LivingEntityRendererMixin", + "LivingEntityRenderStateMixin", + "ModelPartMixin", + "PlayerMixin", + "PlayerModelMixin", + "PlayerRendererMixin", + "RenderDispatcherMixin", + "StuckInBodyLayerMixin", + "WorldRendererMixin" + ], + "injectors": { + "defaultRequire": 1 + } } diff --git a/src/test/java/dev/tr7zw/tests/MixinTests.java b/src/test/java/dev/tr7zw/tests/MixinTests.java index 9fd822f2..64aa7699 100644 --- a/src/test/java/dev/tr7zw/tests/MixinTests.java +++ b/src/test/java/dev/tr7zw/tests/MixinTests.java @@ -21,7 +21,6 @@ import net.minecraft.client.renderer.entity.layers.CapeLayer; import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; import net.minecraft.client.renderer.entity.layers.ItemInHandLayer; -import net.minecraft.client.renderer.entity.player.PlayerRenderer; import net.minecraft.server.Bootstrap; public class MixinTests { @@ -48,7 +47,12 @@ void testMixins() { objenesis.newInstance(ItemInHandLayer.class); objenesis.newInstance(ItemInHandRenderer.class); objenesis.newInstance(HumanoidModel.class); - objenesis.newInstance(PlayerRenderer.class); + //? if >= 1.21.9 { + objenesis.newInstance(net.minecraft.client.renderer.entity.player.AvatarRenderer.class); + //? } else { + /* + objenesis.newInstance(net.minecraft.client.renderer.entity.player.PlayerRenderer.class); + *///? } objenesis.newInstance(EntityRenderDispatcher.class); objenesis.newInstance(ArrowLayer.class); objenesis.newInstance(LevelRenderer.class); From d71c5e9a1ded66d2996f33ba6b5be83f2ab67708 Mon Sep 17 00:00:00 2001 From: tr7zw Date: Mon, 3 Nov 2025 17:07:08 +0100 Subject: [PATCH 5/8] Rework offset logic --- .../dev/tr7zw/firstperson/LogicHandler.java | 6 ++-- .../access/LivingEntityRenderStateAccess.java | 3 -- .../firstperson/mixins/EntityAccessor.java | 21 +++++++++++++ .../mixins/EntityRendererMixin.java | 31 ------------------- .../mixins/LivingEntityRenderStateMixin.java | 12 ------- .../mixins/PlayerRendererMixin.java | 24 -------------- .../mixins/RenderDispatcherMixin.java | 26 ++++++++-------- .../mixins/WorldRendererMixin.java | 27 ++++++++++++++-- src/main/resources/firstperson.mixins.json | 4 +-- 9 files changed, 65 insertions(+), 89 deletions(-) create mode 100644 src/main/java/dev/tr7zw/firstperson/mixins/EntityAccessor.java delete mode 100644 src/main/java/dev/tr7zw/firstperson/mixins/EntityRendererMixin.java diff --git a/src/main/java/dev/tr7zw/firstperson/LogicHandler.java b/src/main/java/dev/tr7zw/firstperson/LogicHandler.java index deadee01..6ebf9b93 100644 --- a/src/main/java/dev/tr7zw/firstperson/LogicHandler.java +++ b/src/main/java/dev/tr7zw/firstperson/LogicHandler.java @@ -3,8 +3,7 @@ import java.util.HashSet; import java.util.Set; -import dev.tr7zw.firstperson.api.ActivationHandler; -import dev.tr7zw.firstperson.api.FirstPersonAPI; +import dev.tr7zw.firstperson.api.*; import dev.tr7zw.firstperson.versionless.Constants; import dev.tr7zw.firstperson.versionless.FirstPersonBase; import dev.tr7zw.firstperson.versionless.config.VanillaHands; @@ -145,6 +144,9 @@ public void updatePositionOffset(Entity entity, float delta) { } offset = new Vec3(x, y, z); + for (PlayerOffsetHandler handler : FirstPersonAPI.getPlayerOffsetHandlers()) { + offset = handler.applyOffset(client.player, delta, Vec3.ZERO, offset); + } } private static float calculateBodyRot(float entityBodyRot, float riderHeadRot) { diff --git a/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java b/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java index f22d12d9..c5cc6d15 100644 --- a/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java +++ b/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java @@ -29,7 +29,4 @@ default void setHideArms(boolean value) { float getArmOffset(); - void setRenderOffset(Vec3 offset); - - Vec3 getRenderOffset(); } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/EntityAccessor.java b/src/main/java/dev/tr7zw/firstperson/mixins/EntityAccessor.java new file mode 100644 index 00000000..256c6b9d --- /dev/null +++ b/src/main/java/dev/tr7zw/firstperson/mixins/EntityAccessor.java @@ -0,0 +1,21 @@ +package dev.tr7zw.firstperson.mixins; + +import net.minecraft.world.entity.*; +import net.minecraft.world.phys.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.gen.*; + +@Mixin(Entity.class) +public interface EntityAccessor { + + //? if >= 1.21.9 { + + @Accessor("position") + Vec3 entityCulling$getRawPosition(); + + @Accessor("position") + void entityCulling$setRawPosition(Vec3 position); + + //? } + +} diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/EntityRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/EntityRendererMixin.java deleted file mode 100644 index 4456b12c..00000000 --- a/src/main/java/dev/tr7zw/firstperson/mixins/EntityRendererMixin.java +++ /dev/null @@ -1,31 +0,0 @@ -package dev.tr7zw.firstperson.mixins; - -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.state.EntityRenderState; -import net.minecraft.world.level.Level; -import net.minecraft.world.phys.Vec3; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(EntityRenderer.class) -public class EntityRendererMixin { - - @WrapOperation(method = "finalizeRenderState", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/EntityRenderer;extractShadow(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;Lnet/minecraft/client/Minecraft;Lnet/minecraft/world/level/Level;)V")) - private void offsetRendering(EntityRenderer instance, EntityRenderState entityRenderState, Minecraft mc, - Level level, Operation original) { - if (entityRenderState instanceof LivingEntityRenderStateAccess access && access.isCameraEntity()) { - Vec3 vec3 = access.getRenderOffset(); - entityRenderState.x -= vec3.x; - entityRenderState.z -= vec3.z; - original.call(instance, entityRenderState, mc, level); - entityRenderState.x += vec3.x; - entityRenderState.z += vec3.z; - } else { - original.call(instance, entityRenderState, mc, level); - } - } -} diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin.java index 4689d807..6eb864f4 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin.java @@ -2,7 +2,6 @@ import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; -import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -19,8 +18,6 @@ public class LivingEntityRenderStateMixin implements LivingEntityRenderStateAcce private boolean hideBody; @Unique private float armOffset; - @Unique - private Vec3 renderOffset = Vec3.ZERO; @Override public void setIsCameraEntity(boolean value) { @@ -72,13 +69,4 @@ public float getArmOffset() { return this.armOffset; } - @Override - public void setRenderOffset(Vec3 offset) { - this.renderOffset = offset; - } - - @Override - public Vec3 getRenderOffset() { - return renderOffset; - } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java index 7afebefa..e2894c6e 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java @@ -67,28 +67,6 @@ public PlayerRendererMixin(Context context, PlayerModel model, float shadowRadiu private static Minecraft fpmMcInstance = Minecraft.getInstance(); private List removedLayers = new ArrayList<>(); - @Inject(method = "getRenderOffset", at = @At("RETURN"), cancellable = true) - //? if >= 1.21.3 { - - public void getRenderOffset(AvatarRenderState playerRenderState, CallbackInfoReturnable ci) { - AbstractClientPlayer entity = Minecraft.getInstance().player; - float delta = Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(false); - //? } else { - - // public void getRenderOffset(AbstractClientPlayer entity, float delta, CallbackInfoReturnable ci) { - //? } - LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) playerRenderState; - if (access.isCameraEntity()) { - Vec3 offset = ci.getReturnValue().add(access.getRenderOffset()); - // FIXME use render state instead of entity - for (PlayerOffsetHandler handler : FirstPersonAPI.getPlayerOffsetHandlers()) { - offset = handler.applyOffset(entity, delta, ci.getReturnValue(), offset); - } - - ci.setReturnValue(offset); - } - } - @Inject(method = "extractRenderState(Lnet/minecraft/world/entity/Avatar;Lnet/minecraft/client/renderer/entity/state/AvatarRenderState;F)V", at = @At("TAIL")) public void extractRenderState(Avatar avatar, AvatarRenderState avatarRenderState, float delta, CallbackInfo ci) { LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) avatarRenderState; @@ -114,8 +92,6 @@ public void extractRenderState(Avatar avatar, AvatarRenderState avatarRenderStat if (FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(avatar, avatar.getMainHandItem(), avatar.getOffhandItem())) access.setHideArms(true); - FirstPersonModelCore.instance.getLogicHandler().updatePositionOffset(avatar, delta); - access.setRenderOffset(FirstPersonModelCore.instance.getLogicHandler().getOffset()); } @Override diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java index 7e96a41f..b80f218e 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java @@ -1,8 +1,8 @@ package dev.tr7zw.firstperson.mixins; +import net.minecraft.client.renderer.*; 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.*; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import com.mojang.blaze3d.vertex.PoseStack; @@ -12,7 +12,6 @@ import lombok.AccessLevel; import lombok.NoArgsConstructor; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.LevelReader; @@ -46,10 +45,12 @@ @NoArgsConstructor(access = AccessLevel.PRIVATE) public abstract class RenderDispatcherMixin { - /*private static Minecraft fpmMcInstance = Minecraft.getInstance(); - - //? if >= 1.21.3 { - + private static Minecraft fpmMcInstance = Minecraft.getInstance(); + + //? if >= 1.21.9 { + + //? } else if >= 1.21.3 { + /* private static double tmpX; private static double tmpZ; @@ -101,8 +102,8 @@ private static void renderHitbox(PoseStack poseStack, VertexConsumer buffer, } } - //? } else { - + *///? } else { + // @Redirect(method = "renderShadow", at = @At(value = "invoke", target = "Lnet/minecraft/util/Mth;lerp(DDD)D", ordinal = 0)) // private static double shadowOffsetX(double delta, double old, double cur, PoseStack poseStack, // MultiBufferSource multiBufferSource, Entity entity, float f, float g, LevelReader levelReader, float h) { @@ -133,14 +134,14 @@ private static void renderHitbox(PoseStack poseStack, VertexConsumer buffer, // // @Inject(method = "renderHitbox", at = @At(value = "HEAD"), cancellable = true) // //? if < 1.17.0 { - + // // private void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, CallbackInfo ci) { // //? } else if < 1.21.0 { - + // // private static void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, // // CallbackInfo ci) { // //? } else { - + // // private static void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, // // float g, float h, float i, // // CallbackInfo ci) { @@ -150,6 +151,5 @@ private static void renderHitbox(PoseStack poseStack, VertexConsumer buffer, // } // } //? } - */ } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java index a1fdb8c0..11b517e9 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java @@ -90,8 +90,31 @@ private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTr // renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), tickDelta, matrices, immediate); //? } else { - levelRenderState.entityRenderStates - .add(extractEntity(camera.getEntity(), deltaTracker.getGameTimeDeltaPartialTick(false))); + var ent = camera.getEntity(); + var pos = ((EntityAccessor) ent).entityCulling$getRawPosition(); + var xO = ent.xo; + var yO = ent.yo; + var zO = ent.zo; + var xOld = ent.xOld; + var yOld = ent.yOld; + var zOld = ent.zOld; + FirstPersonModelCore.instance.getLogicHandler().updatePositionOffset(ent, deltaTracker.getGameTimeDeltaPartialTick(true)); + var offset = FirstPersonModelCore.instance.getLogicHandler().getOffset(); + ((EntityAccessor) ent).entityCulling$setRawPosition(pos.add(offset)); + ent.xo += offset.x; + ent.yo += offset.y; + ent.zo += offset.z; + ent.xOld += offset.x; + ent.yOld += offset.y; + ent.zOld += offset.z; + levelRenderState.entityRenderStates.add(extractEntity(ent, deltaTracker.getGameTimeDeltaPartialTick(true))); + ((EntityAccessor) ent).entityCulling$setRawPosition(pos); + ent.xo = xO; + ent.yo = yO; + ent.zo = zO; + ent.xOld = xOld; + ent.yOld = yOld; + ent.zOld = zOld; //? } FirstPersonModelCore.instance.setRenderingPlayer(false); FirstPersonModelCore.instance.setRenderingPlayerPost(false); diff --git a/src/main/resources/firstperson.mixins.json b/src/main/resources/firstperson.mixins.json index 2a5c7906..00c9dd6d 100644 --- a/src/main/resources/firstperson.mixins.json +++ b/src/main/resources/firstperson.mixins.json @@ -8,7 +8,6 @@ "ArmorFeatureRendererMixin", "CustomHeadLayerMixin", "ElytraLayerMixin", - "EntityRendererMixin", "FeatureRendererMixin", "FishingBobberRendererMixin", "HeldItemFeatureRendererMixin", @@ -22,7 +21,8 @@ "PlayerRendererMixin", "RenderDispatcherMixin", "StuckInBodyLayerMixin", - "WorldRendererMixin" + "WorldRendererMixin", + "EntityAccessor" ], "injectors": { "defaultRequire": 1 From 250b2f800ae8d3b75b4a75ea5660a329db6cc00b Mon Sep 17 00:00:00 2001 From: viciscat <51047087+viciscat@users.noreply.github.com> Date: Thu, 6 Nov 2025 14:04:15 +0100 Subject: [PATCH 6/8] every versions build! --- settings.json | 33 ++++++ .../firstperson/FirstPersonBootstrap.java | 25 +++-- .../firstperson/FirstPersonModelCore.java | 48 ++++---- .../firstperson/FirstPersonModelMod.java | 2 +- .../dev/tr7zw/firstperson/InventoryUtil.java | 7 +- .../dev/tr7zw/firstperson/LogicHandler.java | 43 +++---- .../access/AgeableListModelAccess.java | 2 +- .../access/LivingEntityRenderStateAccess.java | 2 - .../access/PlayerRendererAccess.java | 4 +- .../tr7zw/firstperson/api/FirstPersonAPI.java | 5 +- .../firstperson/api/PlayerOffsetHandler.java | 4 +- .../config/ConfigScreenProvider.java | 57 ++++------ .../firstperson/fabric/FPModMenuProvider.java | 6 +- .../forge/RenderHandEventListener.java | 56 +++++----- .../mixins/AgeableListModelMixin.java | 13 +-- .../mixins/ArmorFeatureRendererMixin.java | 29 +---- .../mixins/CustomHeadLayerMixin.java | 45 ++++---- .../firstperson/mixins/ElytraLayerMixin.java | 51 +++++---- .../mixins/FeatureRendererMixin.java | 89 ++++++++------- .../mixins/FishingBobberRendererMixin.java | 50 ++++----- .../mixins/HeldItemFeatureRendererMixin.java | 73 ++++++------ .../mixins/HeldItemRendererMixin.java | 51 +++++---- .../mixins/HumanoidModelMixin.java | 24 ++-- .../mixins/LivingEntityRenderStateMixin.java | 15 ++- .../mixins/LivingEntityRendererMixin.java | 105 +++++++----------- .../firstperson/mixins/ModelPartMixin.java | 17 ++- .../tr7zw/firstperson/mixins/PlayerMixin.java | 26 ++--- .../firstperson/mixins/PlayerModelMixin.java | 9 +- .../mixins/PlayerRendererMixin.java | 67 +++++------ .../mixins/RenderDispatcherMixin.java | 70 +++++------- .../mixins/StuckInBodyLayerMixin.java | 48 ++++---- .../mixins/WorldRendererMixin.java | 81 +++++++------- .../modsupport/FreecamSupport.java | 4 +- .../modsupport/ModSupportLoader.java | 8 +- .../modsupport/PlayerAnimatorSupport.java | 25 ++--- src/main/resources/firstperson.mixins.json | 4 +- src/test/java/dev/tr7zw/tests/MixinTests.java | 32 ++---- 37 files changed, 570 insertions(+), 660 deletions(-) diff --git a/settings.json b/settings.json index cebd45c9..13c525eb 100644 --- a/settings.json +++ b/settings.json @@ -1,5 +1,38 @@ { "versions": [ + "1.16.5-fabric", + "1.18.2-forge", + "1.18.2-fabric", + "1.19.2-forge", + "1.19.2-fabric", + "1.19.4-forge", + "1.19.4-fabric", + "1.20.1-forge", + "1.20.1-fabric", + "1.20.2-forge", + "1.20.2-neoforge", + "1.20.2-fabric", + "1.20.4-forge", + "1.20.4-neoforge", + "1.20.4-fabric", + "1.20.6-forge", + "1.20.6-neoforge", + "1.20.6-fabric", + "1.21.1-forge", + "1.21.1-neoforge", + "1.21.1-fabric", + "1.21.3-forge", + "1.21.3-neoforge", + "1.21.3-fabric", + "1.21.4-forge", + "1.21.4-neoforge", + "1.21.4-fabric", + "1.21.5-forge", + "1.21.5-neoforge", + "1.21.5-fabric", + "1.21.8-forge", + "1.21.8-neoforge", + "1.21.8-fabric", "1.21.10-forge", "1.21.10-neoforge", "1.21.10-fabric" diff --git a/src/main/java/dev/tr7zw/firstperson/FirstPersonBootstrap.java b/src/main/java/dev/tr7zw/firstperson/FirstPersonBootstrap.java index ab162929..6d79e982 100644 --- a/src/main/java/dev/tr7zw/firstperson/FirstPersonBootstrap.java +++ b/src/main/java/dev/tr7zw/firstperson/FirstPersonBootstrap.java @@ -1,27 +1,28 @@ //? if forge { /* - package dev.tr7zw.firstperson; +package dev.tr7zw.firstperson; - import net.minecraftforge.api.distmarker.Dist; - import net.minecraftforge.fml.DistExecutor; - import net.minecraftforge.fml.common.Mod; - import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; - import dev.tr7zw.transition.loader.ModLoaderUtil; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import dev.tr7zw.transition.loader.ModLoaderUtil; - @Mod("firstperson") - public class FirstPersonBootstrap { +@Mod("firstperson") +public class FirstPersonBootstrap { public FirstPersonBootstrap(FMLJavaModLoadingContext context) { ModLoaderUtil.setModLoadingContext(context); - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - new FirstPersonModelMod().sharedSetup(); + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { + new FirstPersonModelMod().sharedSetup(); }); } + public FirstPersonBootstrap() { this(FMLJavaModLoadingContext.get()); } - - } + +} *///? } else if neoforge { /* package dev.tr7zw.firstperson; diff --git a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java index e1e79e6d..60cb25ab 100644 --- a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java +++ b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java @@ -1,23 +1,16 @@ package dev.tr7zw.firstperson; -import dev.tr7zw.firstperson.access.PlayerRendererAccess; -import dev.tr7zw.firstperson.api.FirstPersonAPI; -import dev.tr7zw.firstperson.config.ConfigScreenProvider; -import dev.tr7zw.firstperson.modsupport.ModSupportLoader; -import dev.tr7zw.firstperson.modsupport.PlayerAnimatorSupport; -import dev.tr7zw.firstperson.versionless.FirstPersonBase; -import dev.tr7zw.transition.loader.ModLoaderEventUtil; -import dev.tr7zw.transition.loader.ModLoaderUtil; -import lombok.Getter; -import net.minecraft.client.CameraType; -import net.minecraft.client.KeyMapping; -import net.minecraft.client.Minecraft; -//? if >= 1.21.6 { - -//import net.minecraft.client.renderer.entity.state.PlayerRenderState; -import net.minecraft.client.renderer.entity.state.AvatarRenderState; -import net.minecraft.resources.ResourceLocation; -//? } +import dev.tr7zw.firstperson.access.*; +import dev.tr7zw.firstperson.api.*; +import dev.tr7zw.firstperson.config.*; +import dev.tr7zw.firstperson.modsupport.*; +import dev.tr7zw.firstperson.versionless.*; +import dev.tr7zw.transition.loader.*; +import lombok.*; +import net.minecraft.client.*; +//? if >= 1.21.2 +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.resources.*; public abstract class FirstPersonModelCore extends FirstPersonBase { @@ -26,7 +19,11 @@ public abstract class FirstPersonModelCore extends FirstPersonBase { public static FirstPersonModelCore instance; private boolean isHeld = false; private KeyMapping keyBinding = new KeyMapping("key.firstperson.toggle", 295, + //? if >= 1.21.9 { new KeyMapping.Category(ResourceLocation.fromNamespaceAndPath("firstperson", "keybind"))); + //? } else { + /*"firstperson.keybind"); + *///? } private boolean lateInit = true; @Deprecated public static boolean enabled = true; @@ -55,13 +52,14 @@ public void sharedSetup() { *///? } //? if forge { /* - //? if >= 1.21.6 { + //? if >= 1.21.6 { - net.minecraftforge.client.event.RenderHandEvent.BUS.addListener(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); - //? } else { + net.minecraftforge.client.event.RenderHandEvent.BUS + .addListener(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); + //? } else { - // ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); - //? } + // ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender); + //? } *///? } ModSupportLoader.loadSupport(); @@ -121,8 +119,8 @@ public void updatePlayerLayers() { PlayerRendererAccess access = null; //? if >= 1.21.6 { - access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() - .getRenderer(new AvatarRenderState()); + access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher().getRenderer( + /*? if >= 1.21.9 {*/new AvatarRenderState()/*?} else {*//*new PlayerRenderState()*//*? }*/); //? } else { // if (Minecraft.getInstance().player != null) { diff --git a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java index f58c9576..bfe24f00 100644 --- a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java +++ b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java @@ -2,7 +2,7 @@ //? if fabric { -import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.api.*; //? } public class FirstPersonModelMod extends FirstPersonModelCore diff --git a/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java b/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java index 51a6229c..8c483473 100644 --- a/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java +++ b/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java @@ -1,10 +1,9 @@ package dev.tr7zw.firstperson; -import java.util.List; +import net.minecraft.world.entity.player.*; +import net.minecraft.world.item.*; -import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; +import java.util.*; public class InventoryUtil { diff --git a/src/main/java/dev/tr7zw/firstperson/LogicHandler.java b/src/main/java/dev/tr7zw/firstperson/LogicHandler.java index 6ebf9b93..015ba8c2 100644 --- a/src/main/java/dev/tr7zw/firstperson/LogicHandler.java +++ b/src/main/java/dev/tr7zw/firstperson/LogicHandler.java @@ -1,31 +1,22 @@ package dev.tr7zw.firstperson; -import java.util.HashSet; -import java.util.Set; - import dev.tr7zw.firstperson.api.*; -import dev.tr7zw.firstperson.versionless.Constants; -import dev.tr7zw.firstperson.versionless.FirstPersonBase; -import dev.tr7zw.firstperson.versionless.config.VanillaHands; -import dev.tr7zw.transition.mc.EntityUtil; -import dev.tr7zw.transition.mc.GeneralUtil; -import dev.tr7zw.transition.mc.ItemUtil; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import net.minecraft.client.CameraType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; -import net.minecraft.util.Mth; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.Pose; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.vehicle.Boat; -import net.minecraft.world.entity.vehicle.Minecart; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.phys.Vec3; +import dev.tr7zw.firstperson.versionless.*; +import dev.tr7zw.firstperson.versionless.config.*; +import dev.tr7zw.transition.mc.*; +import lombok.*; +import net.minecraft.client.*; +import net.minecraft.client.player.*; +//? if >= 1.21.2 +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.util.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.player.*; +import net.minecraft.world.entity.vehicle.*; +import net.minecraft.world.item.*; +import net.minecraft.world.phys.*; + +import java.util.*; @RequiredArgsConstructor public class LogicHandler { @@ -293,9 +284,11 @@ public boolean lookingDown(LivingEntity livingEntity) { return dynamicHandsEnabled() && EntityUtil.getXRot(livingEntity) > 30; } + //? if >= 1.21.6 { public boolean lookingDown(LivingEntityRenderState state) { return dynamicHandsEnabled() && state.xRot > 30; } + //? } public void addAutoVanillaHandsItem(Item item) { autoVanillaHandItems.add(item); diff --git a/src/main/java/dev/tr7zw/firstperson/access/AgeableListModelAccess.java b/src/main/java/dev/tr7zw/firstperson/access/AgeableListModelAccess.java index 18adbda4..5c2899f0 100644 --- a/src/main/java/dev/tr7zw/firstperson/access/AgeableListModelAccess.java +++ b/src/main/java/dev/tr7zw/firstperson/access/AgeableListModelAccess.java @@ -1,6 +1,6 @@ package dev.tr7zw.firstperson.access; -import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.*; public interface AgeableListModelAccess { diff --git a/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java b/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java index c5cc6d15..d2f09254 100644 --- a/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java +++ b/src/main/java/dev/tr7zw/firstperson/access/LivingEntityRenderStateAccess.java @@ -1,7 +1,5 @@ package dev.tr7zw.firstperson.access; -import net.minecraft.world.phys.Vec3; - public interface LivingEntityRenderStateAccess { void setIsCameraEntity(boolean value); diff --git a/src/main/java/dev/tr7zw/firstperson/access/PlayerRendererAccess.java b/src/main/java/dev/tr7zw/firstperson/access/PlayerRendererAccess.java index 937812eb..186524dd 100644 --- a/src/main/java/dev/tr7zw/firstperson/access/PlayerRendererAccess.java +++ b/src/main/java/dev/tr7zw/firstperson/access/PlayerRendererAccess.java @@ -1,8 +1,8 @@ package dev.tr7zw.firstperson.access; -import java.util.List; +import net.minecraft.client.renderer.entity.layers.*; -import net.minecraft.client.renderer.entity.layers.RenderLayer; +import java.util.*; public interface PlayerRendererAccess { diff --git a/src/main/java/dev/tr7zw/firstperson/api/FirstPersonAPI.java b/src/main/java/dev/tr7zw/firstperson/api/FirstPersonAPI.java index 7404af8a..7c36a65e 100644 --- a/src/main/java/dev/tr7zw/firstperson/api/FirstPersonAPI.java +++ b/src/main/java/dev/tr7zw/firstperson/api/FirstPersonAPI.java @@ -1,9 +1,8 @@ package dev.tr7zw.firstperson.api; -import java.util.ArrayList; -import java.util.List; +import dev.tr7zw.firstperson.*; -import dev.tr7zw.firstperson.FirstPersonModelCore; +import java.util.*; public final class FirstPersonAPI { diff --git a/src/main/java/dev/tr7zw/firstperson/api/PlayerOffsetHandler.java b/src/main/java/dev/tr7zw/firstperson/api/PlayerOffsetHandler.java index 7d175bfe..b9424720 100644 --- a/src/main/java/dev/tr7zw/firstperson/api/PlayerOffsetHandler.java +++ b/src/main/java/dev/tr7zw/firstperson/api/PlayerOffsetHandler.java @@ -1,7 +1,7 @@ package dev.tr7zw.firstperson.api; -import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.world.phys.Vec3; +import net.minecraft.client.player.*; +import net.minecraft.world.phys.*; public interface PlayerOffsetHandler { diff --git a/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java b/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java index cc4107e1..6a19b8b2 100644 --- a/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java +++ b/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java @@ -1,40 +1,25 @@ package dev.tr7zw.firstperson.config; -import java.util.ArrayList; -import java.util.List; -import java.util.Map.Entry; +import dev.tr7zw.firstperson.*; +import dev.tr7zw.firstperson.access.*; +import dev.tr7zw.firstperson.versionless.config.*; +import dev.tr7zw.transition.mc.*; +import dev.tr7zw.trender.gui.client.*; +import dev.tr7zw.trender.gui.widget.*; +import dev.tr7zw.trender.gui.widget.data.*; +import dev.tr7zw.trender.gui.widget.icon.*; +import lombok.experimental.*; +import net.minecraft.client.*; +import net.minecraft.client.gui.screens.*; +import net.minecraft.client.renderer.entity.layers.*; +//? if >= 1.21.2 +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.network.chat.*; +import net.minecraft.resources.*; +import net.minecraft.world.item.*; -import dev.tr7zw.firstperson.FirstPersonModelCore; -import dev.tr7zw.firstperson.access.PlayerRendererAccess; -import dev.tr7zw.firstperson.versionless.config.VanillaHands; -import dev.tr7zw.transition.mc.ComponentProvider; -import dev.tr7zw.transition.mc.ItemUtil; -import dev.tr7zw.trender.gui.client.AbstractConfigScreen; -import dev.tr7zw.trender.gui.client.BackgroundPainter; -import dev.tr7zw.trender.gui.widget.WButton; -import dev.tr7zw.trender.gui.widget.WGridPanel; -import dev.tr7zw.trender.gui.widget.WListPanel; -import dev.tr7zw.trender.gui.widget.WTabPanel; -import dev.tr7zw.trender.gui.widget.WTextField; -import dev.tr7zw.trender.gui.widget.WToggleButton; -import dev.tr7zw.trender.gui.widget.data.Insets; -import dev.tr7zw.trender.gui.widget.icon.ItemIcon; -import lombok.experimental.UtilityClass; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.renderer.entity.layers.RenderLayer; -//? if >= 1.21.6 && < 1.21.9 { -/* -import net.minecraft.client.renderer.entity.state.PlayerRenderState; -*///? } - //? if >= 1.21.9 { - -import net.minecraft.client.renderer.entity.state.AvatarRenderState; -//? } -import net.minecraft.network.chat.CommonComponents; -import net.minecraft.resources.ResourceKey; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.Items; +import java.util.*; +import java.util.Map.*; @UtilityClass public class ConfigScreenProvider { @@ -157,8 +142,8 @@ public CustomConfigScreen(Screen previous) { PlayerRendererAccess access = null; //? if >= 1.21.6 { - access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() - .getRenderer(new AvatarRenderState()); + access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher().getRenderer( + /*? if >= 1.21.9 {*/new AvatarRenderState()/*?} else {*//*new PlayerRenderState()*//*? }*/); //? } else { // if (Minecraft.getInstance().player != null) { diff --git a/src/main/java/dev/tr7zw/firstperson/fabric/FPModMenuProvider.java b/src/main/java/dev/tr7zw/firstperson/fabric/FPModMenuProvider.java index b3654175..8c72ff47 100644 --- a/src/main/java/dev/tr7zw/firstperson/fabric/FPModMenuProvider.java +++ b/src/main/java/dev/tr7zw/firstperson/fabric/FPModMenuProvider.java @@ -2,10 +2,8 @@ package dev.tr7zw.firstperson.fabric; -import com.terraformersmc.modmenu.api.ConfigScreenFactory; -import com.terraformersmc.modmenu.api.ModMenuApi; - -import dev.tr7zw.firstperson.config.ConfigScreenProvider; +import com.terraformersmc.modmenu.api.*; +import dev.tr7zw.firstperson.config.*; public class FPModMenuProvider implements ModMenuApi { diff --git a/src/main/java/dev/tr7zw/firstperson/forge/RenderHandEventListener.java b/src/main/java/dev/tr7zw/firstperson/forge/RenderHandEventListener.java index f1ddef9e..6f757b0d 100644 --- a/src/main/java/dev/tr7zw/firstperson/forge/RenderHandEventListener.java +++ b/src/main/java/dev/tr7zw/firstperson/forge/RenderHandEventListener.java @@ -1,17 +1,16 @@ //? if forge || neoforge { /* - package dev.tr7zw.firstperson.forge; +package dev.tr7zw.firstperson.forge; - import dev.tr7zw.firstperson.FirstPersonModelCore; +import dev.tr7zw.firstperson.FirstPersonModelCore; - //? if >= 1.21.6 && forge { +//? if >= 1.21.6 && forge { /^ - import net.minecraftforge.eventbus.api.listener.SubscribeEvent; - ^///? } else if forge { - - // import net.minecraftforge.eventbus.api.SubscribeEvent; - //? } - +import net.minecraftforge.eventbus.api.listener.SubscribeEvent; +^///? } else if forge { +// import net.minecraftforge.client.event.RenderHandEvent; +// import net.minecraftforge.eventbus.api.SubscribeEvent; +//? } //? if neoforge { /^ @@ -19,25 +18,26 @@ import net.neoforged.neoforge.client.event.RenderHandEvent; ^///? } - public class RenderHandEventListener { +public class RenderHandEventListener { - @SubscribeEvent - //? if >= 1.21.6 && forge { + @SubscribeEvent + //? if >= 1.21.6 && forge { /^ - public boolean onRender(net.minecraftforge.client.event.RenderHandEvent e) { - if(FirstPersonModelCore.instance.isEnabled() && !FirstPersonModelCore.instance.getLogicHandler().showVanillaHands()) { - return true; - } - return false; - } - ^///? } else { - - public void onRender(RenderHandEvent e) { - if(FirstPersonModelCore.instance.isEnabled() && !FirstPersonModelCore.instance.getLogicHandler().showVanillaHands()) { - e.setCanceled(true); - } - } - //? } - - } + public boolean onRender(net.minecraftforge.client.event.RenderHandEvent e) { + if (FirstPersonModelCore.instance.isEnabled() + && !FirstPersonModelCore.instance.getLogicHandler().showVanillaHands()) { + return true; + } + return false; + } + ^///? } else { + + public void onRender(RenderHandEvent e) { + if(FirstPersonModelCore.instance.isEnabled() && !FirstPersonModelCore.instance.getLogicHandler().showVanillaHands()) { + e.setCanceled(true); + } + } + //? } + +} *///? } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/AgeableListModelMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/AgeableListModelMixin.java index 177922ca..1f93f8fa 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/AgeableListModelMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/AgeableListModelMixin.java @@ -1,14 +1,7 @@ package dev.tr7zw.firstperson.mixins; -import org.spongepowered.asm.mixin.Mixin; - -//? if < 1.21.3 { - -// import org.spongepowered.asm.mixin.Shadow; -// import dev.tr7zw.firstperson.access.AgeableListModelAccess; -// import net.minecraft.client.model.AgeableListModel; -//? } -import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.*; +import org.spongepowered.asm.mixin.*; //? if >= 1.21.3 { @@ -16,6 +9,8 @@ public abstract class AgeableListModelMixin { } //? } else { +//import dev.tr7zw.firstperson.access.*; +//import net.minecraft.client.model.*; // @Mixin(AgeableListModel.class) // public abstract class AgeableListModelMixin implements AgeableListModelAccess { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java index e15cc838..d0b1a6fd 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java @@ -1,28 +1,11 @@ package dev.tr7zw.firstperson.mixins; -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.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import com.mojang.blaze3d.vertex.PoseStack; - -import dev.tr7zw.firstperson.FirstPersonModelCore; -import dev.tr7zw.firstperson.versionless.mixinbase.ModelPartBase; -import net.minecraft.client.Minecraft; -import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.RenderLayerParent; -import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; -import net.minecraft.client.renderer.entity.layers.RenderLayer; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.LivingEntity; -//? if >= 1.21.3 { - -import net.minecraft.world.item.equipment.Equippable; -//? } +import net.minecraft.client.*; +import net.minecraft.client.model.*; +import net.minecraft.client.renderer.entity.*; +import net.minecraft.client.renderer.entity.layers.*; +import net.minecraft.world.entity.*; +import org.spongepowered.asm.mixin.*; // lower prio to run before fabric api @SuppressWarnings("rawtypes") diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java index b83c2e79..28e5e80f 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java @@ -1,40 +1,43 @@ package dev.tr7zw.firstperson.mixins; -import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; -import net.minecraft.client.renderer.SubmitNodeCollector; -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.CallbackInfo; - -import com.mojang.blaze3d.vertex.PoseStack; - -import dev.tr7zw.firstperson.FirstPersonModelCore; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.layers.CustomHeadLayer; -//? if >= 1.21.3 { - -import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; -//? } else { - -// import net.minecraft.world.entity.LivingEntity; -//? } +import com.mojang.blaze3d.vertex.*; +import dev.tr7zw.firstperson.access.*; +import dev.tr7zw.firstperson.*; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.entity.layers.*; +//? if >= 1.21.2 +import net.minecraft.client.renderer.entity.state.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; +import net.minecraft.world.entity.*; //lower prio to run before other mods @Mixin(value = CustomHeadLayer.class, priority = 100) public class CustomHeadLayerMixin { + //? if >= 1.21.9 { @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;FF)V", at = @At("HEAD"), cancellable = true) - //? if >= 1.21.3 { + //? } else { + /*@Inject(method = "render", at = @At("HEAD"), cancellable = true) + *///? } + //? if >= 1.21.9 { public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, LivingEntityRenderState livingEntityRenderState, float f, float g, CallbackInfo info) { - //? } else { + //? } else >= 1.21.3 { + /*public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, + LivingEntityRenderState livingEntityRenderState, float f, float g, CallbackInfo info) { + *///? } else { // public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntity livingEntity, // float f, float g, float h, float j, float k, float l, CallbackInfo info) { //? } + //? if >= 1.21.9 { if (((LivingEntityRenderStateAccess) livingEntityRenderState).isCameraEntity()) { + //? } else { + /*if (FirstPersonModelCore.instance.isRenderingPlayer()) { + *///? } info.cancel(); } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java index 401be155..c0b108ff 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java @@ -1,27 +1,18 @@ package dev.tr7zw.firstperson.mixins; -import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; -import net.minecraft.client.renderer.SubmitNodeCollector; -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.CallbackInfo; - -import com.mojang.blaze3d.vertex.PoseStack; - -import dev.tr7zw.firstperson.FirstPersonModelCore; -import net.minecraft.client.Minecraft; -import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.client.renderer.MultiBufferSource; -//? if >= 1.21.3 { - -import net.minecraft.client.renderer.entity.layers.WingsLayer; -import net.minecraft.client.renderer.entity.state.HumanoidRenderState; -//? } else { - -// import net.minecraft.client.renderer.entity.layers.ElytraLayer; -//? } -import net.minecraft.world.entity.LivingEntity; +import com.mojang.blaze3d.vertex.*; +import dev.tr7zw.firstperson.access.*; +import dev.tr7zw.firstperson.*; +import net.minecraft.client.*; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.entity.layers.*; +//? if >= 1.21.2 +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.client.player.*; +import net.minecraft.world.entity.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; /** * @author KxmischesDomi | https://github.com/kxmischesdomi @@ -35,19 +26,31 @@ //? } public class ElytraLayerMixin { - //? if >= 1.21.3 { + //? if >= 1.21.9 { @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/HumanoidRenderState;FF)V", at = @At("HEAD"), cancellable = true) public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, HumanoidRenderState humanoidRenderState, float f, float g, CallbackInfo ci) { - //? } else { + //? } else if >= 1.21.3 { + /*@Inject(method = "render", at = @At("HEAD"), cancellable = true) + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, + HumanoidRenderState humanoidRenderState, float f, float g, CallbackInfo ci) { + *///? } else { // @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) // public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, T livingEntity, float f, // float g, float h, float j, float k, float l, CallbackInfo ci) { //? } + //? if >= 1.21.9 { if (((LivingEntityRenderStateAccess) humanoidRenderState).isCameraEntity() && humanoidRenderState.isVisuallySwimming) { + //? } else { + /*if (FirstPersonModelCore.instance.isRenderingPlayer() + && Minecraft.getInstance().getCameraEntity() instanceof AbstractClientPlayer player + && FirstPersonModelCore.instance.getLogicHandler().isSwimming(player)) { + + *///? } + ci.cancel(); } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java index a062f03a..e4a6a36f 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java @@ -1,28 +1,21 @@ package dev.tr7zw.firstperson.mixins; -import net.minecraft.client.model.Model; -import net.minecraft.client.renderer.SubmitNodeCollector; -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.CallbackInfo; +//? if < 1.21.9 { +/*import com.mojang.blaze3d.vertex.*; +import dev.tr7zw.firstperson.*; +import dev.tr7zw.firstperson.versionless.mixinbase.*; +import lombok.*; +import net.minecraft.client.model.*; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.entity.layers.*; +//? if >= 1.21.2 +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.resources.*; +import net.minecraft.world.entity.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; -import com.mojang.blaze3d.vertex.PoseStack; - -import dev.tr7zw.firstperson.FirstPersonModelCore; -import dev.tr7zw.firstperson.versionless.mixinbase.ModelPartBase; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.model.HeadedModel; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.layers.RenderLayer; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.LivingEntity; -//? if >= 1.21.3 { - -import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; -//? } //? if < 1.21.4 { // import net.minecraft.client.model.VillagerHeadModel; @@ -31,60 +24,66 @@ @Mixin(RenderLayer.class) @NoArgsConstructor(access = AccessLevel.PRIVATE) public abstract class FeatureRendererMixin { - /*@Inject(method = "renderColoredCutoutModel", at = @At("HEAD"), cancellable = true) + @Inject(method = "renderColoredCutoutModel", at = @At("HEAD"), cancellable = true) //? if >= 1.21.3 { - - private static void renderColoredCutoutModel(Model model, ResourceLocation resourceLocation, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, LivingEntityRenderState livingEntityRenderState, int j, int k, CallbackInfo ci) { - //? } else if >= 1.21.0 { - + + private static void renderColoredCutoutModel(EntityModel model, ResourceLocation resourceLocation, + PoseStack poseStack, MultiBufferSource multiBufferSource, int i, + LivingEntityRenderState livingEntityRenderState, int j, CallbackInfo ci) { + //? } else if >= 1.21.0 { + // private static void removeHead(EntityModel model, ResourceLocation texture, // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, int color, CallbackInfo ci) { - //? } else { - + //? } else { + // private static void removeHead(EntityModel model, ResourceLocation texture, // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, float red, float green, // float blue, CallbackInfo ci) { - //? } + //? } if (FirstPersonModelCore.instance.isRenderingPlayer()) { if (!(model instanceof HeadedModel)) { ci.cancel(); return; } ((ModelPartBase) (Object) ((HeadedModel) model).getHead()).setHidden(); - //? if < 1.21.4 { - + //? if < 1.21.4 { + // if (model instanceof VillagerHeadModel villager) { // villager.hatVisible(false); // } - //? } + //? } } } - + @Inject(method = "renderColoredCutoutModel", at = @At("RETURN"), cancellable = true) //? if >= 1.21.3 { - + private static void removeReturn(EntityModel model, ResourceLocation resourceLocation, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntityRenderState livingEntityRenderState, int j, CallbackInfo ci) { - //? } else if >= 1.21.0 { - + //? } else if >= 1.21.0 { + // private static void removeReturn(EntityModel model, ResourceLocation texture, // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, int color, CallbackInfo ci) { - //? } else { - + //? } else { + // private static void removeReturn(EntityModel model, ResourceLocation texture, // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, float red, float green, // float blue, CallbackInfo ci) { - //? } + //? } if (model instanceof HeadedModel) { ((ModelPartBase) (Object) ((HeadedModel) model).getHead()).showAgain(); - //? if < 1.21.4 { - + //? if < 1.21.4 { + // if (model instanceof VillagerHeadModel villager) { // villager.hatVisible(true); // } - //? } + //? } } - }*/ - + } } +*///? } else { +@org.spongepowered.asm.mixin.Mixin(net.minecraft.client.Minecraft.class) +public class FeatureRendererMixin { +} +//? } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java index 577a8231..7280d2a7 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java @@ -1,31 +1,20 @@ package dev.tr7zw.firstperson.mixins; -import net.minecraft.client.renderer.SubmitNodeCollector; -import net.minecraft.client.renderer.state.CameraRenderState; -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.Redirect; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import com.mojang.blaze3d.vertex.PoseStack; - -import dev.tr7zw.firstperson.FirstPersonModelCore; -import net.minecraft.client.CameraType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.Options; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.FishingHookRenderer; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.phys.Vec3; -//? if >= 1.21.3 { - -import net.minecraft.client.renderer.entity.state.FishingHookRenderState; -//? } else { - -// import net.minecraft.world.entity.projectile.FishingHook; +import com.mojang.blaze3d.vertex.*; +import dev.tr7zw.firstperson.*; +import net.minecraft.client.*; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.entity.*; +//? if >= 1.21.2 { +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.client.renderer.state.*; //? } +import net.minecraft.world.entity.player.*; +import net.minecraft.world.phys.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; +import net.minecraft.world.entity.projectile.*; @Mixin(FishingHookRenderer.class) public class FishingBobberRendererMixin { @@ -49,12 +38,19 @@ private CameraType redirect(Options gameOptions) { return doCorrect() ? CameraType.THIRD_PERSON_BACK : gameOptions.getCameraType(); } + //? if >= 1.21.9 { @Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/FishingHookRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At("HEAD")) - //? if >= 1.21.3 { + //? } else { + /*@Inject(method = "render", at = @At("HEAD")) + *///? } + //? if >= 1.21.9 { public void render(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState cameraRenderState, CallbackInfo ci) { - //? } else { + //? } else if >= 1.21.3 { + /*public void render(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, + MultiBufferSource multiBufferSource, int i, CallbackInfo info) { + *///? } else { // private void calcOffset(FishingHook fishingBobberEntity, float f, float g, PoseStack matrixStack, // MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java index 840f2c1e..ebb84b1b 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java @@ -1,36 +1,23 @@ package dev.tr7zw.firstperson.mixins; -import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; -import net.minecraft.client.renderer.SubmitNodeCollector; -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.CallbackInfo; +import com.mojang.blaze3d.vertex.*; +import dev.tr7zw.firstperson.*; +import dev.tr7zw.firstperson.access.*; +import net.minecraft.client.*; +import net.minecraft.client.resources.model.*; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.entity.layers.*; +//? if >= 1.21.2 +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.client.renderer.item.*; +import net.minecraft.world.entity.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; + +//? if < 1.21.4 +// import net.minecraft.world.item.*; -import com.mojang.blaze3d.vertex.PoseStack; - -import dev.tr7zw.firstperson.FirstPersonModelCore; -import net.minecraft.client.Minecraft; - -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.layers.ItemInHandLayer; -import net.minecraft.world.entity.HumanoidArm; -//? if < 1.21.4 { - -// import net.minecraft.world.item.ItemStack; -//? } -//? if = 12103 { - -// import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; -//? } -//? if >= 1.21.3 && < 1.21.4 { - -// import net.minecraft.client.resources.model.BakedModel; -//? } else { - -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.world.entity.LivingEntity; -//? } //? if >= 1.19.4 { //? if < 1.21.4 { @@ -41,11 +28,6 @@ // import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; //? } -//? if >= 1.21.4 { - -import net.minecraft.client.renderer.entity.state.ArmedEntityRenderState; -import net.minecraft.client.renderer.item.ItemStackRenderState; -//? } /** * Stops items in the hand from rendering while in first person. @@ -54,13 +36,21 @@ @Mixin(ItemInHandLayer.class) public class HeldItemFeatureRendererMixin { + //? if >= 1.21.9 { @Inject(at = @At("HEAD"), method = "submitArmWithItem", cancellable = true) - //? if >= 1.21.4 { + //? } else { + /*@Inject(at = @At("HEAD"), method = "renderArmWithItem", cancellable = true) + *///? } + //? if >= 1.21.9 { private void renderArmWithItem(ArmedEntityRenderState armedEntityRenderState, ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, CallbackInfo ci) { - //? } else if >= 1.21.3 { + //? } else if >= 1.21.4 { + /*private void renderArmWithItem(ArmedEntityRenderState livingEntityRenderState, + ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, + MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { + *///? } else if >= 1.21.3 { // private void renderArmWithItem(LivingEntityRenderState livingEntityRenderState, BakedModel bakedModel, // ItemStack itemStack, ItemDisplayContext itemDisplayContext, HumanoidArm humanoidArm, PoseStack poseStack, @@ -74,11 +64,20 @@ private void renderArmWithItem(ArmedEntityRenderState armedEntityRenderState, // private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, TransformType transformType, // HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { //? } + //? if >= 1.21.9 { LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) armedEntityRenderState; if (access.hideLeftArm() && access.hideRightArm() && !FirstPersonModelCore.instance.getLogicHandler().lookingDown(armedEntityRenderState)) { ci.cancel(); } + //? } else { + /*if (FirstPersonModelCore.instance.isRenderingPlayer()) { + if (FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(Minecraft.getInstance().player) + && !FirstPersonModelCore.instance.getLogicHandler().lookingDown()) { + ci.cancel(); + } + } + *///? } } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java index b55289f2..a0153588 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java @@ -1,27 +1,19 @@ package dev.tr7zw.firstperson.mixins; -import net.minecraft.client.renderer.SubmitNodeCollector; -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; - -import com.mojang.blaze3d.vertex.PoseStack; - -import dev.tr7zw.firstperson.FirstPersonModelCore; -import dev.tr7zw.firstperson.versionless.config.VanillaHands; -import dev.tr7zw.transition.mc.EntityUtil; -import net.minecraft.client.Minecraft; -import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.ItemInHandRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.EntityRenderDispatcher; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.entity.HumanoidArm; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; +import com.mojang.blaze3d.vertex.*; +import dev.tr7zw.firstperson.*; +import dev.tr7zw.firstperson.versionless.config.*; +import dev.tr7zw.transition.mc.*; +import net.minecraft.client.*; +import net.minecraft.client.player.*; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.entity.*; +import net.minecraft.world.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.item.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; /** * Hides the normal first person hands @@ -42,13 +34,24 @@ public abstract class HeldItemRendererMixin { private ItemStack offHandItem; @Shadow + //? if >= 1.21.9 { protected abstract void renderPlayerArm(PoseStack arg, SubmitNodeCollector arg2, int i, float g, float h, HumanoidArm arg3); + //? } else { + /*public abstract void renderPlayerArm(PoseStack matrices, MultiBufferSource vertexConsumers, int light, + float equipProgress, float swingProgress, HumanoidArm arm); + *///? } @Inject(at = @At("HEAD"), method = "renderArmWithItem", cancellable = true) + //? if >= 1.21.9 { public void renderFirstPersonItem(AbstractClientPlayer player, float deltaTick, float pitch, InteractionHand hand, float swingProgress, ItemStack item, float equipProgress, PoseStack matrices, - SubmitNodeCollector submitNodeCollector, int light, CallbackInfo info) { + SubmitNodeCollector vertexConsumers, int light, CallbackInfo info) { + //? } else { + /*public void renderFirstPersonItem(AbstractClientPlayer player, float tickDelta, float pitch, InteractionHand hand, + float swingProgress, ItemStack item, float equipProgress, PoseStack matrices, + MultiBufferSource vertexConsumers, int light, CallbackInfo info) { + *///? } if (!FirstPersonModelCore.instance.isEnabled()) { return; @@ -85,7 +88,7 @@ public void renderFirstPersonItem(AbstractClientPlayer player, float deltaTick, HumanoidArm arm = bl ? player.getMainArm() : player.getMainArm().getOpposite(); matrices.pushPose(); if (item.isEmpty() && !bl && !player.isInvisible()) { - renderPlayerArm(matrices, submitNodeCollector, light, equipProgress, swingProgress, arm); + renderPlayerArm(matrices, vertexConsumers, light, equipProgress, swingProgress, arm); } matrices.popPose(); } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HumanoidModelMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HumanoidModelMixin.java index 0be4e7e9..dd9724b6 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/HumanoidModelMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HumanoidModelMixin.java @@ -1,15 +1,14 @@ package dev.tr7zw.firstperson.mixins; -import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; -import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.renderer.entity.state.HumanoidRenderState; -import org.spongepowered.asm.mixin.Final; -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; +//? if >= 1.21.9 { + +import dev.tr7zw.firstperson.access.*; +import net.minecraft.client.model.*; +import net.minecraft.client.model.geom.*; +import net.minecraft.client.renderer.entity.state.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; @Mixin(HumanoidModel.class) public class HumanoidModelMixin { @@ -41,3 +40,8 @@ private void setupAnim(HumanoidRenderState renderState, CallbackInfo ci) { body.visible = !access.hideBody(); } } +//? } else { +/*@org.spongepowered.asm.mixin.Mixin(net.minecraft.client.Minecraft.class) +public class HumanoidModelMixin { +} +*///? } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin.java index 6eb864f4..cc271a58 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin.java @@ -1,9 +1,9 @@ package dev.tr7zw.firstperson.mixins; -import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; -import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; +//? if >= 1.21.9 { +import dev.tr7zw.firstperson.access.*; +import net.minecraft.client.renderer.entity.state.*; +import org.spongepowered.asm.mixin.*; @Mixin(LivingEntityRenderState.class) public class LivingEntityRenderStateMixin implements LivingEntityRenderStateAccess { @@ -68,5 +68,10 @@ public void setArmOffset(float offset) { public float getArmOffset() { return this.armOffset; } - } +//? } else { +/*@org.spongepowered.asm.mixin.Mixin(net.minecraft.client.Minecraft.class) +public class LivingEntityRenderStateMixin { +} + +*///? } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java index 2443c5b6..6a950d73 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java @@ -1,63 +1,39 @@ package dev.tr7zw.firstperson.mixins; -import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; -import net.minecraft.client.Minecraft; -import net.minecraft.util.Mth; -import net.minecraft.world.item.Items; - -import java.util.ArrayList; -import java.util.List; - -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.At.Shift; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.mojang.blaze3d.vertex.PoseStack; - -import dev.tr7zw.firstperson.FirstPersonModelCore; +import com.mojang.blaze3d.vertex.*; +import dev.tr7zw.firstperson.*; import dev.tr7zw.firstperson.InventoryUtil; -import dev.tr7zw.firstperson.access.AgeableListModelAccess; -//? if < 1.21.3 { - -// import dev.tr7zw.firstperson.access.PlayerModelAccess; -//? } -import dev.tr7zw.firstperson.versionless.mixinbase.ModelPartBase; -import dev.tr7zw.transition.mc.EntityUtil; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.model.HeadedModel; -import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.model.Model; -import net.minecraft.client.model.PlayerModel; - -import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.LivingEntityRenderer; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.monster.Shulker; -import net.minecraft.world.entity.player.Player; -//? if >= 1.21.3 { - -import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; -//import net.minecraft.client.renderer.entity.state.PlayerRenderState; -//? } -//? if < 1.21.4 { - -// import net.minecraft.client.model.VillagerHeadModel; -//? } +import dev.tr7zw.firstperson.access.*; +import dev.tr7zw.firstperson.versionless.mixinbase.*; +import dev.tr7zw.transition.mc.*; +import net.minecraft.client.*; +import net.minecraft.client.model.*; +import net.minecraft.client.player.*; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.entity.*; +//? if >= 1.21.2 +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.util.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.monster.*; +import net.minecraft.world.entity.player.*; +import net.minecraft.world.item.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; + +import java.util.*; @Mixin(LivingEntityRenderer.class) public abstract class LivingEntityRendererMixin { private static List revert = new ArrayList(); + //? if < 1.21.9 { /*// pull all registers to try to get rid of the head or other bodyparts //? if >= 1.21.3 { - @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/EntityModel;setupAnim(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;)V", shift = Shift.AFTER), cancellable = true) + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/EntityModel;setupAnim(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;)V", shift = At.Shift.AFTER), cancellable = true) public void render(LivingEntityRenderState livingEntityRenderState, PoseStack matrixStack, MultiBufferSource multiBufferSource, int i, CallbackInfo info) { if (!FirstPersonModelCore.instance.isRenderingPlayer()) @@ -67,12 +43,12 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma return; } LivingEntity livingEntity = (LivingEntity) entity; - //? } else { + //? } else { - // @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/EntityModel;setupAnim(Lnet/minecraft/world/entity/Entity;FFFFF)V", shift = Shift.AFTER), cancellable = true) + // @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/EntityModel;setupAnim(Lnet/minecraft/world/entity/Entity;FFFFF)V", shift = At.Shift.AFTER), cancellable = true) // public void renderPostAnim(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, // MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { - //? } + //? } if (!revert.isEmpty()) { for (Runnable r : revert) { r.run(); @@ -131,7 +107,7 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma } } } - //? if < 1.21.4 { + //? if < 1.21.4 { // if (model instanceof VillagerHeadModel villaterHead) { // villaterHead.hatVisible(false); @@ -139,7 +115,7 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma // villaterHead.hatVisible(true); // }); // } - //? } + //? } if (model instanceof PlayerModel playerModel) { headShouldBeHidden = true; ((ModelPartBase) (Object) playerModel.hat).setHidden(); @@ -177,21 +153,21 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma if (livingEntity instanceof AbstractClientPlayer player && (Object) model instanceof PlayerModel playerModel && FirstPersonModelCore.instance.getLogicHandler().isSwimming(player)) { ((ModelPartBase) (Object) playerModel.body).setHidden(); - //? if >= 1.21.3 { + //? if >= 1.21.3 { if (livingEntityRenderState instanceof PlayerRenderState prs) { prs.showCape = false; } - //? } else { + //? } else { // ((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).setHidden(); - //? } + //? } revert.add(() -> { ((ModelPartBase) (Object) playerModel.body).showAgain(); - //? if < 1.21.3 { + //? if < 1.21.3 { // ((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).showAgain(); - //? } + //? } }); } if (!headShouldBeHidden) { @@ -200,25 +176,27 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma matrixStack.popPose(); info.cancel(); } - }*/ - + } + *///? } else { @Inject(method = "extractRenderState(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;F)V", at = @At("HEAD")) private void checkIfCameraEntity(LivingEntity livingEntity, LivingEntityRenderState livingEntityRenderState, float f, CallbackInfo ci) { ((LivingEntityRenderStateAccess) livingEntityRenderState) .setIsCameraEntity(FirstPersonModelCore.instance.isRenderingPlayer()); } + //? } + //? if < 1.21.9 { /*@Inject(method = "render", at = @At("RETURN")) //? if >= 1.21.3 { public void renderEnd(LivingEntityRenderState livingEntityRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo info) { - //? } else { + //? } else { // public void renderReturn(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, // MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { - //? } + //? } if (!revert.isEmpty()) { for (Runnable r : revert) { r.run(); @@ -226,7 +204,8 @@ public void renderEnd(LivingEntityRenderState livingEntityRenderState, PoseStack revert.clear(); } FirstPersonModelCore.instance.setRenderingPlayer(false); - }*/ + } + *///? } @Shadow public abstract EntityModel getModel(); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/ModelPartMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/ModelPartMixin.java index 35f4fc23..0789176b 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/ModelPartMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/ModelPartMixin.java @@ -1,13 +1,10 @@ package dev.tr7zw.firstperson.mixins; -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; - -import dev.tr7zw.firstperson.versionless.mixinbase.ModelPartBase; -import net.minecraft.client.model.geom.ModelPart; +import dev.tr7zw.firstperson.versionless.mixinbase.*; +import net.minecraft.client.model.geom.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; @Mixin(ModelPart.class) public class ModelPartMixin implements ModelPartBase { @@ -47,13 +44,15 @@ public void setPivot(float x, float y, float z, CallbackInfo info) { } } + //? if < 1.21.9 { /*@Inject(method = "copyFrom", at = @At("RETURN")) public void copyTransform(ModelPart modelPart, CallbackInfo info) { if (moved) { zCopy = z; z = 5000; } - }*/ + } + *///? } @Override public boolean isHidden() { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java index ed0d1b0a..922d5781 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java @@ -1,21 +1,15 @@ package dev.tr7zw.firstperson.mixins; -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 dev.tr7zw.firstperson.FirstPersonModelCore; -import dev.tr7zw.firstperson.InventoryUtil; -import net.minecraft.client.Minecraft; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; +import dev.tr7zw.firstperson.*; +import net.minecraft.client.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.player.*; +import net.minecraft.world.item.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; //? if >= 1.21.5 { - -import net.minecraft.world.entity.LivingEntity; - @Mixin(LivingEntity.class) //? } else { @@ -23,7 +17,7 @@ //? } public class PlayerMixin { - /*@Inject(method = "getItemBySlot", at = @At("HEAD"), cancellable = true) + @Inject(method = "getItemBySlot", at = @At("HEAD"), cancellable = true) public void getItemBySlot(EquipmentSlot slot, CallbackInfoReturnable ci) { if (FirstPersonModelCore.instance.isRenderingPlayer() && Minecraft.getInstance().isSameThread() && (Object) this instanceof Player player) { @@ -39,6 +33,6 @@ public void getItemBySlot(EquipmentSlot slot, CallbackInfoReturnable return; } } - }*/ + } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java index 0b4f0ddd..8d6dd69a 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java @@ -1,10 +1,9 @@ package dev.tr7zw.firstperson.mixins; -import org.spongepowered.asm.mixin.Mixin; - -import dev.tr7zw.firstperson.access.PlayerModelAccess; -import net.minecraft.client.model.PlayerModel; -import net.minecraft.world.entity.LivingEntity; +import dev.tr7zw.firstperson.access.*; +import net.minecraft.client.model.*; +import net.minecraft.world.entity.*; +import org.spongepowered.asm.mixin.*; //? if < 1.21.3 { // import org.spongepowered.asm.mixin.Final; diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java index e2894c6e..5b973869 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java @@ -1,47 +1,24 @@ package dev.tr7zw.firstperson.mixins; -import java.util.ArrayList; -import java.util.List; +import dev.tr7zw.firstperson.*; +import dev.tr7zw.firstperson.access.*; +import dev.tr7zw.transition.mc.*; +import net.minecraft.client.*; +import net.minecraft.client.model.*; +import net.minecraft.client.renderer.entity.*; +import net.minecraft.client.renderer.entity.*; +import net.minecraft.client.renderer.entity.layers.*; +import net.minecraft.client.renderer.entity.player.*; +//? if >= 1.21.2 +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.util.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.item.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; -import dev.tr7zw.firstperson.InventoryUtil; -import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; -import dev.tr7zw.firstperson.versionless.mixinbase.ModelPartBase; -import dev.tr7zw.transition.mc.EntityUtil; -import net.minecraft.client.renderer.entity.player.AvatarRenderer; -import net.minecraft.client.renderer.entity.state.AvatarRenderState; -import net.minecraft.client.renderer.entity.state.EntityRenderState; -import net.minecraft.util.Mth; -import net.minecraft.world.entity.Avatar; -import net.minecraft.world.item.Items; -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.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import dev.tr7zw.firstperson.FirstPersonModelCore; -import dev.tr7zw.firstperson.access.PlayerRendererAccess; -import dev.tr7zw.firstperson.api.FirstPersonAPI; -import dev.tr7zw.firstperson.api.PlayerOffsetHandler; -import net.minecraft.client.Minecraft; -import net.minecraft.client.model.PlayerModel; -import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.client.renderer.entity.LivingEntityRenderer; -import net.minecraft.client.renderer.entity.layers.RenderLayer; -//import net.minecraft.client.renderer.entity.player.PlayerRenderer; -import net.minecraft.world.phys.Vec3; -//? if >= 1.18.2 { - -import net.minecraft.client.renderer.entity.EntityRendererProvider.Context; -//? } -//? if >= 1.21.6 && < 1.21.9 { -/* -import net.minecraft.client.renderer.entity.state.PlayerRenderState; -*///? } - //? if >= 1.21.9 { - -import net.minecraft.client.renderer.entity.state.AvatarRenderState; -//? } +import java.util.*; /** * Offset the player behind the camera @@ -49,12 +26,16 @@ * @author tr7zw * */ +//? if >= 1.21.9 { @Mixin(value = AvatarRenderer.class, priority = 500) +//? } else { +/*@Mixin(value = PlayerRenderer.class, priority = 500) +*///? } public abstract class PlayerRendererMixin extends LivingEntityRenderer implements PlayerRendererAccess { //? if >= 1.18.2 { - public PlayerRendererMixin(Context context, PlayerModel model, float shadowRadius) { + public PlayerRendererMixin(EntityRendererProvider.Context context, PlayerModel model, float shadowRadius) { super(context, model, shadowRadius); } //? } else { @@ -67,6 +48,7 @@ public PlayerRendererMixin(Context context, PlayerModel model, float shadowRadiu private static Minecraft fpmMcInstance = Minecraft.getInstance(); private List removedLayers = new ArrayList<>(); + //? if >= 1.21.9 { @Inject(method = "extractRenderState(Lnet/minecraft/world/entity/Avatar;Lnet/minecraft/client/renderer/entity/state/AvatarRenderState;F)V", at = @At("TAIL")) public void extractRenderState(Avatar avatar, AvatarRenderState avatarRenderState, float delta, CallbackInfo ci) { LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) avatarRenderState; @@ -93,6 +75,7 @@ public void extractRenderState(Avatar avatar, AvatarRenderState avatarRenderStat avatar.getOffhandItem())) access.setHideArms(true); } + //? } @Override public List getRenderLayers() { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java index b80f218e..96d2fc85 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java @@ -1,41 +1,27 @@ package dev.tr7zw.firstperson.mixins; +import com.mojang.blaze3d.vertex.*; +import dev.tr7zw.firstperson.*; +import lombok.*; +import net.minecraft.client.*; import net.minecraft.client.renderer.*; -import org.spongepowered.asm.mixin.Mixin; +import net.minecraft.client.renderer.entity.*; +//? if >= 1.21.2 +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.world.level.*; +import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.*; +import net.minecraft.world.entity.*; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; - -import dev.tr7zw.firstperson.FirstPersonModelCore; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.entity.EntityRenderDispatcher; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.LevelReader; - -//? if >= 1.21.5 { - -import net.minecraft.client.renderer.entity.state.HitboxRenderState; -//? } -//? if >= 1.21.3 { - -import net.minecraft.client.renderer.entity.state.EntityRenderState; -//? } else { - -// import org.spongepowered.asm.mixin.injection.At; -// import org.spongepowered.asm.mixin.injection.At.Shift; -// import org.spongepowered.asm.mixin.injection.Redirect; -// import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -// import com.mojang.blaze3d.vertex.VertexConsumer; -// import net.minecraft.client.renderer.MultiBufferSource; -// import net.minecraft.util.Mth; -// import net.minecraft.world.entity.Entity; -// import net.minecraft.world.level.LevelReader; -// import net.minecraft.world.phys.Vec3; -//? } +//? if < 1.21.3 { +/*import org.spongepowered.asm.mixin.injection.*; +import com.mojang.blaze3d.vertex.*; +import net.minecraft.client.renderer.*; +import net.minecraft.util.*; +import net.minecraft.world.level.*; +import net.minecraft.world.phys.*; +*///? } /** * Move the first person shadow to be at the correct location @@ -57,10 +43,10 @@ public abstract class RenderDispatcherMixin { @Inject(method = "renderShadow", at = @At("HEAD")) private static void renderShadow(PoseStack poseStack, MultiBufferSource multiBufferSource, EntityRenderState entityRenderState, float f, - //? if < 1.21.5 { + //? if < 1.21.5 { - // float g, - //? } + // float g, + //? } LevelReader levelReader, float h, CallbackInfo ci) { if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { poseStack.pushPose(); @@ -75,10 +61,10 @@ private static void renderShadow(PoseStack poseStack, MultiBufferSource multiBuf @Inject(method = "renderShadow", at = @At("RETURN")) private static void renderShadowEnd(PoseStack poseStack, MultiBufferSource multiBufferSource, EntityRenderState entityRenderState, float f, - //? if < 1.21.5 { + //? if < 1.21.5 { // float g, - //? } + //? } LevelReader levelReader, float h, CallbackInfo ci) { if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { entityRenderState.x = tmpX; @@ -89,13 +75,13 @@ private static void renderShadowEnd(PoseStack poseStack, MultiBufferSource multi @Inject(method = "renderHitbox", at = @At(value = "HEAD"), cancellable = true) private static void renderHitbox(PoseStack poseStack, VertexConsumer buffer, - //? if >= 1.21.5 { + //? if >= 1.21.5 { HitboxRenderState hitboxRenderState, - //? } else { + //? } else { // Entity entity, float red, float green, float blue, float alpha, - //? } + //? } CallbackInfo ci) { if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { ci.cancel(); @@ -122,7 +108,7 @@ private static void renderHitbox(PoseStack poseStack, VertexConsumer buffer, // return Mth.lerp(delta, old, cur); // } // - // @Inject(method = "renderShadow", at = @At(value = "invoke", target = "Lcom/mojang/blaze3d/vertex/PoseStack;last()Lcom/mojang/blaze3d/vertex/PoseStack$Pose;", shift = Shift.BEFORE)) + // @Inject(method = "renderShadow", at = @At(value = "invoke", target = "Lcom/mojang/blaze3d/vertex/PoseStack;last()Lcom/mojang/blaze3d/vertex/PoseStack$Pose;", shift = At.Shift.BEFORE)) // private static void shadowMove(PoseStack matrices, MultiBufferSource vertexConsumers, Entity entity, float opacity, // float tickDelta, LevelReader world, float radius, CallbackInfo ci) { // if (!FirstPersonModelCore.instance.isRenderingPlayerPost()) { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java index bde982cd..4386aaf7 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java @@ -1,27 +1,16 @@ package dev.tr7zw.firstperson.mixins; -import dev.tr7zw.firstperson.access.LivingEntityRenderStateAccess; -import net.minecraft.client.renderer.SubmitNodeCollector; -import net.minecraft.client.renderer.entity.state.AvatarRenderState; -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.CallbackInfo; - -import com.mojang.blaze3d.vertex.PoseStack; - -import dev.tr7zw.firstperson.FirstPersonModelCore; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.layers.StuckInBodyLayer; -import net.minecraft.world.entity.LivingEntity; -//? if >= 1.21.6 && < 1.21.9 { -/* -import net.minecraft.client.renderer.entity.state.PlayerRenderState; -*///? } - //? if >= 1.21.9 { - -import net.minecraft.client.renderer.entity.state.AvatarRenderState; -//? } +import com.mojang.blaze3d.vertex.*; +import dev.tr7zw.firstperson.*; +import dev.tr7zw.firstperson.access.*; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.entity.layers.*; +//? if >= 1.21.2 +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.world.entity.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; /** * @author KxmischesDomi | https://github.com/kxmischesdomi @@ -29,18 +18,27 @@ @Mixin(StuckInBodyLayer.class) public class StuckInBodyLayerMixin { - //? if >= 1.21.3 { - + //? if >= 1.21.9 { @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/AvatarRenderState;FF)V", at = @At("HEAD"), cancellable = true) public void disableStuckFeatureLayer(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, AvatarRenderState avatarRenderState, float f, float g, CallbackInfo ci) { - //? } else { + //? } else if >= 1.21.3 { + /* + @Inject(method = "render", at = @At("HEAD"), cancellable = true) + public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, + PlayerRenderState playerRenderState, float f, float g, CallbackInfo ci) { + + *///? } else { // @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) // public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, // T livingEntity, float f, float g, float h, float j, float k, float l, CallbackInfo ci) { //? } + //? if >= 1.21.9 { if (((LivingEntityRenderStateAccess) avatarRenderState).isCameraEntity() + //? } else { + /*if (FirstPersonModelCore.instance.isRenderingPlayer() + *///? } && !FirstPersonModelCore.instance.getConfig().renderStuckFeatures) { ci.cancel(); } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java index 11b517e9..f3c8a885 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java @@ -1,45 +1,27 @@ package dev.tr7zw.firstperson.mixins; -import net.minecraft.client.renderer.culling.Frustum; -import net.minecraft.client.renderer.entity.state.EntityRenderState; -import net.minecraft.client.renderer.state.LevelRenderState; -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.At.Shift; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.mojang.blaze3d.vertex.PoseStack; - -import dev.tr7zw.firstperson.FirstPersonModelCore; -import net.minecraft.client.Camera; -import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.MultiBufferSource.BufferSource; -import net.minecraft.client.renderer.RenderBuffers; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.phys.Vec3; -//? if >= 1.21.3 { - -import com.mojang.blaze3d.resource.GraphicsResourceAllocator; -//? } -//? if >= 1.21.0 { - -import net.minecraft.client.DeltaTracker; - -import java.util.List; - -//? } -//? if >= 1.19.3 { - -import org.joml.Matrix4f; -//? } else { - -// import com.mojang.math.Matrix4f; +import com.mojang.blaze3d.vertex.*; +import dev.tr7zw.firstperson.*; +import net.minecraft.client.*; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.culling.*; +//? if >= 1.21.2 { +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.client.renderer.state.*; //? } +import net.minecraft.world.entity.*; +import net.minecraft.world.phys.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; + +import java.util.*; +//? if >= 1.21.9 { +//? } else if >= 1.19.3 { +/*import org.joml.*; +*///? } else { + // import com.mojang.math.*; + //? } /** * Detects when the player is rendered and triggers the correct changes @@ -48,8 +30,14 @@ @Mixin(LevelRenderer.class) public abstract class WorldRendererMixin { + //? if >= 1.21.9 { @Shadow protected abstract EntityRenderState extractEntity(Entity arg, float f); + //? } else { + /*@Shadow + protected abstract void renderEntity(Entity entity, double cameraX, double cameraY, double cameraZ, float tickDelta, + PoseStack matrices, MultiBufferSource vertexConsumers); + *///? } @Shadow private RenderBuffers renderBuffers; @@ -71,7 +59,12 @@ public abstract class WorldRendererMixin { // public void render(DeltaTracker deltaTracker, boolean bl, Camera camera, GameRenderer gameRenderer, // LightTexture lightTexture, Matrix4f matrix4f, Matrix4f matrix4f2, CallbackInfo info) { // PoseStack matrices = new PoseStack(); - //? } else { + //? } else if < 1.21.9 { + /*@Inject(method = "renderEntities", at = @At(value = "HEAD")) + private void renderEntities(PoseStack poseStack, MultiBufferSource.BufferSource bufferSource, Camera camera, + DeltaTracker deltaTracker, List list, CallbackInfo ci) { + PoseStack matrices = new PoseStack(); + *///? } else { @Inject(method = "extractVisibleEntities", at = @At(value = "HEAD")) private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTracker, @@ -88,7 +81,10 @@ private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTr //? if < 1.21.0 { // renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), tickDelta, matrices, immediate); - //? } else { + //? } else if < 1.21.9 { + /*renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), + deltaTracker.getGameTimeDeltaPartialTick(false), matrices, immediate); + *///? } else { var ent = camera.getEntity(); var pos = ((EntityAccessor) ent).entityCulling$getRawPosition(); @@ -98,7 +94,8 @@ private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTr var xOld = ent.xOld; var yOld = ent.yOld; var zOld = ent.zOld; - FirstPersonModelCore.instance.getLogicHandler().updatePositionOffset(ent, deltaTracker.getGameTimeDeltaPartialTick(true)); + FirstPersonModelCore.instance.getLogicHandler().updatePositionOffset(ent, + deltaTracker.getGameTimeDeltaPartialTick(true)); var offset = FirstPersonModelCore.instance.getLogicHandler().getOffset(); ((EntityAccessor) ent).entityCulling$setRawPosition(pos.add(offset)); ent.xo += offset.x; diff --git a/src/main/java/dev/tr7zw/firstperson/modsupport/FreecamSupport.java b/src/main/java/dev/tr7zw/firstperson/modsupport/FreecamSupport.java index a4c898e9..640c1202 100644 --- a/src/main/java/dev/tr7zw/firstperson/modsupport/FreecamSupport.java +++ b/src/main/java/dev/tr7zw/firstperson/modsupport/FreecamSupport.java @@ -1,7 +1,7 @@ package dev.tr7zw.firstperson.modsupport; -import dev.tr7zw.firstperson.api.ActivationHandler; -import net.xolt.freecam.Freecam; +import dev.tr7zw.firstperson.api.*; +import net.xolt.freecam.*; public class FreecamSupport implements ActivationHandler { diff --git a/src/main/java/dev/tr7zw/firstperson/modsupport/ModSupportLoader.java b/src/main/java/dev/tr7zw/firstperson/modsupport/ModSupportLoader.java index c6755803..cf3c5ac9 100644 --- a/src/main/java/dev/tr7zw/firstperson/modsupport/ModSupportLoader.java +++ b/src/main/java/dev/tr7zw/firstperson/modsupport/ModSupportLoader.java @@ -1,9 +1,9 @@ package dev.tr7zw.firstperson.modsupport; -import dev.tr7zw.firstperson.api.FirstPersonAPI; -import dev.tr7zw.firstperson.versionless.FirstPersonBase; -import dev.tr7zw.transition.loader.ModLoaderUtil; -import lombok.experimental.UtilityClass; +import dev.tr7zw.firstperson.api.*; +import dev.tr7zw.firstperson.versionless.*; +import dev.tr7zw.transition.loader.*; +import lombok.experimental.*; @UtilityClass public class ModSupportLoader { diff --git a/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java b/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java index 62544c48..3e04cbd7 100644 --- a/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java +++ b/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java @@ -1,23 +1,12 @@ package dev.tr7zw.firstperson.modsupport; -import dev.kosmx.playerAnim.api.TransformType; -import dev.kosmx.playerAnim.core.impl.AnimationProcessor; -import dev.kosmx.playerAnim.core.util.Vec3f; -import dev.kosmx.playerAnim.impl.IAnimatedPlayer; -import dev.tr7zw.firstperson.api.PlayerOffsetHandler; -import dev.tr7zw.transition.mc.MathUtil; -import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.util.Mth; -import net.minecraft.world.phys.Vec3; -//? if < 1.20.0 { - -// import net.minecraft.client.Minecraft; -//? } -//? if >= 1.19.3 { - -import org.joml.Matrix4f; -import org.joml.Vector4f; -//? } else { +import dev.tr7zw.firstperson.api.*; +import net.minecraft.client.player.*; +import net.minecraft.world.phys.*; +//? if >= 1.21.9 { +//? } else if >= 1.19.3 { +/*import org.joml.*; +*///? } else { // import com.mojang.math.Matrix4f; // import com.mojang.math.Vector4f; diff --git a/src/main/resources/firstperson.mixins.json b/src/main/resources/firstperson.mixins.json index 00c9dd6d..cc0e92b7 100644 --- a/src/main/resources/firstperson.mixins.json +++ b/src/main/resources/firstperson.mixins.json @@ -8,6 +8,7 @@ "ArmorFeatureRendererMixin", "CustomHeadLayerMixin", "ElytraLayerMixin", + "EntityAccessor", "FeatureRendererMixin", "FishingBobberRendererMixin", "HeldItemFeatureRendererMixin", @@ -21,8 +22,7 @@ "PlayerRendererMixin", "RenderDispatcherMixin", "StuckInBodyLayerMixin", - "WorldRendererMixin", - "EntityAccessor" + "WorldRendererMixin" ], "injectors": { "defaultRequire": 1 diff --git a/src/test/java/dev/tr7zw/tests/MixinTests.java b/src/test/java/dev/tr7zw/tests/MixinTests.java index 64aa7699..85896976 100644 --- a/src/test/java/dev/tr7zw/tests/MixinTests.java +++ b/src/test/java/dev/tr7zw/tests/MixinTests.java @@ -2,26 +2,18 @@ package dev.tr7zw.tests; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import org.objenesis.Objenesis; -import org.objenesis.ObjenesisStd; - -import dev.tr7zw.firstperson.versionless.mixinbase.ModelPartBase; -import net.minecraft.SharedConstants; -import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.renderer.ItemInHandRenderer; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.entity.EntityRenderDispatcher; -import net.minecraft.client.renderer.entity.FishingHookRenderer; -import net.minecraft.client.renderer.entity.layers.ArrowLayer; -import net.minecraft.client.renderer.entity.layers.CapeLayer; -import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; -import net.minecraft.client.renderer.entity.layers.ItemInHandLayer; -import net.minecraft.server.Bootstrap; +import dev.tr7zw.firstperson.versionless.mixinbase.*; +import net.minecraft.*; +import net.minecraft.client.model.*; +import net.minecraft.client.model.geom.*; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.entity.*; +import net.minecraft.client.renderer.entity.layers.*; +import net.minecraft.server.*; +import org.junit.jupiter.api.*; +import org.objenesis.*; + +import static org.junit.jupiter.api.Assertions.*; public class MixinTests { From e9d967f879a71f416424af8de68b80da5e799bdf Mon Sep 17 00:00:00 2001 From: tr7zw Date: Sun, 9 Nov 2025 21:29:04 +0100 Subject: [PATCH 7/8] Fix offsets in all versions --- .../firstperson/FirstPersonModelCore.java | 18 +- .../dev/tr7zw/firstperson/InventoryUtil.java | 38 ++-- .../firstperson/access/PlayerModelAccess.java | 12 +- .../config/ConfigScreenProvider.java | 14 +- .../mixins/AgeableListModelMixin.java | 30 ++-- .../mixins/CustomHeadLayerMixin.java | 16 +- .../firstperson/mixins/ElytraLayerMixin.java | 26 +-- .../firstperson/mixins/EntityAccessor.java | 4 - .../mixins/FeatureRendererMixin.java | 62 +++---- .../mixins/FishingBobberRendererMixin.java | 62 +++---- .../mixins/HeldItemFeatureRendererMixin.java | 167 +++++++++--------- .../mixins/HeldItemRendererMixin.java | 8 +- .../mixins/LivingEntityRendererMixin.java | 52 +++--- .../tr7zw/firstperson/mixins/PlayerMixin.java | 6 +- .../firstperson/mixins/PlayerModelMixin.java | 28 +-- .../mixins/PlayerRendererMixin.java | 10 +- .../mixins/RenderDispatcherMixin.java | 100 +++++------ .../mixins/StuckInBodyLayerMixin.java | 22 +-- .../mixins/WorldRendererMixin.java | 78 ++++---- .../modsupport/PlayerAnimatorSupport.java | 8 +- src/test/java/dev/tr7zw/tests/MixinTests.java | 2 +- 21 files changed, 385 insertions(+), 378 deletions(-) diff --git a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java index 60cb25ab..7011ee18 100644 --- a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java +++ b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java @@ -21,8 +21,8 @@ public abstract class FirstPersonModelCore extends FirstPersonBase { private KeyMapping keyBinding = new KeyMapping("key.firstperson.toggle", 295, //? if >= 1.21.9 { new KeyMapping.Category(ResourceLocation.fromNamespaceAndPath("firstperson", "keybind"))); - //? } else { - /*"firstperson.keybind"); + //? } else { + /*"firstperson.keybind"); *///? } private boolean lateInit = true; @Deprecated @@ -118,16 +118,16 @@ public void setEnabled(boolean enabled) { public void updatePlayerLayers() { PlayerRendererAccess access = null; //? if >= 1.21.6 { - + access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher().getRenderer( /*? if >= 1.21.9 {*/new AvatarRenderState()/*?} else {*//*new PlayerRenderState()*//*? }*/); //? } else { - - // if (Minecraft.getInstance().player != null) { - // access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() - // .getRenderer(Minecraft.getInstance().player); - // } - //? } +/* + if (Minecraft.getInstance().player != null) { + access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() + .getRenderer(Minecraft.getInstance().player); + } + *///? } if (access != null) { access.updatePartsList(lastCameraType != CameraType.FIRST_PERSON); } diff --git a/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java b/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java index 8c483473..a9d38e13 100644 --- a/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java +++ b/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java @@ -12,49 +12,49 @@ public static Inventory getInventory(Player player) { return player.getInventory(); //? } else { - - // return player.inventory; - //? } + /* + return player.inventory; + *///? } } public static ItemStack getSelected(Inventory inventory) { //? if >= 1.21.5 { - + return inventory.getSelectedItem(); //? } else { - - // return inventory.getSelected(); - //? } +/* + return inventory.getSelected(); + *///? } } public static ItemStack getOffhand(Inventory inventory) { //? if >= 1.21.5 { - + return inventory.getItem(Inventory.SLOT_OFFHAND); //? } else { - - // return inventory.offhand.get(0); - //? } +/* + return inventory.offhand.get(0); + *///? } } public static int getSelectedId(Inventory inventory) { //? if >= 1.21.5 { - + return inventory.getSelectedSlot(); //? } else { - - // return inventory.selected; - //? } +/* + return inventory.selected; + *///? } } public static List getNonEquipmentItems(Inventory inventory) { //? if >= 1.21.5 { - + return inventory.getNonEquipmentItems(); //? } else { - - // return inventory.items; - //? } +/* + return inventory.items; + *///? } } } diff --git a/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java b/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java index 71855ac9..978b1047 100644 --- a/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java +++ b/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java @@ -1,15 +1,15 @@ package dev.tr7zw.firstperson.access; //? if < 1.21.3 { - -// import net.minecraft.client.model.geom.ModelPart; -//? } +/* +import net.minecraft.client.model.geom.ModelPart; +*///? } public interface PlayerModelAccess { //? if < 1.21.3 { - - // ModelPart getCloak(); - //? } +/* + ModelPart getCloak(); + *///? } } diff --git a/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java b/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java index 6a19b8b2..45aa1f88 100644 --- a/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java +++ b/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java @@ -141,16 +141,16 @@ public CustomConfigScreen(Screen previous) { // Layers PlayerRendererAccess access = null; //? if >= 1.21.6 { - + access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher().getRenderer( /*? if >= 1.21.9 {*/new AvatarRenderState()/*?} else {*//*new PlayerRenderState()*//*? }*/); //? } else { - - // if (Minecraft.getInstance().player != null) { - // access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() - // .getRenderer(Minecraft.getInstance().player); - // } - //? } +/* + if (Minecraft.getInstance().player != null) { + access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() + .getRenderer(Minecraft.getInstance().player); + } + *///? } if (access != null) { WListPanel layerList = new WListPanel( access.getRenderLayers(), () -> new WToggleButton(ComponentProvider.EMPTY), (s, l) -> { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/AgeableListModelMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/AgeableListModelMixin.java index 1f93f8fa..716d3443 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/AgeableListModelMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/AgeableListModelMixin.java @@ -9,19 +9,19 @@ public abstract class AgeableListModelMixin { } //? } else { -//import dev.tr7zw.firstperson.access.*; -//import net.minecraft.client.model.*; +/*import dev.tr7zw.firstperson.access.*; +import net.minecraft.client.model.*; -// @Mixin(AgeableListModel.class) -// public abstract class AgeableListModelMixin implements AgeableListModelAccess { -// -// @Override -// public Iterable firstPersonHeadPartsGetter() { -// return headParts(); -// } -// -// @Shadow -// public abstract Iterable headParts(); -// -// } -//? } +@Mixin(AgeableListModel.class) +public abstract class AgeableListModelMixin implements AgeableListModelAccess { + + @Override + public Iterable firstPersonHeadPartsGetter() { + return headParts(); + } + + @Shadow + public abstract Iterable headParts(); + +} +*///? } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java index 28e5e80f..bec0043c 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java @@ -21,22 +21,22 @@ public class CustomHeadLayerMixin { //? } else { /*@Inject(method = "render", at = @At("HEAD"), cancellable = true) *///? } - //? if >= 1.21.9 { - + //? if >= 1.21.9 { + public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, LivingEntityRenderState livingEntityRenderState, float f, float g, CallbackInfo info) { //? } else >= 1.21.3 { - /*public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, + /*public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntityRenderState livingEntityRenderState, float f, float g, CallbackInfo info) { *///? } else { - - // public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntity livingEntity, - // float f, float g, float h, float j, float k, float l, CallbackInfo info) { - //? } +/* + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntity livingEntity, + float f, float g, float h, float j, float k, float l, CallbackInfo info) { + *///? } //? if >= 1.21.9 { if (((LivingEntityRenderStateAccess) livingEntityRenderState).isCameraEntity()) { //? } else { - /*if (FirstPersonModelCore.instance.isRenderingPlayer()) { + /*if (FirstPersonModelCore.instance.isRenderingPlayer()) { *///? } info.cancel(); } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java index c0b108ff..e711d36e 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java @@ -21,34 +21,34 @@ @Mixin(WingsLayer.class) //? } else { - -// @Mixin(ElytraLayer.class) -//? } +/* +@Mixin(ElytraLayer.class) +*///? } public class ElytraLayerMixin { //? if >= 1.21.9 { - + @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/HumanoidRenderState;FF)V", at = @At("HEAD"), cancellable = true) public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, HumanoidRenderState humanoidRenderState, float f, float g, CallbackInfo ci) { //? } else if >= 1.21.3 { - /*@Inject(method = "render", at = @At("HEAD"), cancellable = true) - public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, + /*@Inject(method = "render", at = @At("HEAD"), cancellable = true) + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, HumanoidRenderState humanoidRenderState, float f, float g, CallbackInfo ci) { *///? } else { - - // @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) - // public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, T livingEntity, float f, - // float g, float h, float j, float k, float l, CallbackInfo ci) { - //? } +/* + @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, T livingEntity, float f, + float g, float h, float j, float k, float l, CallbackInfo ci) { + *///? } //? if >= 1.21.9 { if (((LivingEntityRenderStateAccess) humanoidRenderState).isCameraEntity() && humanoidRenderState.isVisuallySwimming) { //? } else { - /*if (FirstPersonModelCore.instance.isRenderingPlayer() + /*if (FirstPersonModelCore.instance.isRenderingPlayer() && Minecraft.getInstance().getCameraEntity() instanceof AbstractClientPlayer player && FirstPersonModelCore.instance.getLogicHandler().isSwimming(player)) { - + *///? } ci.cancel(); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/EntityAccessor.java b/src/main/java/dev/tr7zw/firstperson/mixins/EntityAccessor.java index 256c6b9d..85758e5a 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/EntityAccessor.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/EntityAccessor.java @@ -8,14 +8,10 @@ @Mixin(Entity.class) public interface EntityAccessor { - //? if >= 1.21.9 { - @Accessor("position") Vec3 entityCulling$getRawPosition(); @Accessor("position") void entityCulling$setRawPosition(Vec3 position); - //? } - } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java index e4a6a36f..1bb8c19c 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java @@ -17,29 +17,29 @@ import org.spongepowered.asm.mixin.injection.callback.*; //? if < 1.21.4 { - -// import net.minecraft.client.model.VillagerHeadModel; -//? } +/^ +import net.minecraft.client.model.VillagerHeadModel; +^///? } @Mixin(RenderLayer.class) @NoArgsConstructor(access = AccessLevel.PRIVATE) public abstract class FeatureRendererMixin { @Inject(method = "renderColoredCutoutModel", at = @At("HEAD"), cancellable = true) //? if >= 1.21.3 { - + private static void renderColoredCutoutModel(EntityModel model, ResourceLocation resourceLocation, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntityRenderState livingEntityRenderState, int j, CallbackInfo ci) { //? } else if >= 1.21.0 { - // private static void removeHead(EntityModel model, ResourceLocation texture, - // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, int color, CallbackInfo ci) { - //? } else { - - // private static void removeHead(EntityModel model, ResourceLocation texture, - // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, float red, float green, - // float blue, CallbackInfo ci) { - //? } + // private static void removeHead(EntityModel model, ResourceLocation texture, + // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, int color, CallbackInfo ci) { + //? } else { +/^ + private static void removeHead(EntityModel model, ResourceLocation texture, + PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, float red, float green, + float blue, CallbackInfo ci) { + ^///? } if (FirstPersonModelCore.instance.isRenderingPlayer()) { if (!(model instanceof HeadedModel)) { ci.cancel(); @@ -47,38 +47,38 @@ private static void renderColoredCutoutModel(EntityModel model, ResourceLocat } ((ModelPartBase) (Object) ((HeadedModel) model).getHead()).setHidden(); //? if < 1.21.4 { - - // if (model instanceof VillagerHeadModel villager) { - // villager.hatVisible(false); - // } - //? } +/^ + if (model instanceof VillagerHeadModel villager) { + villager.hatVisible(false); + } + ^///? } } } @Inject(method = "renderColoredCutoutModel", at = @At("RETURN"), cancellable = true) //? if >= 1.21.3 { - + private static void removeReturn(EntityModel model, ResourceLocation resourceLocation, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntityRenderState livingEntityRenderState, int j, CallbackInfo ci) { //? } else if >= 1.21.0 { - // private static void removeReturn(EntityModel model, ResourceLocation texture, - // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, int color, CallbackInfo ci) { - //? } else { - - // private static void removeReturn(EntityModel model, ResourceLocation texture, - // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, float red, float green, - // float blue, CallbackInfo ci) { - //? } + // private static void removeReturn(EntityModel model, ResourceLocation texture, + // PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, int color, CallbackInfo ci) { + //? } else { +/^ + private static void removeReturn(EntityModel model, ResourceLocation texture, + PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, float red, float green, + float blue, CallbackInfo ci) { + ^///? } if (model instanceof HeadedModel) { ((ModelPartBase) (Object) ((HeadedModel) model).getHead()).showAgain(); //? if < 1.21.4 { - - // if (model instanceof VillagerHeadModel villager) { - // villager.hatVisible(true); - // } - //? } +/^ + if (model instanceof VillagerHeadModel villager) { + villager.hatVisible(true); + } + ^///? } } } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java index 7280d2a7..63b3e46b 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java @@ -28,9 +28,9 @@ private boolean doCorrect() { } //? if <= 1.20.4 { - - // @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Options;getCameraType()Lnet/minecraft/client/CameraType;")) - //? } else { + /* + @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Options;getCameraType()Lnet/minecraft/client/CameraType;")) + *///? } else { @Redirect(method = "getPlayerHandPos", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Options;getCameraType()Lnet/minecraft/client/CameraType;")) //? } @@ -43,18 +43,18 @@ private CameraType redirect(Options gameOptions) { //? } else { /*@Inject(method = "render", at = @At("HEAD")) *///? } - //? if >= 1.21.9 { - + //? if >= 1.21.9 { + public void render(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState cameraRenderState, CallbackInfo ci) { //? } else if >= 1.21.3 { - /*public void render(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, + /*public void render(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo info) { *///? } else { - - // private void calcOffset(FishingHook fishingBobberEntity, float f, float g, PoseStack matrixStack, - // MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { - //? } +/* + private void calcOffset(FishingHook fishingBobberEntity, float f, float g, PoseStack matrixStack, + MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { + *///? } if (FirstPersonModelCore.instance.isRenderingPlayer()) { offsetvec3d = FirstPersonModelCore.instance.getLogicHandler().getOffset();// getPositionOffset((Player) // fishingBobberEntity.getOwner(), @@ -65,27 +65,27 @@ public void render(FishingHookRenderState fishingHookRenderState, PoseStack pose } //? if <= 1.20.4 { - - // @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getX()D")) - // private double offsetX(Player playerEntity) { - // return playerEntity.getX() + offsetvec3d.x(); - // } - // - // @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getZ()D")) - // private double offsetZ(Player playerEntity) { - // return playerEntity.getZ() + offsetvec3d.z(); - // } - // - // @Redirect(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/player/Player;xo:D")) - // private double prevOffsetX(Player playerEntity) { - // return playerEntity.xo + offsetvec3d.x(); - // } - // - // @Redirect(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/player/Player;zo:D")) - // private double prevOffsetZ(Player playerEntity) { - // return playerEntity.zo + offsetvec3d.z(); - // } - //? } else { + /* + @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getX()D")) + private double offsetX(Player playerEntity) { + return playerEntity.getX() + offsetvec3d.x(); + } + + @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getZ()D")) + private double offsetZ(Player playerEntity) { + return playerEntity.getZ() + offsetvec3d.z(); + } + + @Redirect(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/player/Player;xo:D")) + private double prevOffsetX(Player playerEntity) { + return playerEntity.xo + offsetvec3d.x(); + } + + @Redirect(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/player/Player;zo:D")) + private double prevOffsetZ(Player playerEntity) { + return playerEntity.zo + offsetvec3d.z(); + } + *///? } else { @Inject(method = "getPlayerHandPos", at = @At("RETURN"), cancellable = true) private void getPlayerHandPosOffset(Player player, float f, float g, CallbackInfoReturnable ci) { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java index ebb84b1b..eefa1aa3 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java @@ -1,83 +1,84 @@ -package dev.tr7zw.firstperson.mixins; - -import com.mojang.blaze3d.vertex.*; -import dev.tr7zw.firstperson.*; -import dev.tr7zw.firstperson.access.*; -import net.minecraft.client.*; -import net.minecraft.client.resources.model.*; -import net.minecraft.client.renderer.*; -import net.minecraft.client.renderer.entity.layers.*; -//? if >= 1.21.2 -import net.minecraft.client.renderer.entity.state.*; -import net.minecraft.client.renderer.item.*; -import net.minecraft.world.entity.*; -import org.spongepowered.asm.mixin.*; -import org.spongepowered.asm.mixin.injection.*; -import org.spongepowered.asm.mixin.injection.callback.*; - -//? if < 1.21.4 -// import net.minecraft.world.item.*; - -//? if >= 1.19.4 { - -//? if < 1.21.4 { - -// import net.minecraft.world.item.ItemDisplayContext; -//? } -//? } else { - -// import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; -//? } - -/** - * Stops items in the hand from rendering while in first person. - * - */ -@Mixin(ItemInHandLayer.class) -public class HeldItemFeatureRendererMixin { - - //? if >= 1.21.9 { - @Inject(at = @At("HEAD"), method = "submitArmWithItem", cancellable = true) - //? } else { - /*@Inject(at = @At("HEAD"), method = "renderArmWithItem", cancellable = true) - *///? } - //? if >= 1.21.9 { - - private void renderArmWithItem(ArmedEntityRenderState armedEntityRenderState, - ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, - SubmitNodeCollector submitNodeCollector, int i, CallbackInfo ci) { - //? } else if >= 1.21.4 { - /*private void renderArmWithItem(ArmedEntityRenderState livingEntityRenderState, - ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, - MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { - *///? } else if >= 1.21.3 { - - // private void renderArmWithItem(LivingEntityRenderState livingEntityRenderState, BakedModel bakedModel, - // ItemStack itemStack, ItemDisplayContext itemDisplayContext, HumanoidArm humanoidArm, PoseStack poseStack, - // MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { - //? } else if >= 1.19.4 { - - // private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, ItemDisplayContext itemDisplayContext, - // HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { - //? } else { - - // private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, TransformType transformType, - // HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { - //? } - //? if >= 1.21.9 { - LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) armedEntityRenderState; - if (access.hideLeftArm() && access.hideRightArm() - && !FirstPersonModelCore.instance.getLogicHandler().lookingDown(armedEntityRenderState)) { - ci.cancel(); - } - //? } else { - /*if (FirstPersonModelCore.instance.isRenderingPlayer()) { - if (FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(Minecraft.getInstance().player) - && !FirstPersonModelCore.instance.getLogicHandler().lookingDown()) { - ci.cancel(); - } - } - *///? } - } - -} +package dev.tr7zw.firstperson.mixins; + +import com.mojang.blaze3d.vertex.*; +import dev.tr7zw.firstperson.*; +import dev.tr7zw.firstperson.access.*; +import net.minecraft.client.*; +import net.minecraft.client.resources.model.*; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.entity.layers.*; +//? if >= 1.21.2 +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.client.renderer.item.*; +import net.minecraft.world.entity.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; + +//? if < 1.21.4 +/*import net.minecraft.world.item.*; */ + +//? if >= 1.19.4 { + +//? if < 1.21.4 { +/* +import net.minecraft.world.item.ItemDisplayContext; +*///? } +//? } else { +/* + import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; +*///? } + +/** + * Stops items in the hand from rendering while in first person. + * + */ +@Mixin(ItemInHandLayer.class) +public class HeldItemFeatureRendererMixin { + + //? if >= 1.21.9 { + @Inject(at = @At("HEAD"), method = "submitArmWithItem", cancellable = true) + //? } else { + /*@Inject(at = @At("HEAD"), method = "renderArmWithItem", cancellable = true) + *///? } + //? if >= 1.21.9 { + + private void renderArmWithItem(ArmedEntityRenderState armedEntityRenderState, + ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, + SubmitNodeCollector submitNodeCollector, int i, CallbackInfo ci) { + //? } else if >= 1.21.4 { + /*private void renderArmWithItem(ArmedEntityRenderState livingEntityRenderState, + ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, + MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { + *///? } else if >= 1.21.3 { + + // private void renderArmWithItem(LivingEntityRenderState livingEntityRenderState, BakedModel bakedModel, + // ItemStack itemStack, ItemDisplayContext itemDisplayContext, HumanoidArm humanoidArm, PoseStack poseStack, + // MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { + //? } else if >= 1.19.4 { +/* + private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, + ItemDisplayContext itemDisplayContext, HumanoidArm humanoidArm, PoseStack poseStack, + MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { + *///? } else { + /* + private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, TransformType transformType, + HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { + *///? } + //? if >= 1.21.9 { + LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) armedEntityRenderState; + if (access.hideLeftArm() && access.hideRightArm() + && !FirstPersonModelCore.instance.getLogicHandler().lookingDown(armedEntityRenderState)) { + ci.cancel(); + } + //? } else { + /*if (FirstPersonModelCore.instance.isRenderingPlayer()) { + if (FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(Minecraft.getInstance().player) + && !FirstPersonModelCore.instance.getLogicHandler().lookingDown()) { + ci.cancel(); + } + } + *///? } + } + +} diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java index a0153588..6f918abb 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java @@ -48,7 +48,7 @@ public void renderFirstPersonItem(AbstractClientPlayer player, float deltaTick, float swingProgress, ItemStack item, float equipProgress, PoseStack matrices, SubmitNodeCollector vertexConsumers, int light, CallbackInfo info) { //? } else { - /*public void renderFirstPersonItem(AbstractClientPlayer player, float tickDelta, float pitch, InteractionHand hand, + /*public void renderFirstPersonItem(AbstractClientPlayer player, float tickDelta, float pitch, InteractionHand hand, float swingProgress, ItemStack item, float equipProgress, PoseStack matrices, MultiBufferSource vertexConsumers, int light, CallbackInfo info) { *///? } @@ -79,9 +79,9 @@ public void renderFirstPersonItem(AbstractClientPlayer player, float deltaTick, || player.isScoping()) { //? } else { - - // || false) { - //? } + /* + || false) { + *///? } return; } boolean bl = hand == InteractionHand.MAIN_HAND; diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java index 6a950d73..f7ab3fb8 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java @@ -44,11 +44,11 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma } LivingEntity livingEntity = (LivingEntity) entity; //? } else { - - // @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/EntityModel;setupAnim(Lnet/minecraft/world/entity/Entity;FFFFF)V", shift = At.Shift.AFTER), cancellable = true) - // public void renderPostAnim(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, - // MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { - //? } +/^ + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/EntityModel;setupAnim(Lnet/minecraft/world/entity/Entity;FFFFF)V", shift = At.Shift.AFTER), cancellable = true) + public void renderPostAnim(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, + MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { + ^///? } if (!revert.isEmpty()) { for (Runnable r : revert) { r.run(); @@ -89,7 +89,7 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma humanModel.leftArm.xRot += offset; // humanModel.rightArm.offsetRotation(new Vector3f(offset, 0, 0)); // humanModel.leftArm.offsetRotation(new Vector3f(offset, 0, 0)); - + if (!FirstPersonModelCore.instance.getLogicHandler().lookingDown()) {// TODO DYNAMIC HAND if (!InventoryUtil.getOffhand(InventoryUtil.getInventory(player)).isEmpty() || livingEntity.getMainHandItem().getItem().equals(Items.FILLED_MAP)) { @@ -108,14 +108,14 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma } } //? if < 1.21.4 { - - // if (model instanceof VillagerHeadModel villaterHead) { - // villaterHead.hatVisible(false); - // revert.add(() -> { - // villaterHead.hatVisible(true); - // }); - // } - //? } +/^ + if (model instanceof VillagerHeadModel villaterHead) { + villaterHead.hatVisible(false); + revert.add(() -> { + villaterHead.hatVisible(true); + }); + } + ^///? } if (model instanceof PlayerModel playerModel) { headShouldBeHidden = true; ((ModelPartBase) (Object) playerModel.hat).setHidden(); @@ -135,7 +135,7 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma playerModel.leftSleeve.xRot += offset; // playerModel.rightSleeve.offsetRotation(new Vector3f(offset, 0, 0)); // playerModel.leftSleeve.offsetRotation(new Vector3f(offset, 0, 0)); - + if (!FirstPersonModelCore.instance.getLogicHandler().lookingDown()) {// TODO DYNAMIC HAND if (!InventoryUtil.getOffhand(InventoryUtil.getInventory(player)).isEmpty() || livingEntity.getMainHandItem().getItem().equals(Items.FILLED_MAP)) { @@ -154,20 +154,20 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma && FirstPersonModelCore.instance.getLogicHandler().isSwimming(player)) { ((ModelPartBase) (Object) playerModel.body).setHidden(); //? if >= 1.21.3 { - + if (livingEntityRenderState instanceof PlayerRenderState prs) { prs.showCape = false; } //? } else { - - // ((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).setHidden(); - //? } +/^ + ((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).setHidden(); + ^///? } revert.add(() -> { ((ModelPartBase) (Object) playerModel.body).showAgain(); //? if < 1.21.3 { - - // ((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).showAgain(); - //? } +/^ + ((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).showAgain(); + ^///? } }); } if (!headShouldBeHidden) { @@ -193,10 +193,10 @@ private void checkIfCameraEntity(LivingEntity livingEntity, LivingEntityRenderSt public void renderEnd(LivingEntityRenderState livingEntityRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo info) { //? } else { - - // public void renderReturn(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, - // MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { - //? } +/^ + public void renderReturn(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, + MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { + ^///? } if (!revert.isEmpty()) { for (Runnable r : revert) { r.run(); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java index 922d5781..27a8a301 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java @@ -12,9 +12,9 @@ //? if >= 1.21.5 { @Mixin(LivingEntity.class) //? } else { - -// @Mixin(Player.class) -//? } +/* +@Mixin(Player.class) +*///? } public class PlayerMixin { @Inject(method = "getItemBySlot", at = @At("HEAD"), cancellable = true) diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java index 8d6dd69a..c6de4b4d 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java @@ -5,25 +5,25 @@ import net.minecraft.world.entity.*; import org.spongepowered.asm.mixin.*; //? if < 1.21.3 { - -// import org.spongepowered.asm.mixin.Final; -// import org.spongepowered.asm.mixin.Shadow; -// import net.minecraft.client.model.geom.ModelPart; -//? } +/* +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Shadow; +import net.minecraft.client.model.geom.ModelPart; +*///? } @Mixin(value = PlayerModel.class) public class PlayerModelMixin implements PlayerModelAccess { //? if < 1.21.3 { +/* + @Shadow + @Final + private ModelPart cloak; - // @Shadow - // @Final - // private ModelPart cloak; - // - // @Override - // public ModelPart getCloak() { - // return cloak; - // } - //? } + @Override + public ModelPart getCloak() { + return cloak; + } + *///? } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java index 5b973869..0773359c 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRendererMixin.java @@ -39,11 +39,11 @@ public PlayerRendererMixin(EntityRendererProvider.Context context, PlayerModel m super(context, model, shadowRadius); } //? } else { - - // public PlayerRendererMixin(EntityRenderDispatcher entityRenderDispatcher, EntityModel entityModel, float f) { - // super(entityRenderDispatcher, entityModel, f); - // } - //? } + /* + public PlayerRendererMixin(EntityRenderDispatcher entityRenderDispatcher, EntityModel entityModel, float f) { + super(entityRenderDispatcher, entityModel, f); + } + *///? } private static Minecraft fpmMcInstance = Minecraft.getInstance(); private List removedLayers = new ArrayList<>(); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java index 96d2fc85..93db8a8a 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java @@ -45,7 +45,7 @@ private static void renderShadow(PoseStack poseStack, MultiBufferSource multiBuf EntityRenderState entityRenderState, float f, //? if < 1.21.5 { - // float g, + float g, //? } LevelReader levelReader, float h, CallbackInfo ci) { if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { @@ -63,7 +63,7 @@ private static void renderShadowEnd(PoseStack poseStack, MultiBufferSource multi EntityRenderState entityRenderState, float f, //? if < 1.21.5 { - // float g, + float g, //? } LevelReader levelReader, float h, CallbackInfo ci) { if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { @@ -76,11 +76,11 @@ private static void renderShadowEnd(PoseStack poseStack, MultiBufferSource multi @Inject(method = "renderHitbox", at = @At(value = "HEAD"), cancellable = true) private static void renderHitbox(PoseStack poseStack, VertexConsumer buffer, //? if >= 1.21.5 { - + /^ HitboxRenderState hitboxRenderState, - //? } else { + ^///? } else { - // Entity entity, float red, float green, float blue, float alpha, + Entity entity, float red, float green, float blue, float alpha, //? } CallbackInfo ci) { if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { @@ -89,53 +89,53 @@ private static void renderHitbox(PoseStack poseStack, VertexConsumer buffer, } *///? } else { +/* + @Redirect(method = "renderShadow", at = @At(value = "invoke", target = "Lnet/minecraft/util/Mth;lerp(DDD)D", ordinal = 0)) + private static double shadowOffsetX(double delta, double old, double cur, PoseStack poseStack, + MultiBufferSource multiBufferSource, Entity entity, float f, float g, LevelReader levelReader, float h) { + if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { + return Mth.lerp(delta, old, cur) + FirstPersonModelCore.instance.getLogicHandler().getOffset().x; + } + return Mth.lerp(delta, old, cur); + } - // @Redirect(method = "renderShadow", at = @At(value = "invoke", target = "Lnet/minecraft/util/Mth;lerp(DDD)D", ordinal = 0)) - // private static double shadowOffsetX(double delta, double old, double cur, PoseStack poseStack, - // MultiBufferSource multiBufferSource, Entity entity, float f, float g, LevelReader levelReader, float h) { - // if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { - // return Mth.lerp(delta, old, cur) + FirstPersonModelCore.instance.getLogicHandler().getOffset().x; - // } - // return Mth.lerp(delta, old, cur); - // } - // - // @Redirect(method = "renderShadow", at = @At(value = "invoke", target = "Lnet/minecraft/util/Mth;lerp(DDD)D", ordinal = 2)) - // private static double shadowOffsetZ(double delta, double old, double cur, PoseStack poseStack, - // MultiBufferSource multiBufferSource, Entity entity, float f, float g, LevelReader levelReader, float h) { - // if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { - // return Mth.lerp(delta, old, cur) + FirstPersonModelCore.instance.getLogicHandler().getOffset().z; - // } - // return Mth.lerp(delta, old, cur); - // } - // - // @Inject(method = "renderShadow", at = @At(value = "invoke", target = "Lcom/mojang/blaze3d/vertex/PoseStack;last()Lcom/mojang/blaze3d/vertex/PoseStack$Pose;", shift = At.Shift.BEFORE)) - // private static void shadowMove(PoseStack matrices, MultiBufferSource vertexConsumers, Entity entity, float opacity, - // float tickDelta, LevelReader world, float radius, CallbackInfo ci) { - // if (!FirstPersonModelCore.instance.isRenderingPlayerPost()) { - // return; - // } - // Vec3 offset = FirstPersonModelCore.instance.getLogicHandler().getOffset(); - // matrices.translate(offset.x, offset.y, offset.z); - // } - // - // @Inject(method = "renderHitbox", at = @At(value = "HEAD"), cancellable = true) - // //? if < 1.17.0 { - - // // private void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, CallbackInfo ci) { - // //? } else if < 1.21.0 { + @Redirect(method = "renderShadow", at = @At(value = "invoke", target = "Lnet/minecraft/util/Mth;lerp(DDD)D", ordinal = 2)) + private static double shadowOffsetZ(double delta, double old, double cur, PoseStack poseStack, + MultiBufferSource multiBufferSource, Entity entity, float f, float g, LevelReader levelReader, float h) { + if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { + return Mth.lerp(delta, old, cur) + FirstPersonModelCore.instance.getLogicHandler().getOffset().z; + } + return Mth.lerp(delta, old, cur); + } - // // private static void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, - // // CallbackInfo ci) { - // //? } else { + @Inject(method = "renderShadow", at = @At(value = "invoke", target = "Lcom/mojang/blaze3d/vertex/PoseStack;last()Lcom/mojang/blaze3d/vertex/PoseStack$Pose;", shift = At.Shift.BEFORE)) + private static void shadowMove(PoseStack matrices, MultiBufferSource vertexConsumers, Entity entity, float opacity, + float tickDelta, LevelReader world, float radius, CallbackInfo ci) { + if (!FirstPersonModelCore.instance.isRenderingPlayerPost()) { + return; + } + Vec3 offset = FirstPersonModelCore.instance.getLogicHandler().getOffset(); + matrices.translate(offset.x, offset.y, offset.z); + } - // // private static void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, - // // float g, float h, float i, - // // CallbackInfo ci) { - // //? } - // if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { - // ci.cancel(); - // } - // } - //? } + @Inject(method = "renderHitbox", at = @At(value = "HEAD"), cancellable = true) + //? if < 1.17.0 { + /^ + private void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, CallbackInfo ci) { + ^///? } else if < 1.21.0 { +/^ + private static void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, + CallbackInfo ci) { + ^///? } else { + + private static void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, + float g, float h, float i, + CallbackInfo ci) { + //? } + if (FirstPersonModelCore.instance.isRenderingPlayerPost()) { + ci.cancel(); + } + } + *///? } } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java index 4386aaf7..5e55170f 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java @@ -23,22 +23,22 @@ public class StuckInBodyLayerMixin { public void disableStuckFeatureLayer(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, AvatarRenderState avatarRenderState, float f, float g, CallbackInfo ci) { //? } else if >= 1.21.3 { - /* - @Inject(method = "render", at = @At("HEAD"), cancellable = true) - public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, + /* + @Inject(method = "render", at = @At("HEAD"), cancellable = true) + public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, PlayerRenderState playerRenderState, float f, float g, CallbackInfo ci) { - + *///? } else { - - // @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) - // public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, - // T livingEntity, float f, float g, float h, float j, float k, float l, CallbackInfo ci) { - //? } +/* + @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) + public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, + T livingEntity, float f, float g, float h, float j, float k, float l, CallbackInfo ci) { + *///? } //? if >= 1.21.9 { if (((LivingEntityRenderStateAccess) avatarRenderState).isCameraEntity() //? } else { - /*if (FirstPersonModelCore.instance.isRenderingPlayer() - *///? } + /*if (FirstPersonModelCore.instance.isRenderingPlayer() + *///? } && !FirstPersonModelCore.instance.getConfig().renderStuckFeatures) { ci.cancel(); } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java index f3c8a885..db933174 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java @@ -20,8 +20,8 @@ //? } else if >= 1.19.3 { /*import org.joml.*; *///? } else { - // import com.mojang.math.*; - //? } +/*import com.mojang.math.*; +*///? } /** * Detects when the player is rendered and triggers the correct changes @@ -43,31 +43,32 @@ protected abstract void renderEntity(Entity entity, double cameraX, double camer private RenderBuffers renderBuffers; //? if <= 1.20.4 { + /* + @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) + public void render(PoseStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, + GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f matrix4f, CallbackInfo info) { + *///? } else if < 1.21.0 { +/* + @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) + public void render(float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, + GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f matrix4f, Matrix4f matrix4f2, + CallbackInfo info) { + PoseStack matrices = new PoseStack(); + *///? } else if < 1.21.3 { - // @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) - // public void render(PoseStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, - // GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f matrix4f, CallbackInfo info) { - //? } else if < 1.21.0 { - - // @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) - // public void render(float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, - // GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f matrix4f, Matrix4f matrix4f2, CallbackInfo info) { - // PoseStack matrices = new PoseStack(); - //? } else if < 1.21.3 { - - // @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) - // public void render(DeltaTracker deltaTracker, boolean bl, Camera camera, GameRenderer gameRenderer, - // LightTexture lightTexture, Matrix4f matrix4f, Matrix4f matrix4f2, CallbackInfo info) { - // PoseStack matrices = new PoseStack(); - //? } else if < 1.21.9 { - /*@Inject(method = "renderEntities", at = @At(value = "HEAD")) - private void renderEntities(PoseStack poseStack, MultiBufferSource.BufferSource bufferSource, Camera camera, + // @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) + // public void render(DeltaTracker deltaTracker, boolean bl, Camera camera, GameRenderer gameRenderer, + // LightTexture lightTexture, Matrix4f matrix4f, Matrix4f matrix4f2, CallbackInfo info) { + // PoseStack matrices = new PoseStack(); + //? } else if < 1.21.9 { + /*@Inject(method = "renderEntities", at = @At(value = "HEAD")) + private void renderEntities(PoseStack poseStack, MultiBufferSource.BufferSource bufferSource, Camera camera, DeltaTracker deltaTracker, List list, CallbackInfo ci) { PoseStack matrices = new PoseStack(); *///? } else { - - @Inject(method = "extractVisibleEntities", at = @At(value = "HEAD")) - private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTracker, + + @Inject(method = "extractVisibleEntities", at = @At(value = "HEAD")) + private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTracker, LevelRenderState levelRenderState, CallbackInfo ci) { PoseStack matrices = new PoseStack(); //? } @@ -78,14 +79,7 @@ private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTr MultiBufferSource.BufferSource immediate = renderBuffers.bufferSource(); FirstPersonModelCore.instance.setRenderingPlayer(true); FirstPersonModelCore.instance.setRenderingPlayerPost(true); - //? if < 1.21.0 { - - // renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), tickDelta, matrices, immediate); - //? } else if < 1.21.9 { - /*renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), - deltaTracker.getGameTimeDeltaPartialTick(false), matrices, immediate); - *///? } else { - + // Store position and apply offset var ent = camera.getEntity(); var pos = ((EntityAccessor) ent).entityCulling$getRawPosition(); var xO = ent.xo; @@ -94,8 +88,11 @@ private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTr var xOld = ent.xOld; var yOld = ent.yOld; var zOld = ent.zOld; - FirstPersonModelCore.instance.getLogicHandler().updatePositionOffset(ent, - deltaTracker.getGameTimeDeltaPartialTick(true)); + //? if >= 1.21.0{ + + float tickDelta = deltaTracker.getGameTimeDeltaPartialTick(true); + //? } + FirstPersonModelCore.instance.getLogicHandler().updatePositionOffset(ent, tickDelta); var offset = FirstPersonModelCore.instance.getLogicHandler().getOffset(); ((EntityAccessor) ent).entityCulling$setRawPosition(pos.add(offset)); ent.xo += offset.x; @@ -104,7 +101,21 @@ private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTr ent.xOld += offset.x; ent.yOld += offset.y; ent.zOld += offset.z; + // Trigger render + //? if < 1.21.0 { +/* + renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), tickDelta, matrices, immediate); + *///? } else if < 1.21.9 { + /* + FirstPersonModelCore.instance.getLogicHandler().updatePositionOffset(ent, + deltaTracker.getGameTimeDeltaPartialTick(true)); + renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), + deltaTracker.getGameTimeDeltaPartialTick(false), matrices, immediate); + *///? } else { + levelRenderState.entityRenderStates.add(extractEntity(ent, deltaTracker.getGameTimeDeltaPartialTick(true))); + //? } + // Restore position ((EntityAccessor) ent).entityCulling$setRawPosition(pos); ent.xo = xO; ent.yo = yO; @@ -112,7 +123,6 @@ private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTr ent.xOld = xOld; ent.yOld = yOld; ent.zOld = zOld; - //? } FirstPersonModelCore.instance.setRenderingPlayer(false); FirstPersonModelCore.instance.setRenderingPlayerPost(false); diff --git a/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java b/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java index 3e04cbd7..ea6251f3 100644 --- a/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java +++ b/src/main/java/dev/tr7zw/firstperson/modsupport/PlayerAnimatorSupport.java @@ -7,10 +7,10 @@ //? } else if >= 1.19.3 { /*import org.joml.*; *///? } else { - -// import com.mojang.math.Matrix4f; -// import com.mojang.math.Vector4f; -//? } +/* + import com.mojang.math.Matrix4f; + import com.mojang.math.Vector4f; +*///? } public class PlayerAnimatorSupport implements PlayerOffsetHandler { diff --git a/src/test/java/dev/tr7zw/tests/MixinTests.java b/src/test/java/dev/tr7zw/tests/MixinTests.java index 85896976..fc6c496b 100644 --- a/src/test/java/dev/tr7zw/tests/MixinTests.java +++ b/src/test/java/dev/tr7zw/tests/MixinTests.java @@ -42,7 +42,7 @@ void testMixins() { //? if >= 1.21.9 { objenesis.newInstance(net.minecraft.client.renderer.entity.player.AvatarRenderer.class); //? } else { - /* +/* objenesis.newInstance(net.minecraft.client.renderer.entity.player.PlayerRenderer.class); *///? } objenesis.newInstance(EntityRenderDispatcher.class); From c03e8cd25385793b89218a202ae7e19bcef4f88a Mon Sep 17 00:00:00 2001 From: tr7zw Date: Tue, 11 Nov 2025 18:46:05 +0100 Subject: [PATCH 8/8] Format, rebuild --- .../firstperson/FirstPersonModelCore.java | 8 +- .../dev/tr7zw/firstperson/InventoryUtil.java | 16 +- .../firstperson/access/PlayerModelAccess.java | 2 +- .../config/ConfigScreenProvider.java | 4 +- .../mixins/CustomHeadLayerMixin.java | 14 +- .../firstperson/mixins/ElytraLayerMixin.java | 18 +- .../mixins/FishingBobberRendererMixin.java | 10 +- .../mixins/HeldItemFeatureRendererMixin.java | 168 +++++++++--------- .../mixins/HeldItemRendererMixin.java | 2 +- .../mixins/LivingEntityRendererMixin.java | 14 +- .../firstperson/mixins/PlayerModelMixin.java | 4 +- .../mixins/RenderDispatcherMixin.java | 10 +- .../mixins/StuckInBodyLayerMixin.java | 20 +-- .../mixins/WorldRendererMixin.java | 36 ++-- src/test/java/dev/tr7zw/tests/MixinTests.java | 2 +- 15 files changed, 164 insertions(+), 164 deletions(-) diff --git a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java index 7011ee18..7b207c29 100644 --- a/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java +++ b/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java @@ -21,8 +21,8 @@ public abstract class FirstPersonModelCore extends FirstPersonBase { private KeyMapping keyBinding = new KeyMapping("key.firstperson.toggle", 295, //? if >= 1.21.9 { new KeyMapping.Category(ResourceLocation.fromNamespaceAndPath("firstperson", "keybind"))); - //? } else { - /*"firstperson.keybind"); + //? } else { + /*"firstperson.keybind"); *///? } private boolean lateInit = true; @Deprecated @@ -118,11 +118,11 @@ public void setEnabled(boolean enabled) { public void updatePlayerLayers() { PlayerRendererAccess access = null; //? if >= 1.21.6 { - + access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher().getRenderer( /*? if >= 1.21.9 {*/new AvatarRenderState()/*?} else {*//*new PlayerRenderState()*//*? }*/); //? } else { -/* + /* if (Minecraft.getInstance().player != null) { access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() .getRenderer(Minecraft.getInstance().player); diff --git a/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java b/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java index a9d38e13..437f8d94 100644 --- a/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java +++ b/src/main/java/dev/tr7zw/firstperson/InventoryUtil.java @@ -19,40 +19,40 @@ public static Inventory getInventory(Player player) { public static ItemStack getSelected(Inventory inventory) { //? if >= 1.21.5 { - + return inventory.getSelectedItem(); //? } else { -/* + /* return inventory.getSelected(); *///? } } public static ItemStack getOffhand(Inventory inventory) { //? if >= 1.21.5 { - + return inventory.getItem(Inventory.SLOT_OFFHAND); //? } else { -/* + /* return inventory.offhand.get(0); *///? } } public static int getSelectedId(Inventory inventory) { //? if >= 1.21.5 { - + return inventory.getSelectedSlot(); //? } else { -/* + /* return inventory.selected; *///? } } public static List getNonEquipmentItems(Inventory inventory) { //? if >= 1.21.5 { - + return inventory.getNonEquipmentItems(); //? } else { -/* + /* return inventory.items; *///? } } diff --git a/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java b/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java index 978b1047..b567b605 100644 --- a/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java +++ b/src/main/java/dev/tr7zw/firstperson/access/PlayerModelAccess.java @@ -8,7 +8,7 @@ public interface PlayerModelAccess { //? if < 1.21.3 { -/* + /* ModelPart getCloak(); *///? } diff --git a/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java b/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java index 45aa1f88..7b5e6f81 100644 --- a/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java +++ b/src/main/java/dev/tr7zw/firstperson/config/ConfigScreenProvider.java @@ -141,11 +141,11 @@ public CustomConfigScreen(Screen previous) { // Layers PlayerRendererAccess access = null; //? if >= 1.21.6 { - + access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher().getRenderer( /*? if >= 1.21.9 {*/new AvatarRenderState()/*?} else {*//*new PlayerRenderState()*//*? }*/); //? } else { -/* + /* if (Minecraft.getInstance().player != null) { access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher() .getRenderer(Minecraft.getInstance().player); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java index bec0043c..8fe94efd 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin.java @@ -21,22 +21,22 @@ public class CustomHeadLayerMixin { //? } else { /*@Inject(method = "render", at = @At("HEAD"), cancellable = true) *///? } - //? if >= 1.21.9 { - + //? if >= 1.21.9 { + public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, LivingEntityRenderState livingEntityRenderState, float f, float g, CallbackInfo info) { //? } else >= 1.21.3 { - /*public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, + /*public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntityRenderState livingEntityRenderState, float f, float g, CallbackInfo info) { *///? } else { -/* - public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntity livingEntity, + /* + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LivingEntity livingEntity, float f, float g, float h, float j, float k, float l, CallbackInfo info) { *///? } - //? if >= 1.21.9 { + //? if >= 1.21.9 { if (((LivingEntityRenderStateAccess) livingEntityRenderState).isCameraEntity()) { //? } else { - /*if (FirstPersonModelCore.instance.isRenderingPlayer()) { + /*if (FirstPersonModelCore.instance.isRenderingPlayer()) { *///? } info.cancel(); } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java index e711d36e..0f9add24 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/ElytraLayerMixin.java @@ -27,28 +27,28 @@ public class ElytraLayerMixin { //? if >= 1.21.9 { - + @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/HumanoidRenderState;FF)V", at = @At("HEAD"), cancellable = true) public void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, HumanoidRenderState humanoidRenderState, float f, float g, CallbackInfo ci) { //? } else if >= 1.21.3 { - /*@Inject(method = "render", at = @At("HEAD"), cancellable = true) - public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, + /*@Inject(method = "render", at = @At("HEAD"), cancellable = true) + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, HumanoidRenderState humanoidRenderState, float f, float g, CallbackInfo ci) { *///? } else { -/* - @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) - public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, T livingEntity, float f, + /* + @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, T livingEntity, float f, float g, float h, float j, float k, float l, CallbackInfo ci) { *///? } - //? if >= 1.21.9 { + //? if >= 1.21.9 { if (((LivingEntityRenderStateAccess) humanoidRenderState).isCameraEntity() && humanoidRenderState.isVisuallySwimming) { //? } else { - /*if (FirstPersonModelCore.instance.isRenderingPlayer() + /*if (FirstPersonModelCore.instance.isRenderingPlayer() && Minecraft.getInstance().getCameraEntity() instanceof AbstractClientPlayer player && FirstPersonModelCore.instance.getLogicHandler().isSwimming(player)) { - + *///? } ci.cancel(); diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java index 63b3e46b..0ec854d5 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java @@ -43,16 +43,16 @@ private CameraType redirect(Options gameOptions) { //? } else { /*@Inject(method = "render", at = @At("HEAD")) *///? } - //? if >= 1.21.9 { - + //? if >= 1.21.9 { + public void render(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState cameraRenderState, CallbackInfo ci) { //? } else if >= 1.21.3 { - /*public void render(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, + /*public void render(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo info) { *///? } else { -/* - private void calcOffset(FishingHook fishingBobberEntity, float f, float g, PoseStack matrixStack, + /* + private void calcOffset(FishingHook fishingBobberEntity, float f, float g, PoseStack matrixStack, MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { *///? } if (FirstPersonModelCore.instance.isRenderingPlayer()) { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java index eefa1aa3..7815ec2c 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java @@ -1,84 +1,84 @@ -package dev.tr7zw.firstperson.mixins; - -import com.mojang.blaze3d.vertex.*; -import dev.tr7zw.firstperson.*; -import dev.tr7zw.firstperson.access.*; -import net.minecraft.client.*; -import net.minecraft.client.resources.model.*; -import net.minecraft.client.renderer.*; -import net.minecraft.client.renderer.entity.layers.*; -//? if >= 1.21.2 -import net.minecraft.client.renderer.entity.state.*; -import net.minecraft.client.renderer.item.*; -import net.minecraft.world.entity.*; -import org.spongepowered.asm.mixin.*; -import org.spongepowered.asm.mixin.injection.*; -import org.spongepowered.asm.mixin.injection.callback.*; - -//? if < 1.21.4 -/*import net.minecraft.world.item.*; */ - -//? if >= 1.19.4 { - -//? if < 1.21.4 { -/* -import net.minecraft.world.item.ItemDisplayContext; -*///? } -//? } else { -/* - import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; -*///? } - -/** - * Stops items in the hand from rendering while in first person. - * - */ -@Mixin(ItemInHandLayer.class) -public class HeldItemFeatureRendererMixin { - - //? if >= 1.21.9 { - @Inject(at = @At("HEAD"), method = "submitArmWithItem", cancellable = true) - //? } else { - /*@Inject(at = @At("HEAD"), method = "renderArmWithItem", cancellable = true) - *///? } - //? if >= 1.21.9 { - - private void renderArmWithItem(ArmedEntityRenderState armedEntityRenderState, - ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, - SubmitNodeCollector submitNodeCollector, int i, CallbackInfo ci) { - //? } else if >= 1.21.4 { - /*private void renderArmWithItem(ArmedEntityRenderState livingEntityRenderState, - ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, - MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { - *///? } else if >= 1.21.3 { - - // private void renderArmWithItem(LivingEntityRenderState livingEntityRenderState, BakedModel bakedModel, - // ItemStack itemStack, ItemDisplayContext itemDisplayContext, HumanoidArm humanoidArm, PoseStack poseStack, - // MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { - //? } else if >= 1.19.4 { -/* - private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, - ItemDisplayContext itemDisplayContext, HumanoidArm humanoidArm, PoseStack poseStack, - MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { - *///? } else { - /* - private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, TransformType transformType, - HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { - *///? } - //? if >= 1.21.9 { - LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) armedEntityRenderState; - if (access.hideLeftArm() && access.hideRightArm() - && !FirstPersonModelCore.instance.getLogicHandler().lookingDown(armedEntityRenderState)) { - ci.cancel(); - } - //? } else { - /*if (FirstPersonModelCore.instance.isRenderingPlayer()) { - if (FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(Minecraft.getInstance().player) - && !FirstPersonModelCore.instance.getLogicHandler().lookingDown()) { - ci.cancel(); - } - } - *///? } - } - -} +package dev.tr7zw.firstperson.mixins; + +import com.mojang.blaze3d.vertex.*; +import dev.tr7zw.firstperson.*; +import dev.tr7zw.firstperson.access.*; +import net.minecraft.client.*; +import net.minecraft.client.resources.model.*; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.entity.layers.*; +//? if >= 1.21.2 +import net.minecraft.client.renderer.entity.state.*; +import net.minecraft.client.renderer.item.*; +import net.minecraft.world.entity.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; + +//? if < 1.21.4 +/*import net.minecraft.world.item.*;*/ + +//? if >= 1.19.4 { + +//? if < 1.21.4 { +/* +import net.minecraft.world.item.ItemDisplayContext; +*///? } + //? } else { + /* + import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; + *///? } + +/** + * Stops items in the hand from rendering while in first person. + * + */ +@Mixin(ItemInHandLayer.class) +public class HeldItemFeatureRendererMixin { + + //? if >= 1.21.9 { + @Inject(at = @At("HEAD"), method = "submitArmWithItem", cancellable = true) + //? } else { + /*@Inject(at = @At("HEAD"), method = "renderArmWithItem", cancellable = true) + *///? } + //? if >= 1.21.9 { + + private void renderArmWithItem(ArmedEntityRenderState armedEntityRenderState, + ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, + SubmitNodeCollector submitNodeCollector, int i, CallbackInfo ci) { + //? } else if >= 1.21.4 { + /*private void renderArmWithItem(ArmedEntityRenderState livingEntityRenderState, + ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, + MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { + *///? } else if >= 1.21.3 { + + // private void renderArmWithItem(LivingEntityRenderState livingEntityRenderState, BakedModel bakedModel, + // ItemStack itemStack, ItemDisplayContext itemDisplayContext, HumanoidArm humanoidArm, PoseStack poseStack, + // MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { + //? } else if >= 1.19.4 { + /* + private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, + ItemDisplayContext itemDisplayContext, HumanoidArm humanoidArm, PoseStack poseStack, + MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { + *///? } else { + /* + private void renderArmWithItem(LivingEntity livingEntity, ItemStack itemStack, TransformType transformType, + HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) { + *///? } + //? if >= 1.21.9 { + LivingEntityRenderStateAccess access = (LivingEntityRenderStateAccess) armedEntityRenderState; + if (access.hideLeftArm() && access.hideRightArm() + && !FirstPersonModelCore.instance.getLogicHandler().lookingDown(armedEntityRenderState)) { + ci.cancel(); + } + //? } else { + /*if (FirstPersonModelCore.instance.isRenderingPlayer()) { + if (FirstPersonModelCore.instance.getLogicHandler().hideArmsAndItems(Minecraft.getInstance().player) + && !FirstPersonModelCore.instance.getLogicHandler().lookingDown()) { + ci.cancel(); + } + } + *///? } + } + +} diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java index 6f918abb..10f0e171 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java @@ -48,7 +48,7 @@ public void renderFirstPersonItem(AbstractClientPlayer player, float deltaTick, float swingProgress, ItemStack item, float equipProgress, PoseStack matrices, SubmitNodeCollector vertexConsumers, int light, CallbackInfo info) { //? } else { - /*public void renderFirstPersonItem(AbstractClientPlayer player, float tickDelta, float pitch, InteractionHand hand, + /*public void renderFirstPersonItem(AbstractClientPlayer player, float tickDelta, float pitch, InteractionHand hand, float swingProgress, ItemStack item, float equipProgress, PoseStack matrices, MultiBufferSource vertexConsumers, int light, CallbackInfo info) { *///? } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java index f7ab3fb8..68fe77ab 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java @@ -44,7 +44,7 @@ public void render(LivingEntityRenderState livingEntityRenderState, PoseStack ma } LivingEntity livingEntity = (LivingEntity) entity; //? } else { -/^ + /^ @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/EntityModel;setupAnim(Lnet/minecraft/world/entity/Entity;FFFFF)V", shift = At.Shift.AFTER), cancellable = true) public void renderPostAnim(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { @@ -89,7 +89,7 @@ public void renderPostAnim(LivingEntity livingEntity, float f, float g, PoseStac humanModel.leftArm.xRot += offset; // humanModel.rightArm.offsetRotation(new Vector3f(offset, 0, 0)); // humanModel.leftArm.offsetRotation(new Vector3f(offset, 0, 0)); - + if (!FirstPersonModelCore.instance.getLogicHandler().lookingDown()) {// TODO DYNAMIC HAND if (!InventoryUtil.getOffhand(InventoryUtil.getInventory(player)).isEmpty() || livingEntity.getMainHandItem().getItem().equals(Items.FILLED_MAP)) { @@ -108,7 +108,7 @@ public void renderPostAnim(LivingEntity livingEntity, float f, float g, PoseStac } } //? if < 1.21.4 { -/^ + /^ if (model instanceof VillagerHeadModel villaterHead) { villaterHead.hatVisible(false); revert.add(() -> { @@ -135,7 +135,7 @@ public void renderPostAnim(LivingEntity livingEntity, float f, float g, PoseStac playerModel.leftSleeve.xRot += offset; // playerModel.rightSleeve.offsetRotation(new Vector3f(offset, 0, 0)); // playerModel.leftSleeve.offsetRotation(new Vector3f(offset, 0, 0)); - + if (!FirstPersonModelCore.instance.getLogicHandler().lookingDown()) {// TODO DYNAMIC HAND if (!InventoryUtil.getOffhand(InventoryUtil.getInventory(player)).isEmpty() || livingEntity.getMainHandItem().getItem().equals(Items.FILLED_MAP)) { @@ -159,13 +159,13 @@ public void renderPostAnim(LivingEntity livingEntity, float f, float g, PoseStac prs.showCape = false; } //? } else { -/^ + /^ ((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).setHidden(); ^///? } revert.add(() -> { ((ModelPartBase) (Object) playerModel.body).showAgain(); //? if < 1.21.3 { -/^ + /^ ((ModelPartBase) (Object) ((PlayerModelAccess) model).getCloak()).showAgain(); ^///? } }); @@ -193,7 +193,7 @@ private void checkIfCameraEntity(LivingEntity livingEntity, LivingEntityRenderSt public void renderEnd(LivingEntityRenderState livingEntityRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo info) { //? } else { -/^ + /^ public void renderReturn(LivingEntity livingEntity, float f, float g, PoseStack matrixStack, MultiBufferSource vertexConsumerProvider, int i, CallbackInfo info) { ^///? } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java index c6de4b4d..5ea70050 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/PlayerModelMixin.java @@ -15,11 +15,11 @@ public class PlayerModelMixin implements PlayerModelAccess { //? if < 1.21.3 { -/* + /* @Shadow @Final private ModelPart cloak; - + @Override public ModelPart getCloak() { return cloak; diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java index 93db8a8a..080d0de9 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java @@ -89,7 +89,7 @@ private static void renderHitbox(PoseStack poseStack, VertexConsumer buffer, } *///? } else { -/* + /* @Redirect(method = "renderShadow", at = @At(value = "invoke", target = "Lnet/minecraft/util/Mth;lerp(DDD)D", ordinal = 0)) private static double shadowOffsetX(double delta, double old, double cur, PoseStack poseStack, MultiBufferSource multiBufferSource, Entity entity, float f, float g, LevelReader levelReader, float h) { @@ -98,7 +98,7 @@ private static double shadowOffsetX(double delta, double old, double cur, PoseSt } return Mth.lerp(delta, old, cur); } - + @Redirect(method = "renderShadow", at = @At(value = "invoke", target = "Lnet/minecraft/util/Mth;lerp(DDD)D", ordinal = 2)) private static double shadowOffsetZ(double delta, double old, double cur, PoseStack poseStack, MultiBufferSource multiBufferSource, Entity entity, float f, float g, LevelReader levelReader, float h) { @@ -107,7 +107,7 @@ private static double shadowOffsetZ(double delta, double old, double cur, PoseSt } return Mth.lerp(delta, old, cur); } - + @Inject(method = "renderShadow", at = @At(value = "invoke", target = "Lcom/mojang/blaze3d/vertex/PoseStack;last()Lcom/mojang/blaze3d/vertex/PoseStack$Pose;", shift = At.Shift.BEFORE)) private static void shadowMove(PoseStack matrices, MultiBufferSource vertexConsumers, Entity entity, float opacity, float tickDelta, LevelReader world, float radius, CallbackInfo ci) { @@ -117,13 +117,13 @@ private static void shadowMove(PoseStack matrices, MultiBufferSource vertexConsu Vec3 offset = FirstPersonModelCore.instance.getLogicHandler().getOffset(); matrices.translate(offset.x, offset.y, offset.z); } - + @Inject(method = "renderHitbox", at = @At(value = "HEAD"), cancellable = true) //? if < 1.17.0 { /^ private void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, CallbackInfo ci) { ^///? } else if < 1.21.0 { -/^ + /^ private static void renderHitbox(PoseStack poseStack, VertexConsumer vertexConsumer, Entity entity, float f, CallbackInfo ci) { ^///? } else { diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java index 5e55170f..67712b68 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin.java @@ -23,22 +23,22 @@ public class StuckInBodyLayerMixin { public void disableStuckFeatureLayer(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, AvatarRenderState avatarRenderState, float f, float g, CallbackInfo ci) { //? } else if >= 1.21.3 { - /* - @Inject(method = "render", at = @At("HEAD"), cancellable = true) - public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, + /* + @Inject(method = "render", at = @At("HEAD"), cancellable = true) + public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, PlayerRenderState playerRenderState, float f, float g, CallbackInfo ci) { - + *///? } else { -/* - @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) - public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, + /* + @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V", at = @At("HEAD"), cancellable = true) + public void disableStuckFeatureLayer(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, T livingEntity, float f, float g, float h, float j, float k, float l, CallbackInfo ci) { *///? } - //? if >= 1.21.9 { + //? if >= 1.21.9 { if (((LivingEntityRenderStateAccess) avatarRenderState).isCameraEntity() //? } else { - /*if (FirstPersonModelCore.instance.isRenderingPlayer() - *///? } + /*if (FirstPersonModelCore.instance.isRenderingPlayer() + *///? } && !FirstPersonModelCore.instance.getConfig().renderStuckFeatures) { ci.cancel(); } diff --git a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java index db933174..121044ab 100644 --- a/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java +++ b/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java @@ -48,7 +48,7 @@ protected abstract void renderEntity(Entity entity, double cameraX, double camer public void render(PoseStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f matrix4f, CallbackInfo info) { *///? } else if < 1.21.0 { -/* + /* @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) public void render(float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f matrix4f, Matrix4f matrix4f2, @@ -56,19 +56,19 @@ public void render(float tickDelta, long limitTime, boolean renderBlockOutline, PoseStack matrices = new PoseStack(); *///? } else if < 1.21.3 { - // @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) - // public void render(DeltaTracker deltaTracker, boolean bl, Camera camera, GameRenderer gameRenderer, - // LightTexture lightTexture, Matrix4f matrix4f, Matrix4f matrix4f2, CallbackInfo info) { - // PoseStack matrices = new PoseStack(); - //? } else if < 1.21.9 { - /*@Inject(method = "renderEntities", at = @At(value = "HEAD")) - private void renderEntities(PoseStack poseStack, MultiBufferSource.BufferSource bufferSource, Camera camera, - DeltaTracker deltaTracker, List list, CallbackInfo ci) { - PoseStack matrices = new PoseStack(); - *///? } else { - - @Inject(method = "extractVisibleEntities", at = @At(value = "HEAD")) - private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTracker, + // @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;checkPoseStack(Lcom/mojang/blaze3d/vertex/PoseStack;)V", ordinal = 0)) + // public void render(DeltaTracker deltaTracker, boolean bl, Camera camera, GameRenderer gameRenderer, + // LightTexture lightTexture, Matrix4f matrix4f, Matrix4f matrix4f2, CallbackInfo info) { + // PoseStack matrices = new PoseStack(); + //? } else if < 1.21.9 { + /*@Inject(method = "renderEntities", at = @At(value = "HEAD")) + private void renderEntities(PoseStack poseStack, MultiBufferSource.BufferSource bufferSource, Camera camera, + DeltaTracker deltaTracker, List list, CallbackInfo ci) { + PoseStack matrices = new PoseStack(); + *///? } else { + + @Inject(method = "extractVisibleEntities", at = @At(value = "HEAD")) + private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTracker, LevelRenderState levelRenderState, CallbackInfo ci) { PoseStack matrices = new PoseStack(); //? } @@ -89,7 +89,7 @@ private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTr var yOld = ent.yOld; var zOld = ent.zOld; //? if >= 1.21.0{ - + float tickDelta = deltaTracker.getGameTimeDeltaPartialTick(true); //? } FirstPersonModelCore.instance.getLogicHandler().updatePositionOffset(ent, tickDelta); @@ -103,7 +103,7 @@ private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTr ent.zOld += offset.z; // Trigger render //? if < 1.21.0 { -/* + /* renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), tickDelta, matrices, immediate); *///? } else if < 1.21.9 { /* @@ -112,10 +112,10 @@ private void renderEntities(Camera camera, Frustum frustum, DeltaTracker deltaTr renderEntity(camera.getEntity(), vec3d.x(), vec3d.y(), vec3d.z(), deltaTracker.getGameTimeDeltaPartialTick(false), matrices, immediate); *///? } else { - + levelRenderState.entityRenderStates.add(extractEntity(ent, deltaTracker.getGameTimeDeltaPartialTick(true))); //? } - // Restore position + // Restore position ((EntityAccessor) ent).entityCulling$setRawPosition(pos); ent.xo = xO; ent.yo = yO; diff --git a/src/test/java/dev/tr7zw/tests/MixinTests.java b/src/test/java/dev/tr7zw/tests/MixinTests.java index fc6c496b..85896976 100644 --- a/src/test/java/dev/tr7zw/tests/MixinTests.java +++ b/src/test/java/dev/tr7zw/tests/MixinTests.java @@ -42,7 +42,7 @@ void testMixins() { //? if >= 1.21.9 { objenesis.newInstance(net.minecraft.client.renderer.entity.player.AvatarRenderer.class); //? } else { -/* + /* objenesis.newInstance(net.minecraft.client.renderer.entity.player.PlayerRenderer.class); *///? } objenesis.newInstance(EntityRenderDispatcher.class);