Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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

3 changes: 2 additions & 1 deletion root.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ fun MutableList<String>.version(mcVersion: Int, forge: Boolean = true, neoforge:
}

mutableListOf<String>()
.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)
Expand Down
12 changes: 5 additions & 7 deletions src/main/java/traben/entity_model_features/config/EMFConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -597,27 +600,22 @@ 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()
//#else
RenderType.lines()
//#endif
);
//#endif
//who knows what mods might do smdh
//noinspection ConstantValue
if (buffer != null) {
renderBoxes(matrixStack, buffer, root);
}
matrixStack.popPose();
}
//#endif
}

private void renderBoxes(PoseStack matrices, VertexConsumer vertices, ModelPart modelPart) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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++;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<AvatarlikeEntity extends Avatar & ClientAvatarEntity>
extends LivingEntityRenderer<AvatarlikeEntity, AvatarRenderState, PlayerModel> {

Expand Down Expand Up @@ -101,7 +101,13 @@ public abstract class MixinPlayerEntityRenderer<AvatarlikeEntity extends Avatar
ETFState.mount(state);
}

@Inject(method = "renderHand", at = @At(value = "INVOKE", target = "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"))
@Inject(method = "renderHand", at = @At(value = "INVOKE", target =
//#if MC >= 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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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;
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -71,10 +66,10 @@ public EMFModelPart(List<Cube> cuboids, Map<String, ModelPart> children, EMFMode
this.root = root;
}

protected @Nullable Consumer<PoseStack> getArmPositioner(EMFAttachment.Type type) {
protected @Nullable Consumer<PoseStack> 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
Expand Down Expand Up @@ -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);
//$$ }
//$$ };
Expand Down
Loading