diff --git a/build.gradle.kts b/build.gradle.kts index 99c1ca1e..c87df6c8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -46,6 +46,7 @@ base.archivesName.set("entity_model_features-$modVersion-${project.name}") val manuallyAccessTransform = mcVersion >= 26_00_00 && platform.isNeoForge val accessWidener = "entity_model_features_" + when { + mcVersion >= 26_03_00 -> 16 mcVersion >= 26_02_00 -> 15 mcVersion >= 26_01_00 -> 14 mcVersion >= 1_21_11 -> 13 diff --git a/gradle.properties b/gradle.properties index 4b190d3a..a559576f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,6 +12,6 @@ archives_base_name=entity_model_features mod_version=3.3.5 maven_group=traben.entity_model_features -etf_version=7.2 -use_local_etf=false +etf_version=7.2.2 +use_local_etf=true diff --git a/root.gradle.kts b/root.gradle.kts index 9354c83f..3d7b0f9b 100644 --- a/root.gradle.kts +++ b/root.gradle.kts @@ -56,7 +56,8 @@ preprocess { // next, then remap the main project to this and set the current to old //current.connectToVersion(12109, forge = false, neoforge = false) - null.connectToVersion(26_02_00, forge = false, neoforge = true) + null.connectToVersion(26_03_00, forge = false, neoforge = false) + .connectToVersion(26_02_00, forge = false, neoforge = true) .connectToVersion(26_01_00, forge = false, neoforge = true) .connectToVersion(1_21_11) .connectToVersion(1_21_09) diff --git a/settings.gradle.kts b/settings.gradle.kts index 8693f571..115cbf58 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -36,6 +36,7 @@ fun MutableList.version(mcVersion: Int, forge: Boolean = true, neoforge: } mutableListOf() + .version(26_03_00, forge = false, neoforge = false) .version(26_02_00, forge = false, neoforge = true) .version(26_01_00, forge = false, neoforge = true) .version(12111) diff --git a/src/main/java/traben/entity_model_features/config/EMFConfig.java b/src/main/java/traben/entity_model_features/config/EMFConfig.java index 5c74b31a..895119b3 100644 --- a/src/main/java/traben/entity_model_features/config/EMFConfig.java +++ b/src/main/java/traben/entity_model_features/config/EMFConfig.java @@ -562,6 +562,9 @@ private boolean canRender() { @Override public void render(final GuiGraphics context, final int mouseX, final int mouseY) { + //#if MC >= 26.2 + //$$ return; + //#else if (canRender()) { Screen screen = UScreen.currentScreen(); if (screen == null) return; @@ -597,12 +600,7 @@ public void render(final GuiGraphics context, final int mouseX, final int mouseY matrixStack.pushPose(); matrixStack.scale(-1.0F, -1.0F, 1.0F); matrixStack.translate(0.0F, -1.501F, 0.0F); - //#if MC >= 26.2 - //$$ //TODO definitely wrong - //$$ var draw = Minecraft.getInstance().gameRenderer.renderBuffers().stagedVertexBuffer().appendDraw( - //$$ RenderTypes.lines().format(), com.mojang.blaze3d.PrimitiveTopology.LINES); - //$$ var buffer = Minecraft.getInstance().gameRenderer.renderBuffers().stagedVertexBuffer().getVertexBuilder(draw); - //#else + var buffer = Minecraft.getInstance().renderBuffers().bufferSource().getBuffer( //#if MC >= 12111 //$$ RenderTypes.lines() @@ -610,7 +608,6 @@ public void render(final GuiGraphics context, final int mouseX, final int mouseY RenderType.lines() //#endif ); - //#endif //who knows what mods might do smdh //noinspection ConstantValue if (buffer != null) { @@ -618,6 +615,7 @@ public void render(final GuiGraphics context, final int mouseX, final int mouseY } matrixStack.popPose(); } + //#endif } private void renderBoxes(PoseStack matrices, VertexConsumer vertices, ModelPart modelPart) { diff --git a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/MixinDragonRenderer.java b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/MixinDragonRenderer.java index 39a913c5..def11d50 100644 --- a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/MixinDragonRenderer.java +++ b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/MixinDragonRenderer.java @@ -23,7 +23,13 @@ public abstract class MixinDragonRenderer { @Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/EnderDragonRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At(value = "INVOKE", - target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/RenderType;IIILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V")) + target = + //#if MC >= 26.3 + //$$ "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;III)V" + //#else + "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/RenderType;IIILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V" + //#endif + )) private void emf$allowMultiPartRender4(final CallbackInfo ci) { EMFManager.getInstance().entityRenderCount++; } diff --git a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/MixinLivingEntityRenderer.java b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/MixinLivingEntityRenderer.java index 79e2cbec..f0d4f468 100644 --- a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/MixinLivingEntityRenderer.java +++ b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/MixinLivingEntityRenderer.java @@ -54,7 +54,7 @@ protected MixinLivingEntityRenderer(EntityRendererProvider.Context ctx) { super(ctx); } - //#if MC > 26.2 + //#if MC > 26.3 //$$ todo check that they still use this.model and not the getter //#elseif MC >= 12109 @Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", diff --git a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/MixinPlayerEntityRenderer.java b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/MixinPlayerEntityRenderer.java index 8c58c9da..a256db59 100644 --- a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/MixinPlayerEntityRenderer.java +++ b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/MixinPlayerEntityRenderer.java @@ -45,7 +45,7 @@ //#if MC >= 12109 -@Mixin(AvatarRenderer.class) +@Mixin(value = AvatarRenderer.class, priority = 1100) // priority ensures the first person hand state wraps ETF's submits properly public abstract class MixinPlayerEntityRenderer extends LivingEntityRenderer { @@ -101,7 +101,13 @@ public abstract class MixinPlayerEntityRenderer= 26.3 + //$$ "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModelPart(Lnet/minecraft/client/model/geom/ModelPart;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;IILnet/minecraft/client/renderer/texture/UvMapping;)V" + //#else + "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModelPart(Lnet/minecraft/client/model/geom/ModelPart;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/RenderType;IILnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V" + //#endif + )) private void emf$setHandAnims(CallbackInfo ci, @Local(argsOnly = true) ModelPart modelPart) { // flag this for later submit render if (modelPart instanceof EMFModelPartVanilla vanilla) { diff --git a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/attachments/MixinSulfurCubeInnerLayer_BlockOffset.java b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/attachments/MixinSulfurCubeInnerLayer_BlockOffset.java index abcc04cc..8022d010 100644 --- a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/attachments/MixinSulfurCubeInnerLayer_BlockOffset.java +++ b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/attachments/MixinSulfurCubeInnerLayer_BlockOffset.java @@ -34,7 +34,13 @@ public abstract class MixinSulfurCubeInnerLayer_BlockOffset { } //$$ private SulfurCubeModel normalModel; //$$ //$$ @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/SulfurCubeRenderState;FF)V", -//$$ at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;mulPose(Lorg/joml/Quaternionfc;)V")) +//$$ at = @At(value = "INVOKE", target = + //#if MC >= 26.3 + //$$ "Lcom/mojang/blaze3d/vertex/PoseStack;rotateDegrees(Lcom/mojang/math/Axis;F)V" + //#else + //$$ "Lcom/mojang/blaze3d/vertex/PoseStack;mulPose(Lorg/joml/Quaternionfc;)V" + //#endif +//$$ )) //$$ private void offsetBlock(CallbackInfo ci, @Local(argsOnly = true) PoseStack poseStack, @Local(argsOnly = true) SulfurCubeRenderState vanilla) { //$$ var model = (IEMFModel) (vanilla.isBaby ? smallModel : normalModel); //$$ if (model.emf$isEMFModel()) { diff --git a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/attachments/Mixin_Enderman_BlockOffset.java b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/attachments/Mixin_Enderman_BlockOffset.java index 103a7ca7..96d9635c 100644 --- a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/attachments/Mixin_Enderman_BlockOffset.java +++ b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/attachments/Mixin_Enderman_BlockOffset.java @@ -18,7 +18,10 @@ public Mixin_Enderman_BlockOffset() { super(null); } - //#if MC > 1.21.4 + //#if MC >= 26.3 + //$$ @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/EndermanRenderState;FF)V", + //$$ at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;rotateDegrees(Lcom/mojang/math/Axis;F)V", ordinal = 0)) + //#elseif MC > 1.21.4 @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/EndermanRenderState;FF)V", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;mulPose(Lorg/joml/Quaternionfc;)V", ordinal = 0)) //#else diff --git a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/attachments/Mixin_Fox_BlockOffset.java b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/attachments/Mixin_Fox_BlockOffset.java index 8a524488..032f9035 100644 --- a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/attachments/Mixin_Fox_BlockOffset.java +++ b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/attachments/Mixin_Fox_BlockOffset.java @@ -2,9 +2,13 @@ import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; import com.llamalad7.mixinextras.sugar.Local; +import com.llamalad7.mixinextras.sugar.Share; +import com.llamalad7.mixinextras.sugar.ref.LocalBooleanRef; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.layers.FoxHeldItemLayer; import net.minecraft.client.renderer.entity.layers.RenderLayer; +import org.joml.Quaternionfc; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import traben.entity_model_features.models.IEMFModel; @@ -19,16 +23,83 @@ public Mixin_Fox_BlockOffset() { @WrapWithCondition(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/FoxRenderState;FF)V", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;translate(FFF)V", ordinal = 0)) - private boolean offsetBlock(PoseStack instance, float f, float g, float h, @Local(argsOnly = true) PoseStack poseStack) { + private boolean offsetBlock(PoseStack instance, float f, float g, float h, @Local(argsOnly = true) PoseStack poseStack, @Share("cancelRestOfHead") LocalBooleanRef cancelRestOfHead) { var model = (IEMFModel) getParentModel(); if (model.emf$isEMFModel()) { var root = model.emf$getEMFRootModel(); var positioner = root.getPositionerForAttachment(EMFAttachment.Type.FOX); if (positioner != null) { positioner.accept(poseStack); + cancelRestOfHead.set(true); return false; } } return true; } + +// @WrapWithCondition(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/FoxRenderState;FF)V", +// at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;scale(FFF)V", ordinal = 0)) +// private boolean offsetBlock2(PoseStack instance, float f, float g, float h, @Share("cancelRestOfHead") LocalBooleanRef cancelRestOfHead) { +// return !cancelRestOfHead.get(); +// } + + //#if MC >= 26.3 + + @WrapWithCondition(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/FoxRenderState;FF)V", + at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;rotate(Lcom/mojang/math/Axis;F)V", ordinal = 0)) + private boolean offsetBlock3(PoseStack instance, Axis axis, float v, @Share("cancelRestOfHead") LocalBooleanRef cancelRestOfHead) { + return !cancelRestOfHead.get(); + } + @WrapWithCondition(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/FoxRenderState;FF)V", + at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;rotateDegrees(Lcom/mojang/math/Axis;F)V", ordinal = 0)) + private boolean offsetBlock4(PoseStack instance, Axis axis, float v, @Share("cancelRestOfHead") LocalBooleanRef cancelRestOfHead) { + return !cancelRestOfHead.get(); + } + @WrapWithCondition(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/FoxRenderState;FF)V", + at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;rotateDegrees(Lcom/mojang/math/Axis;F)V", ordinal = 1)) + private boolean offsetBlock5(PoseStack instance, Axis axis, float v, @Share("cancelRestOfHead") LocalBooleanRef cancelRestOfHead) { + return !cancelRestOfHead.get(); + } + //#else + + //#if MC > 1.21.4 + private static final String MULPOSE = "Lcom/mojang/blaze3d/vertex/PoseStack;mulPose(Lorg/joml/Quaternionfc;)V"; + //#else + //$$ private static final String MULPOSE = "Lcom/mojang/blaze3d/vertex/PoseStack;mulPose(Lorg/joml/Quaternionf;)V"; + //#endif + + @WrapWithCondition(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/FoxRenderState;FF)V", + at = @At(value = "INVOKE", target = MULPOSE, ordinal = 0)) + private boolean offsetBlock3(PoseStack instance, + //#if MC > 1.21.4 + Quaternionfc + //#else + //$$ org.joml.Quaternionf + //#endif + quaternionfc, @Share("cancelRestOfHead") LocalBooleanRef cancelRestOfHead) { + return !cancelRestOfHead.get(); + } + @WrapWithCondition(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/FoxRenderState;FF)V", + at = @At(value = "INVOKE", target = MULPOSE, ordinal = 1)) + private boolean offsetBlock4(PoseStack instance, + //#if MC > 1.21.4 + Quaternionfc + //#else + //$$ org.joml.Quaternionf + //#endif + quaternionfc, @Share("cancelRestOfHead") LocalBooleanRef cancelRestOfHead) { + return !cancelRestOfHead.get(); + } + @WrapWithCondition(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/FoxRenderState;FF)V", + at = @At(value = "INVOKE", target = MULPOSE, ordinal = 2)) + private boolean offsetBlock5(PoseStack instance, + //#if MC > 1.21.4 + Quaternionfc + //#else + //$$ org.joml.Quaternionf + //#endif + quaternionfc, @Share("cancelRestOfHead") LocalBooleanRef cancelRestOfHead) { + return !cancelRestOfHead.get(); + } + //#endif } \ No newline at end of file diff --git a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/model/Mixin_EnderDragonFireball_Model.java b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/model/Mixin_EnderDragonFireball_Model.java index 86e26853..788f03b1 100644 --- a/src/main/java/traben/entity_model_features/mixin/mixins/rendering/model/Mixin_EnderDragonFireball_Model.java +++ b/src/main/java/traben/entity_model_features/mixin/mixins/rendering/model/Mixin_EnderDragonFireball_Model.java @@ -95,7 +95,10 @@ public abstract class Mixin_EnderDragonFireball_Model { //#endif ) { if (fireball != null) { - //#if MC >= 1.21.9 + //#if MC >= 26.3 + //$$ submitNodeCollector.submitModel(fireball, entityRenderState, poseStack, + //$$ RENDER_TYPE, entityRenderState.lightCoords, OverlayTexture.NO_OVERLAY, 0); + //#elseif MC >= 1.21.9 submitNodeCollector.submitModel(fireball, entityRenderState, poseStack, RENDER_TYPE, entityRenderState.lightCoords, OverlayTexture.NO_OVERLAY, -1, null, 0, null); diff --git a/src/main/java/traben/entity_model_features/models/animation/math/EMFMath.java b/src/main/java/traben/entity_model_features/models/animation/math/EMFMath.java index acbee381..5c1f0e00 100644 --- a/src/main/java/traben/entity_model_features/models/animation/math/EMFMath.java +++ b/src/main/java/traben/entity_model_features/models/animation/math/EMFMath.java @@ -20,7 +20,6 @@ import net.minecraft.world.entity.animal.camel.Camel; import net.minecraft.world.entity.animal.wolf.Wolf; import net.minecraft.world.entity.monster.Blaze; -import net.minecraft.world.entity.monster.EnderMan; import net.minecraft.world.entity.monster.Guardian; import net.minecraft.world.entity.monster.SpellcasterIllager; import net.minecraft.world.entity.monster.Vex; @@ -428,7 +427,13 @@ public static boolean isAggressive() { if (state == null) return false; var emfEntity = state.emfEntity(); - if (emfEntity instanceof final EnderMan enderman) { + if (emfEntity instanceof + //#if MC >= 26.3 + //$$ net.minecraft.world.entity.monster.Enderman + //#else + net.minecraft.world.entity.monster.EnderMan + //#endif + enderman) { return enderman.isCreepy(); } if (emfEntity instanceof final Blaze blaze) { @@ -774,7 +779,13 @@ public static float getFluidDepth() { public static float getSwingProgress() { if (isInGui()) return 0; - return emfEntity() instanceof LivingEntity alive ? alive.getAttackAnim(getTickDelta()) : 0; + return emfEntity() instanceof LivingEntity alive ? alive. + //#if MC >= 26.3 + //$$ getSwingAnimation + //#else + getAttackAnim + //#endif + (getTickDelta()) : 0; } diff --git a/src/main/java/traben/entity_model_features/models/parts/EMFModelPart.java b/src/main/java/traben/entity_model_features/models/parts/EMFModelPart.java index dd937f43..13f742b4 100644 --- a/src/main/java/traben/entity_model_features/models/parts/EMFModelPart.java +++ b/src/main/java/traben/entity_model_features/models/parts/EMFModelPart.java @@ -3,15 +3,10 @@ import com.mojang.blaze3d.vertex.BufferBuilder; import net.minecraft.client.renderer.*; import net.minecraft.util.Mth; -import net.minecraft.world.phys.Vec3; -import net.minecraft.world.phys.shapes.BitSetDiscreteVoxelShape; -import net.minecraft.world.phys.shapes.CubeVoxelShape; import org.jetbrains.annotations.Nullable; -import org.joml.Vector3f; import traben.entity_model_features.EMF; import traben.entity_model_features.config.EMFConfig; import traben.entity_model_features.mod_compat.IrisShadowPassDetection; -import traben.entity_model_features.EMFManager; import traben.entity_model_features.models.animation.EMFAttachment; import traben.entity_model_features.models.animation.math.EMFMath; import traben.entity_model_features.models.animation.state.EMFState; @@ -71,10 +66,10 @@ public EMFModelPart(List cuboids, Map children, EMFMode this.root = root; } - protected @Nullable Consumer getArmPositioner(EMFAttachment.Type type) { + protected @Nullable Consumer getAttachmentPositioner(EMFAttachment.Type type) { for (ModelPart p : children.values()) { if (p instanceof EMFModelPart part) { - var subConsumer = part.getArmPositioner(type); // Only a part with the correct attachment will end this deep search + var subConsumer = part.getAttachmentPositioner(type); // Only a part with the correct attachment will end this deep search if (subConsumer != null) { return (stack) -> { // Add this 'parent' to the cumulative stack transformation started by the child, and send it up the chain @@ -295,7 +290,13 @@ void renderWithTextureOverride(PoseStack matrices, VertexConsumer vertices, int //$$ public VertexConsumer getBuffer(RenderType type) { //$$ //TODO probably wrong investigate further //$$ var draw = Minecraft.getInstance().gameRenderer.renderBuffers().stagedVertexBuffer().appendDraw( - //$$ type.format(), com.mojang.blaze3d.PrimitiveTopology.QUADS); + //$$ type.format(), + //#if MC >= 26.3 + //$$ com.mojang.renderpearl.api.pipeline.PrimitiveTopology.QUADS + //#else + //$$ com.mojang.blaze3d.PrimitiveTopology.QUADS + //#endif + //$$ ); //$$ return Minecraft.getInstance().gameRenderer.renderBuffers().stagedVertexBuffer().getVertexBuilder(draw); //$$ } //$$ }; diff --git a/src/main/java/traben/entity_model_features/models/parts/EMFModelPartCustom.java b/src/main/java/traben/entity_model_features/models/parts/EMFModelPartCustom.java index cd884708..4c6557d4 100644 --- a/src/main/java/traben/entity_model_features/models/parts/EMFModelPartCustom.java +++ b/src/main/java/traben/entity_model_features/models/parts/EMFModelPartCustom.java @@ -133,7 +133,7 @@ public String toStringShort() { } @Override - protected @Nullable Consumer getArmPositioner(EMFAttachment.Type type) { + protected @Nullable Consumer getAttachmentPositioner(EMFAttachment.Type type) { if (attachments != null) { for (EMFAttachment attachment : attachments) { if (attachment.type == type) { @@ -145,7 +145,7 @@ public String toStringShort() { } } } - return super.getArmPositioner(type); + return super.getAttachmentPositioner(type); } @Override diff --git a/src/main/java/traben/entity_model_features/models/parts/EMFModelPartRoot.java b/src/main/java/traben/entity_model_features/models/parts/EMFModelPartRoot.java index fccf913f..852883e3 100644 --- a/src/main/java/traben/entity_model_features/models/parts/EMFModelPartRoot.java +++ b/src/main/java/traben/entity_model_features/models/parts/EMFModelPartRoot.java @@ -226,14 +226,14 @@ public void addAndSetVariantOfJem(EMFJemData jemData, int variant) { setVariantStateTo(variant); if (jemData.hasAttachmentsLeft) { - this.leftArmPositioners.put(variant, getArmPositioner(EMFAttachment.Type.LEFT_HAND)); + this.leftArmPositioners.put(variant, getAttachmentPositioner(EMFAttachment.Type.LEFT_HAND)); } if (jemData.hasAttachmentsRight) { - this.rightArmPositioners.put(variant, getArmPositioner(EMFAttachment.Type.RIGHT_HAND)); + this.rightArmPositioners.put(variant, getAttachmentPositioner(EMFAttachment.Type.RIGHT_HAND)); } if (jemData.hasAttachmentsOther) { for (EMFAttachment.Type type : EMFAttachment.Type.NON_HANDS) { - var positioner = getArmPositioner(type); + var positioner = getAttachmentPositioner(type); if (positioner != null) { this.otherPositioners.computeIfAbsent(type, t -> new HashMap<>()) .put(variant, positioner); diff --git a/src/main/resources/entity_model_features_16.accesswidener b/src/main/resources/entity_model_features_16.accesswidener new file mode 100644 index 00000000..f17dffca --- /dev/null +++ b/src/main/resources/entity_model_features_16.accesswidener @@ -0,0 +1,46 @@ +accessWidener v2 official + +accessible method net/minecraft/client/model/geom/ModelPart compile (Lcom/mojang/blaze3d/vertex/PoseStack$Pose;Lcom/mojang/blaze3d/vertex/VertexConsumer;III)V + +extendable class net/minecraft/client/model/geom/ModelPart + + +accessible class net/minecraft/client/model/geom/ModelPart$Polygon +accessible class net/minecraft/client/model/geom/ModelPart$Vertex + + +extendable method net/minecraft/client/model/geom/ModelPart compile (Lcom/mojang/blaze3d/vertex/PoseStack$Pose;Lcom/mojang/blaze3d/vertex/VertexConsumer;III)V + +accessible field net/minecraft/client/model/geom/ModelPart cubes Ljava/util/List; +accessible field net/minecraft/client/model/geom/ModelPart children Ljava/util/Map; +mutable field net/minecraft/client/model/geom/ModelPart cubes Ljava/util/List; +mutable field net/minecraft/client/model/geom/ModelPart children Ljava/util/Map; + +accessible field net/minecraft/client/model/Model renderType Ljava/util/function/Function; + +accessible field net/minecraft/client/renderer/blockentity/BlockEntityRenderers PROVIDERS Ljava/util/Map; +accessible field net/minecraft/client/model/geom/EntityModelSet roots Ljava/util/Map; + +accessible field net/minecraft/world/level/block/state/BlockBehaviour hasCollision Z + +accessible field com/mojang/blaze3d/vertex/PoseStack poses Ljava/util/List; +accessible method com/mojang/blaze3d/vertex/PoseStack$Pose set (Lcom/mojang/blaze3d/vertex/PoseStack$Pose;)V + +accessible field net/minecraft/world/entity/LivingEntity jumping Z + +accessible field com/mojang/blaze3d/vertex/BufferBuilder building Z + +accessible field net/minecraft/client/renderer/SpriteCoordinateExpander delegate Lcom/mojang/blaze3d/vertex/VertexConsumer; + +extendable class net/minecraft/client/model/geom/ModelPart$Cube +accessible field net/minecraft/client/model/geom/ModelPart$Cube polygons [Lnet/minecraft/client/model/geom/ModelPart$Polygon; + +accessible field net/minecraft/world/entity/Entity yRot F + +accessible method net/minecraft/client/renderer/entity/LivingEntityRenderer isUpsideDownName (Ljava/lang/String;)Z + +accessible method net/minecraft/world/phys/shapes/CubeVoxelShape (Lnet/minecraft/world/phys/shapes/DiscreteVoxelShape;)V + +accessible method net/minecraft/client/renderer/entity/EntityRenderer extractShadow (Lnet/minecraft/client/renderer/entity/state/EntityRenderState;Lnet/minecraft/client/Minecraft;Lnet/minecraft/world/level/Level;)V +accessible field net/minecraft/client/renderer/entity/EntityRenderer shadowRadius F +accessible field net/minecraft/client/renderer/entity/EntityRenderer shadowStrength F \ No newline at end of file diff --git a/versions/26.3-fabric/gradle.properties b/versions/26.3-fabric/gradle.properties new file mode 100644 index 00000000..17519c0e --- /dev/null +++ b/versions/26.3-fabric/gradle.properties @@ -0,0 +1,2 @@ +essential.defaults.loom.minecraft=com.mojang:minecraft:26.3-pre-3 +essential.defaults.loom.mappings= \ No newline at end of file