diff --git a/src/main/java/ru/betterend/entity/model/SilkMothEntityModel.java b/src/main/java/ru/betterend/entity/model/SilkMothEntityModel.java index 5d21fafe..989c3684 100644 --- a/src/main/java/ru/betterend/entity/model/SilkMothEntityModel.java +++ b/src/main/java/ru/betterend/entity/model/SilkMothEntityModel.java @@ -4,6 +4,12 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; 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.util.Mth; import ru.betterend.entity.SilkMothEntity; @@ -25,13 +31,123 @@ public class SilkMothEntityModel extends BlockBenchModel { private final ModelPart wingL_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); - texWidth = 64; - texHeight = 64; + legsL = modelPart.getChild(PartNames.LEFT_LEG); + 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); setRotationAngle(legsL, 0.0F, 0.0F, 0.6981F); @@ -111,7 +227,7 @@ public class SilkMothEntityModel extends BlockBenchModel { abdomen_r1.setPos(1.0F, -3.9F, 0.0F); bb_main.addChild(abdomen_r1); 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 diff --git a/src/main/java/ru/betterend/entity/render/SilkMothEntityRenderer.java b/src/main/java/ru/betterend/entity/render/SilkMothEntityRenderer.java index 7d3a2745..62f27a00 100644 --- a/src/main/java/ru/betterend/entity/render/SilkMothEntityRenderer.java +++ b/src/main/java/ru/betterend/entity/render/SilkMothEntityRenderer.java @@ -1,17 +1,20 @@ package ru.betterend.entity.render; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; import ru.betterend.BetterEnd; import ru.betterend.entity.SilkMothEntity; +import ru.betterend.entity.model.CubozoaEntityModel; import ru.betterend.entity.model.SilkMothEntityModel; +import ru.betterend.registry.EndEntitiesRenders; public class SilkMothEntityRenderer extends MobRenderer { private static final ResourceLocation TEXTURE = BetterEnd.makeID("textures/entity/silk_moth.png"); - public SilkMothEntityRenderer(EntityRenderDispatcher entityRenderDispatcher) { - super(entityRenderDispatcher, new SilkMothEntityModel(), 0.5f); + public SilkMothEntityRenderer(EntityRendererProvider.Context ctx) { + super(ctx, new SilkMothEntityModel(ctx.bakeLayer(EndEntitiesRenders.SILK_MOTH_MODEL)), 0.5f); } @Override diff --git a/src/main/java/ru/betterend/registry/EndEntitiesRenders.java b/src/main/java/ru/betterend/registry/EndEntitiesRenders.java index 45470a48..e873ce0a 100644 --- a/src/main/java/ru/betterend/registry/EndEntitiesRenders.java +++ b/src/main/java/ru/betterend/registry/EndEntitiesRenders.java @@ -7,10 +7,7 @@ import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EntityType; import ru.betterend.BetterEnd; -import ru.betterend.entity.model.CubozoaEntityModel; -import ru.betterend.entity.model.DragonflyEntityModel; -import ru.betterend.entity.model.EndFishEntityModel; -import ru.betterend.entity.model.EndSlimeEntityModel; +import ru.betterend.entity.model.*; import ru.betterend.entity.render.RendererEntityCubozoa; import ru.betterend.entity.render.RendererEntityDragonfly; 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_FISH_MODEL = registerMain("endfish"); public static final ModelLayerLocation CUBOZOA_MODEL = registerMain("cubozoa"); + public static final ModelLayerLocation SILK_MOTH_MODEL = registerMain("silkmoth"); public static void register() { register(EndEntities.DRAGONFLY, RendererEntityDragonfly.class); @@ -39,6 +37,7 @@ public class EndEntitiesRenders { EntityModelLayerRegistry.registerModelLayer(END_SLIME_MODEL, EndSlimeEntityModel::getCompleteTexturedModelData); EntityModelLayerRegistry.registerModelLayer(END_FISH_MODEL, EndFishEntityModel::getTexturedModelData); EntityModelLayerRegistry.registerModelLayer(CUBOZOA_MODEL, CubozoaEntityModel::getTexturedModelData); + EntityModelLayerRegistry.registerModelLayer(SILK_MOTH_MODEL, SilkMothEntityModel::getTexturedModelData); } private static void register(EntityType type, Class> renderer) {