Skip to content

Commit bf9678c

Browse files
committed
added dragon head gloves and boots to all players
1 parent ab5be56 commit bf9678c

3 files changed

Lines changed: 137 additions & 1 deletion

File tree

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package coreforge.nice.client;
2+
3+
import net.minecraft.client.MinecraftClient;
4+
import net.minecraft.client.render.VertexConsumerProvider;
5+
import net.minecraft.client.render.entity.feature.FeatureRenderer;
6+
import net.minecraft.client.render.entity.feature.FeatureRendererContext;
7+
import net.minecraft.client.render.entity.model.BipedEntityModel;
8+
import net.minecraft.client.render.entity.model.EntityModel;
9+
import net.minecraft.client.render.entity.model.ModelWithArms;
10+
import net.minecraft.client.render.model.json.ModelTransformation;
11+
import net.minecraft.client.util.math.MatrixStack;
12+
import net.minecraft.entity.LivingEntity;
13+
import net.minecraft.item.ItemStack;
14+
import net.minecraft.item.Items;
15+
import net.minecraft.util.Arm;
16+
import net.minecraft.util.math.Vec3f;
17+
18+
public class DragonHeadFeatureRenderer<T extends LivingEntity, M extends EntityModel<T> & ModelWithArms> extends FeatureRenderer<T, M> {
19+
public DragonHeadFeatureRenderer(FeatureRendererContext<T, M> featureRendererContext) {
20+
super(featureRendererContext);
21+
}
22+
23+
public void render(MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, T livingEntity, float f, float g, float h, float j, float k, float l) {
24+
boolean bl = livingEntity.getMainArm() == Arm.RIGHT;
25+
ItemStack itemStack = new ItemStack(Items.DRAGON_HEAD);//bl ? livingEntity.getOffHandStack() : livingEntity.getMainHandStack();
26+
ItemStack itemStack2 = new ItemStack(Items.DRAGON_HEAD);//bl ? livingEntity.getMainHandStack() : livingEntity.getOffHandStack();
27+
if (!itemStack.isEmpty() || !itemStack2.isEmpty()) {
28+
matrixStack.push();
29+
if (this.getContextModel().child) {
30+
float m = 0.5F;
31+
matrixStack.translate(0.0D, 0.75D, 0.0D);
32+
matrixStack.scale(0.5F, 0.5F, 0.5F);
33+
}
34+
35+
this.renderItem(livingEntity, itemStack2, ModelTransformation.Mode.THIRD_PERSON_RIGHT_HAND, Arm.RIGHT, matrixStack, vertexConsumerProvider, i);
36+
this.renderItem(livingEntity, itemStack, ModelTransformation.Mode.THIRD_PERSON_LEFT_HAND, Arm.LEFT, matrixStack, vertexConsumerProvider, i);
37+
this.renderBoot(livingEntity,itemStack,ModelTransformation.Mode.THIRD_PERSON_LEFT_HAND,matrixStack,vertexConsumerProvider,i,true);
38+
this.renderBoot(livingEntity,itemStack2,ModelTransformation.Mode.THIRD_PERSON_RIGHT_HAND,matrixStack,vertexConsumerProvider,i,false);
39+
matrixStack.pop();
40+
}
41+
}
42+
43+
protected void renderItem(LivingEntity entity, ItemStack stack, ModelTransformation.Mode transformationMode, Arm arm, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light) {
44+
if (!stack.isEmpty()) {
45+
matrices.push();
46+
((ModelWithArms)this.getContextModel()).setArmAngle(arm, matrices);
47+
//((BipedEntityModel)this.getContextModel()).leftLeg.rotate(matrices);
48+
matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(-90.0F));
49+
matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(180.0F));
50+
boolean bl = arm == Arm.LEFT;
51+
matrices.translate((double)((float)(bl ? -1 : 1) / 16.0F), 0.125D, -0.625D);
52+
MinecraftClient.getInstance().getHeldItemRenderer().renderItem(entity, stack, transformationMode, bl, matrices, vertexConsumers, light);
53+
matrices.pop();
54+
}
55+
}
56+
57+
private void renderBoot(LivingEntity entity, ItemStack stack, ModelTransformation.Mode transformationMode, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, boolean left){
58+
matrices.push();
59+
//((ModelWithArms)this.getContextModel()).setArmAngle(arm, matrices);
60+
if(left) {
61+
((BipedEntityModel) this.getContextModel()).leftLeg.rotate(matrices);
62+
} else {
63+
((BipedEntityModel) this.getContextModel()).rightLeg.rotate(matrices);
64+
}
65+
matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(-90.0F));
66+
matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(180.0F));
67+
matrices.translate((double)((float)(left ? -1 : 1) / 16.0F), 0.125D, -0.645D);
68+
MinecraftClient.getInstance().getHeldItemRenderer().renderItem(entity, stack, transformationMode, left, matrices, vertexConsumers, light);
69+
matrices.pop();
70+
}
71+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package coreforge.nice.mixin;
2+
3+
import net.minecraft.client.MinecraftClient;
4+
import net.minecraft.client.model.ModelPart;
5+
import net.minecraft.client.network.AbstractClientPlayerEntity;
6+
import net.minecraft.client.render.OverlayTexture;
7+
import net.minecraft.client.render.RenderLayer;
8+
import net.minecraft.client.render.VertexConsumerProvider;
9+
import net.minecraft.client.render.entity.EntityRendererFactory;
10+
import net.minecraft.client.render.entity.LivingEntityRenderer;
11+
import net.minecraft.client.render.entity.PlayerEntityRenderer;
12+
import net.minecraft.client.render.entity.model.ModelWithArms;
13+
import net.minecraft.client.render.entity.model.PlayerEntityModel;
14+
import net.minecraft.client.render.item.HeldItemRenderer;
15+
import net.minecraft.client.render.model.json.ModelTransformation;
16+
import net.minecraft.client.util.math.MatrixStack;
17+
import net.minecraft.item.*;
18+
import net.minecraft.util.Arm;
19+
import net.minecraft.util.math.Vec3f;
20+
import org.spongepowered.asm.mixin.Mixin;
21+
import org.spongepowered.asm.mixin.Shadow;
22+
import org.spongepowered.asm.mixin.injection.At;
23+
import org.spongepowered.asm.mixin.injection.Inject;
24+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
25+
26+
import coreforge.nice.client.DragonHeadFeatureRenderer;
27+
28+
import java.awt.*;
29+
30+
@Mixin(PlayerEntityRenderer.class)
31+
public abstract class PlayerEntityRendererMixin extends LivingEntityRenderer<AbstractClientPlayerEntity, PlayerEntityModel<AbstractClientPlayerEntity>> {
32+
HeldItemRenderer rightHeadRenderer = new HeldItemRenderer(MinecraftClient.getInstance());
33+
ItemStack rightHeadStack = new ItemStack(Items.DRAGON_HEAD,1);
34+
35+
public PlayerEntityRendererMixin(EntityRendererFactory.Context ctx, PlayerEntityModel<AbstractClientPlayerEntity> model, float shadowRadius) {
36+
super(ctx, model, shadowRadius);
37+
}
38+
39+
/*@Shadow
40+
protected final boolean addFeature(net.minecraft.client.render.entity.feature.FeatureRenderer<T, M> feature) {
41+
return false;
42+
}*/
43+
44+
@Inject(method = "<init>",at = @At("TAIL"))
45+
public void init(EntityRendererFactory.Context ctx, boolean slim, CallbackInfo ci){
46+
this.addFeature(new DragonHeadFeatureRenderer<>(this));
47+
}
48+
49+
/*@Inject(method = "renderArm",at = @At("TAIL"))
50+
public void renderArmInject(MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, AbstractClientPlayerEntity player, ModelPart arm, ModelPart sleeve, CallbackInfo ci){
51+
rightHeadRenderer.renderItem(player,rightHeadStack, ModelTransformation.Mode.FIRST_PERSON_RIGHT_HAND,false,matrices,vertexConsumers,255);
52+
53+
arm.render(matrices, vertexConsumers.getBuffer(RenderLayer.getEndPortal()), light, OverlayTexture.DEFAULT_UV);
54+
matrices.push();
55+
//((ModelWithArms)this.getContextModel()).setArmAngle(arm, matrices);
56+
((PlayerEntityRenderer)((Object)this)).getModel().setArmAngle(player.getMainArm(),matrices);
57+
matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(-90.0F));
58+
matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(180.0F));
59+
boolean bl = false;
60+
matrices.translate((double)((float)(bl ? -1 : 1) / 16.0F), 0.125D, -0.625D);
61+
MinecraftClient.getInstance().getHeldItemRenderer().renderItem(player,rightHeadStack, ModelTransformation.Mode.THIRD_PERSON_RIGHT_HAND,true,matrices,vertexConsumers,light);
62+
matrices.pop();
63+
}*/
64+
}

src/main/resources/Nice.mixins.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"mixins": [
77
],
88
"client": [
9-
"DrawerMixin"
9+
"DrawerMixin",
10+
"PlayerEntityRendererMixin"
1011
],
1112
"injectors": {
1213
"defaultRequire": 1

0 commit comments

Comments
 (0)