diff --git a/Convert.java b/Convert.java index 8c72c762..3e7e914b 100644 --- a/Convert.java +++ b/Convert.java @@ -9,6 +9,8 @@ class ModelPart { int u=0, v=0; float bx=0,by=0,bz=0,ba=0,bb=0,bc=0; float scale = 1; + static int wd = 64; + static int hg = 32; boolean hadBox = false; @@ -24,6 +26,15 @@ class ModelPart { parts.add(this); } + ModelPart(int wd, int hg, int u, int v, String name){ + this.name = name; + this.u = u; + this.v = v; + ModelPart.wd = wd; + ModelPart.hg = hg; + parts.add(this); + } + ModelPart setPos(float x, float y, float z){ this.x=x; this.y=y; @@ -48,6 +59,9 @@ class ModelPart { this.v=v; return this; } + ModelPart addBox(float x, float y, float z, float a, float b, float c){ + return addBox(x, y, z, a, b, c, 1); + } ModelPart addBox(float x, float y, float z, float a, float b, float c, float _d){ bx=x; @@ -108,7 +122,7 @@ class ModelPart { System.out.println(p); System.out.println(); } - System.out.println("return LayerDefinition.create(modelData, 48, 48);"); + System.out.println("return LayerDefinition.create(modelData, "+wd+", "+hg+");"); System.out.println("}"); System.out.println(); @@ -131,14 +145,12 @@ public class Convert { } public void c (){ float scale = 0; - ModelPart body = new ModelPart(this, 16, 16, "body"); - body.addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, scale); - body.setPos(0.0F, 0.0F, 0.0F); - ModelPart leftLeg = new ModelPart(this, 0, 32, "leftLeg"); - leftLeg.addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale); - leftLeg.setPos(1.9F, 12.0F, 0.0F); - ModelPart rightLeg = new ModelPart(this, 0, 16, "rightLeg"); - rightLeg.addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale); - rightLeg.setPos(-1.9F, 12.0F, 0.0F); + ModelPart[] SHARDS = new ModelPart[4]; + SHARDS[0] = new ModelPart(16, 16, 2, 4, "SHARDS[0]").addBox(-5.0F, 1.0F, -3.0F, 2.0F, 8.0F, 2.0F); + SHARDS[1] = new ModelPart(16, 16, 2, 4, "SHARDS[1]").addBox(3.0F, -1.0F, -1.0F, 2.0F, 8.0F, 2.0F); + SHARDS[2] = new ModelPart(16, 16, 2, 4, "SHARDS[2]").addBox(-1.0F, 0.0F, -5.0F, 2.0F, 4.0F, 2.0F); + SHARDS[3] = new ModelPart(16, 16, 2, 4, "SHARDS[3]").addBox(0.0F, 3.0F, 4.0F, 2.0F, 6.0F, 2.0F); + ModelPart CORE = new ModelPart(16, 16, 0, 0, "CORE"); + CORE.addBox(-2.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F); } } diff --git a/src/main/java/ru/betterend/client/gui/EndStoneSmelterRecipeBookScreen.java b/src/main/java/ru/betterend/client/gui/EndStoneSmelterRecipeBookScreen.java index 1ed760f5..7e1fe5a2 100644 --- a/src/main/java/ru/betterend/client/gui/EndStoneSmelterRecipeBookScreen.java +++ b/src/main/java/ru/betterend/client/gui/EndStoneSmelterRecipeBookScreen.java @@ -79,7 +79,8 @@ public class EndStoneSmelterRecipeBookScreen extends BlastingRecipeBookComponent int slotX = this.fuelSlot.x + x; int slotY = this.fuelSlot.y + y; GuiComponent.fill(matrices, slotX, slotY, slotX + 16, slotY + 16, 822018048); - this.minecraft.getItemRenderer().renderAndDecorateItem(minecraft.player, this.getFuel().getDefaultInstance(), slotX, slotY); + //TODO: test k=0 + this.minecraft.getItemRenderer().renderAndDecorateItem(minecraft.player, this.getFuel().getDefaultInstance(), slotX, slotY,0); RenderSystem.depthFunc(516); GuiComponent.fill(matrices, slotX, slotY, slotX + 16, slotY + 16, 822083583); RenderSystem.depthFunc(515); diff --git a/src/main/java/ru/betterend/client/render/EndCrystalRenderer.java b/src/main/java/ru/betterend/client/render/EndCrystalRenderer.java index c75dfc93..7686b156 100644 --- a/src/main/java/ru/betterend/client/render/EndCrystalRenderer.java +++ b/src/main/java/ru/betterend/client/render/EndCrystalRenderer.java @@ -6,6 +6,11 @@ import com.mojang.math.Quaternion; import com.mojang.math.Vector3f; import net.minecraft.client.model.geom.ModelPart; +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.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.texture.OverlayTexture; @@ -41,14 +46,30 @@ public class EndCrystalRenderer { CORE.render(matrices, vertexConsumer, light, OverlayTexture.NO_OVERLAY); matrices.popPose(); } + + public static LayerDefinition getTexturedModelData() { + MeshDefinition modelData = new MeshDefinition(); + PartDefinition modelPartData = modelData.getRoot(); + modelPartData.addOrReplaceChild("FRAME", CubeListBuilder.create() + .addBox(-4.0f, -4.0f, -4.0f, 8.0f, 8.0f, 8.0f) + .texOffs(0, 0), + PartPose.ZERO); + + modelPartData.addOrReplaceChild("CORE", CubeListBuilder.create() + .addBox(-4.0f, -4.0f, -4.0f, 8.0f, 8.0f, 8.0f) + .texOffs(32, 0), + PartPose.ZERO); + + return LayerDefinition.create(modelData, 64, 32); + } static { END_CRYSTAL = RenderType.entityCutoutNoCull(CRYSTAL_TEXTURE); RenderType.entitySmoothCutout(CRYSTAL_BEAM_TEXTURE); SINE_45_DEGREES = (float) Math.sin(0.7853981633974483D); - FRAME = new ModelPart(64, 32, 0, 0); - FRAME.addBox(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F); - CORE = new ModelPart(64, 32, 32, 0); - CORE.addBox(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F); + + ModelPart root = getTexturedModelData().bakeRoot(); + FRAME = root.getChild("FRAME"); + CORE = root.getChild("CORE"); } } diff --git a/src/main/java/ru/betterend/client/render/EternalCrystalRenderer.java b/src/main/java/ru/betterend/client/render/EternalCrystalRenderer.java index f9100d9d..452ac2f5 100644 --- a/src/main/java/ru/betterend/client/render/EternalCrystalRenderer.java +++ b/src/main/java/ru/betterend/client/render/EternalCrystalRenderer.java @@ -5,6 +5,11 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Vector3f; import net.minecraft.client.model.geom.ModelPart; +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.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.texture.OverlayTexture; @@ -56,15 +61,47 @@ public class EternalCrystalRenderer { return ColorUtil.toFloatArray(ColorUtil.color(r, g, b)); } + + public static LayerDefinition getTexturedModelData() { + MeshDefinition modelData = new MeshDefinition(); + PartDefinition modelPartData = modelData.getRoot(); + modelPartData.addOrReplaceChild("SHARDS_0", CubeListBuilder.create() + .addBox(-5.0f, 1.0f, -3.0f, 2.0f, 8.0f, 2.0f) + .texOffs(2, 4), + PartPose.ZERO); + + modelPartData.addOrReplaceChild("SHARDS_1", CubeListBuilder.create() + .addBox(3.0f, -1.0f, -1.0f, 2.0f, 8.0f, 2.0f) + .texOffs(2, 4), + PartPose.ZERO); + + modelPartData.addOrReplaceChild("SHARDS_2", CubeListBuilder.create() + .addBox(-1.0f, 0.0f, -5.0f, 2.0f, 4.0f, 2.0f) + .texOffs(2, 4), + PartPose.ZERO); + + modelPartData.addOrReplaceChild("SHARDS_3", CubeListBuilder.create() + .addBox(0.0f, 3.0f, 4.0f, 2.0f, 6.0f, 2.0f) + .texOffs(2, 4), + PartPose.ZERO); + + modelPartData.addOrReplaceChild("CORE", CubeListBuilder.create() + .addBox(-2.0f, -2.0f, -2.0f, 4.0f, 12.0f, 4.0f) + .texOffs(0, 0), + PartPose.ZERO); + + return LayerDefinition.create(modelData, 16, 16); + } static { RENDER_LAYER = RenderType.beaconBeam(BetterEnd.makeID("textures/entity/eternal_crystal.png"), true); SHARDS = new ModelPart[4]; - SHARDS[0] = new ModelPart(16, 16, 2, 4).addBox(-5.0F, 1.0F, -3.0F, 2.0F, 8.0F, 2.0F); - SHARDS[1] = new ModelPart(16, 16, 2, 4).addBox(3.0F, -1.0F, -1.0F, 2.0F, 8.0F, 2.0F); - SHARDS[2] = new ModelPart(16, 16, 2, 4).addBox(-1.0F, 0.0F, -5.0F, 2.0F, 4.0F, 2.0F); - SHARDS[3] = new ModelPart(16, 16, 2, 4).addBox(0.0F, 3.0F, 4.0F, 2.0F, 6.0F, 2.0F); - CORE = new ModelPart(16, 16, 0, 0); - CORE.addBox(-2.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F); + + ModelPart root = getTexturedModelData().bakeRoot(); + SHARDS[0] = root.getChild("SHARDS_0"); + SHARDS[1] = root.getChild("SHARDS_1"); + SHARDS[2] = root.getChild("SHARDS_2"); + SHARDS[3] = root.getChild("SHARDS_3"); + CORE = root.getChild("CORE"); } } diff --git a/src/main/java/ru/betterend/client/render/PedestalItemRenderer.java b/src/main/java/ru/betterend/client/render/PedestalItemRenderer.java index 6320eab7..b5164f1b 100644 --- a/src/main/java/ru/betterend/client/render/PedestalItemRenderer.java +++ b/src/main/java/ru/betterend/client/render/PedestalItemRenderer.java @@ -46,7 +46,8 @@ public class PedestalItemRenderer implements Bloc matrices.pushPose(); Minecraft minecraft = Minecraft.getInstance(); - BakedModel model = minecraft.getItemRenderer().getModel(activeItem, world, null); + //TODO: check i=0 + BakedModel model = minecraft.getItemRenderer().getModel(activeItem, world, null, 0); Vector3f translate = model.getTransforms().ground.translation; PedestalBlock pedestal = (PedestalBlock) state.getBlock(); matrices.translate(translate.x(), translate.y(), translate.z()); diff --git a/src/main/java/ru/betterend/entity/model/CubozoaEntityModel.java b/src/main/java/ru/betterend/entity/model/CubozoaEntityModel.java index b01a5b9c..d0651499 100644 --- a/src/main/java/ru/betterend/entity/model/CubozoaEntityModel.java +++ b/src/main/java/ru/betterend/entity/model/CubozoaEntityModel.java @@ -106,7 +106,6 @@ public class CubozoaEntityModel extends BlockBenchModel { public CubozoaEntityModel(ModelPart modelPart) { super(RenderType::entityTranslucent); - tentacle = new ModelPart[TENTACLE_COUNT]; tentacle_center = new ModelPart[TENTACLE_COUNT];