Working custom obj hat

This commit is contained in:
2026-03-03 03:06:03 +01:00
parent 80684f7e07
commit 2f41fc080c
@@ -4,15 +4,18 @@ import java.io.IOException;
import java.util.Map;
import org.saturnclient.cosmetics.obj.ObjRenderer;
import org.saturnclient.saturnclient.client.player.SaturnPlayer;
import de.javagl.obj.Mtl;
import de.javagl.obj.Obj;
import net.minecraft.client.render.OverlayTexture;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.feature.FeatureRenderer;
import net.minecraft.client.render.entity.feature.FeatureRendererContext;
import net.minecraft.client.render.entity.model.PlayerEntityModel;
import net.minecraft.client.render.entity.state.PlayerEntityRenderState;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier;
public class HatFeatureRenderer extends FeatureRenderer<PlayerEntityRenderState, PlayerEntityModel> {
@@ -34,6 +37,25 @@ public class HatFeatureRenderer extends FeatureRenderer<PlayerEntityRenderState,
@Override
public void render(MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light,
PlayerEntityRenderState state, float limbAngle, float limbDistance) {
ObjRenderer.renderObj(this.obj, this.mtl, matrices, vertexConsumers, light, 0);
ItemStack headItem = state.equippedHeadStack;
SaturnPlayer player = SaturnPlayer.get(state.name);
if (!headItem.isEmpty() || state.invisible || player == null || player.hat.isEmpty()) {
return;
}
matrices.push();
this.getContextModel().head.rotate(matrices);
matrices.multiply(net.minecraft.util.math.RotationAxis.POSITIVE_X.rotationDegrees(180.0f));
matrices.multiply(net.minecraft.util.math.RotationAxis.POSITIVE_Y.rotationDegrees(180.0f));
matrices.scale(0.25f, 0.25f, 0.25f);
matrices.translate(0.0f, 1.0f, 0.0f);
// Identifier.of("saturnclient:hat_" + player.hat);
ObjRenderer.renderObj(this.obj, this.mtl, matrices, vertexConsumers, light, OverlayTexture.DEFAULT_UV);
matrices.pop();
}
}