*SilkMoth* Model

This commit is contained in:
Frank Bauer 2021-06-24 10:58:05 +02:00
parent b0ecc1152c
commit fb29dd75f7
3 changed files with 129 additions and 11 deletions

View file

@ -4,6 +4,12 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.ModelPart;
import net.minecraft.client.model.geom.PartNames;
import net.minecraft.client.model.geom.PartPose;
import net.minecraft.client.model.geom.builders.CubeListBuilder;
import net.minecraft.client.model.geom.builders.LayerDefinition;
import net.minecraft.client.model.geom.builders.MeshDefinition;
import net.minecraft.client.model.geom.builders.PartDefinition;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import ru.betterend.entity.SilkMothEntity; import ru.betterend.entity.SilkMothEntity;
@ -25,13 +31,123 @@ public class SilkMothEntityModel extends BlockBenchModel<SilkMothEntity> {
private final ModelPart wingL_r1; private final ModelPart wingL_r1;
private final ModelPart abdomen_r1; private final ModelPart abdomen_r1;
public SilkMothEntityModel() { public static LayerDefinition getTexturedModelData() {
MeshDefinition modelData = new MeshDefinition();
PartDefinition modelPartData = modelData.getRoot();
PartDefinition legsL = modelPartData.addOrReplaceChild(PartNames.LEFT_LEG, CubeListBuilder.create()
.texOffs(0, 0),
PartPose.offsetAndRotation(1.5f, 19.9f, -0.45f,
0.0f, 0.0f, 0.6981f));
legsL.addOrReplaceChild("cube_r1", CubeListBuilder.create()
.addBox(0.0216f, 0.0f, -0.5976f, 3.0f, 0.0f, 1.0f)
.texOffs(0, 13),
PartPose.offsetAndRotation(0.0f, 0.0f, -1.0f,
0.0f, 0.2182f, 0.3927f));
legsL.addOrReplaceChild("cube_r2", CubeListBuilder.create()
.addBox(0.0f, 0.0f, -0.6f, 3.0f, 0.0f, 1.0f)
.texOffs(0, 15),
PartPose.offsetAndRotation(0.5f, 0.1f, -0.05f,
0.0f, 0.0f, 0.3927f));
legsL.addOrReplaceChild("cube_r3", CubeListBuilder.create()
.addBox(0.0f, 0.0f, -0.5f, 3.0f, 0.0f, 1.0f)
.texOffs(0, 14),
PartPose.offsetAndRotation(0.0f, 0.0f, 0.9f,
0.0f, -0.2182f, 0.3927f));
PartDefinition legsR = modelPartData.addOrReplaceChild(PartNames.RIGHT_LEG, CubeListBuilder.create()
.texOffs(0, 0),
PartPose.offsetAndRotation(-1.5f, 19.9f, -0.55f,
0.0f, 3.1416f, -0.6545f));
legsR.addOrReplaceChild("cube_r4", CubeListBuilder.create()
.addBox(0.0f, 0.0f, -0.5f, 3.0f, 0.0f, 1.0f)
.texOffs(0, 10),
PartPose.offsetAndRotation(0.0f, 0.0f, -1.0f,
0.0f, 0.2182f, 0.3927f));
legsR.addOrReplaceChild("cube_r5", CubeListBuilder.create()
.addBox(0.0f, 0.0f, -0.4f, 3.0f, 0.0f, 1.0f)
.texOffs(0, 11),
PartPose.offsetAndRotation(0.5f, 0.1f, -0.05f,
0.0f, 0.0f, 0.3927f));
legsR.addOrReplaceChild("cube_r6", CubeListBuilder.create()
.addBox(0.0216f, 0.0f, -0.4024f, 3.0f, 0.0f, 1.0f)
.texOffs(0, 12),
PartPose.offsetAndRotation(0.0f, 0.0f, 0.9f,
0.0f, -0.2182f, 0.3927f));
PartDefinition head_pivot = modelPartData.addOrReplaceChild(PartNames.HEAD, CubeListBuilder.create()
.addBox(-1.5f, -1.5f, -2.0f, 3.0f, 3.0f, 3.0f)
.texOffs(15, 10),
PartPose.offset(0.0f, 18.0f, -3.0f));
head_pivot.addOrReplaceChild("tendril_r_r1", CubeListBuilder.create()
.mirror()
.addBox(-1.5f, -5.0f, 0.0f, 3.0f, 5.0f, 0.0f)
.texOffs(23, 0),
PartPose.offsetAndRotation(1.0f, -1.15f, -1.0f,
0.0f, 0.0f, 0.3927f));
head_pivot.addOrReplaceChild("tendril_r_r2", CubeListBuilder.create()
.addBox(-1.5f, -5.0f, 0.0f, 3.0f, 5.0f, 0.0f)
.texOffs(23, 0),
PartPose.offsetAndRotation(-1.0f, -1.15f, -1.0f,
0.0f, 0.0f, -0.3927f));
PartDefinition bb_main = modelPartData.addOrReplaceChild(PartNames.BODY, CubeListBuilder.create()
.addBox(-2.5f, -8.5f, -3.0f, 5.0f, 5.0f, 3.0f)
.texOffs(19, 19),
PartPose.offset(0.0f, 24.0f, 0.0f));
bb_main.addOrReplaceChild(PartNames.RIGHT_WING, CubeListBuilder.create()
.mirror()
.addBox(-7.0f, 0.0f, -3.0f, 9.0f, 0.0f, 5.0f)
.texOffs(0, 5),
PartPose.offsetAndRotation(-1.5f, -6.5f, 0.5f,
0.0f, 0.0f, 0.3927f));
bb_main.addOrReplaceChild(PartNames.LEFT_WING, CubeListBuilder.create()
.addBox(-2.0f, 0.0f, -3.0f, 9.0f, 0.0f, 5.0f)
.texOffs(0, 5),
PartPose.offsetAndRotation(1.5f, -6.5f, 0.5f,
0.0f, 0.0f, -0.3927f));
bb_main.addOrReplaceChild("abdomen_r1", CubeListBuilder.create()
.addBox(-3.0f, -4.0f, -1.0f, 4.0f, 4.0f, 7.0f)
.texOffs(0, 10),
PartPose.offsetAndRotation(1.0f, -3.9f, 0.0f,
-0.3927f, 0.0f, 0.0f));
/*texWidth = 64;
texHeight = 64;*/
return LayerDefinition.create(modelData, 64, 64);
}
public SilkMothEntityModel(ModelPart modelPart) {
super(RenderType::entityCutout); super(RenderType::entityCutout);
texWidth = 64; legsL = modelPart.getChild(PartNames.LEFT_LEG);
texHeight = 64; cube_r1 = legsL.getChild("cube_r1");
cube_r2 = legsL.getChild("cube_r2");
cube_r3 = legsL.getChild("cube_r3");
legsR = modelPart.getChild(PartNames.RIGHT_LEG);
cube_r4 = legsR.getChild("cube_r4");
cube_r5 = legsR.getChild("cube_r5");
cube_r6 = legsR.getChild("cube_r6");
head_pivot = modelPart.getChild(PartNames.HEAD);
tendril_r_r1 = head_pivot.getChild("tendril_r_r1");
tendril_r_r2 = head_pivot.getChild("tendril_r_r2");
bb_main = modelPart.getChild(PartNames.BODY);
wingR_r1 = bb_main.getChild(PartNames.RIGHT_WING);
wingL_r1 = bb_main.getChild(PartNames.LEFT_WING);
abdomen_r1 = bb_main.getChild("abdomen_r1");
legsL = new ModelPart(this); /*legsL = new ModelPart(this);
legsL.setPos(1.5F, 19.9F, -0.45F); legsL.setPos(1.5F, 19.9F, -0.45F);
setRotationAngle(legsL, 0.0F, 0.0F, 0.6981F); setRotationAngle(legsL, 0.0F, 0.0F, 0.6981F);
@ -111,7 +227,7 @@ public class SilkMothEntityModel extends BlockBenchModel<SilkMothEntity> {
abdomen_r1.setPos(1.0F, -3.9F, 0.0F); abdomen_r1.setPos(1.0F, -3.9F, 0.0F);
bb_main.addChild(abdomen_r1); bb_main.addChild(abdomen_r1);
setRotationAngle(abdomen_r1, -0.3927F, 0.0F, 0.0F); setRotationAngle(abdomen_r1, -0.3927F, 0.0F, 0.0F);
abdomen_r1.texOffs(0, 10).addBox(-3.0F, -4.0F, -1.0F, 4.0F, 4.0F, 7.0F, 0.0F); abdomen_r1.texOffs(0, 10).addBox(-3.0F, -4.0F, -1.0F, 4.0F, 4.0F, 7.0F, 0.0F);*/
} }
@Override @Override

View file

@ -1,17 +1,20 @@
package ru.betterend.entity.render; package ru.betterend.entity.render;
import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.client.renderer.entity.MobRenderer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import ru.betterend.BetterEnd; import ru.betterend.BetterEnd;
import ru.betterend.entity.SilkMothEntity; import ru.betterend.entity.SilkMothEntity;
import ru.betterend.entity.model.CubozoaEntityModel;
import ru.betterend.entity.model.SilkMothEntityModel; import ru.betterend.entity.model.SilkMothEntityModel;
import ru.betterend.registry.EndEntitiesRenders;
public class SilkMothEntityRenderer extends MobRenderer<SilkMothEntity, SilkMothEntityModel> { public class SilkMothEntityRenderer extends MobRenderer<SilkMothEntity, SilkMothEntityModel> {
private static final ResourceLocation TEXTURE = BetterEnd.makeID("textures/entity/silk_moth.png"); private static final ResourceLocation TEXTURE = BetterEnd.makeID("textures/entity/silk_moth.png");
public SilkMothEntityRenderer(EntityRenderDispatcher entityRenderDispatcher) { public SilkMothEntityRenderer(EntityRendererProvider.Context ctx) {
super(entityRenderDispatcher, new SilkMothEntityModel(), 0.5f); super(ctx, new SilkMothEntityModel(ctx.bakeLayer(EndEntitiesRenders.SILK_MOTH_MODEL)), 0.5f);
} }
@Override @Override

View file

@ -7,10 +7,7 @@ import net.minecraft.client.renderer.entity.MobRenderer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import ru.betterend.BetterEnd; import ru.betterend.BetterEnd;
import ru.betterend.entity.model.CubozoaEntityModel; import ru.betterend.entity.model.*;
import ru.betterend.entity.model.DragonflyEntityModel;
import ru.betterend.entity.model.EndFishEntityModel;
import ru.betterend.entity.model.EndSlimeEntityModel;
import ru.betterend.entity.render.RendererEntityCubozoa; import ru.betterend.entity.render.RendererEntityCubozoa;
import ru.betterend.entity.render.RendererEntityDragonfly; import ru.betterend.entity.render.RendererEntityDragonfly;
import ru.betterend.entity.render.RendererEntityEndFish; import ru.betterend.entity.render.RendererEntityEndFish;
@ -25,6 +22,7 @@ public class EndEntitiesRenders {
public static final ModelLayerLocation END_SLIME_MODEL = registerMain("endslime"); public static final ModelLayerLocation END_SLIME_MODEL = registerMain("endslime");
public static final ModelLayerLocation END_FISH_MODEL = registerMain("endfish"); public static final ModelLayerLocation END_FISH_MODEL = registerMain("endfish");
public static final ModelLayerLocation CUBOZOA_MODEL = registerMain("cubozoa"); public static final ModelLayerLocation CUBOZOA_MODEL = registerMain("cubozoa");
public static final ModelLayerLocation SILK_MOTH_MODEL = registerMain("silkmoth");
public static void register() { public static void register() {
register(EndEntities.DRAGONFLY, RendererEntityDragonfly.class); register(EndEntities.DRAGONFLY, RendererEntityDragonfly.class);
@ -39,6 +37,7 @@ public class EndEntitiesRenders {
EntityModelLayerRegistry.registerModelLayer(END_SLIME_MODEL, EndSlimeEntityModel::getCompleteTexturedModelData); EntityModelLayerRegistry.registerModelLayer(END_SLIME_MODEL, EndSlimeEntityModel::getCompleteTexturedModelData);
EntityModelLayerRegistry.registerModelLayer(END_FISH_MODEL, EndFishEntityModel::getTexturedModelData); EntityModelLayerRegistry.registerModelLayer(END_FISH_MODEL, EndFishEntityModel::getTexturedModelData);
EntityModelLayerRegistry.registerModelLayer(CUBOZOA_MODEL, CubozoaEntityModel::getTexturedModelData); EntityModelLayerRegistry.registerModelLayer(CUBOZOA_MODEL, CubozoaEntityModel::getTexturedModelData);
EntityModelLayerRegistry.registerModelLayer(SILK_MOTH_MODEL, SilkMothEntityModel::getTexturedModelData);
} }
private static void register(EntityType<?> type, Class<? extends MobRenderer<?, ?>> renderer) { private static void register(EntityType<?> type, Class<? extends MobRenderer<?, ?>> renderer) {