diff --git a/src/main/java/ru/betterend/entity/EntityEndSlime.java b/src/main/java/ru/betterend/entity/EntityEndSlime.java index b1ad4440..77ee1ca0 100644 --- a/src/main/java/ru/betterend/entity/EntityEndSlime.java +++ b/src/main/java/ru/betterend/entity/EntityEndSlime.java @@ -82,6 +82,9 @@ public class EntityEndSlime extends SlimeEntity { else if (biome == EndBiomes.MEGALAKE || biome == EndBiomes.MEGALAKE_GROVE) { this.setLake(true); } + else if (biome == EndBiomes.AMBER_LAND) { + this.setAmber(true); + } this.calculateDimensions(); return data; } @@ -179,6 +182,14 @@ public class EntityEndSlime extends SlimeEntity { return this.dataTracker.get(VARIANT) == 2; } + protected void setAmber(boolean mossy) { + this.dataTracker.set(VARIANT, (byte) 3); + } + + public boolean isAmber() { + return this.dataTracker.get(VARIANT) == 3; + } + public static boolean canSpawn(EntityType type, ServerWorldAccess world, SpawnReason spawnReason, BlockPos pos, Random random) { return isPermanentBiome(world, pos) || (notManyEntities(world, pos, 32, 3) && isWaterNear(world, pos, 32, 8)); } diff --git a/src/main/java/ru/betterend/entity/model/EndSlimeEntityModel.java b/src/main/java/ru/betterend/entity/model/EndSlimeEntityModel.java index dfea3069..9e91859c 100644 --- a/src/main/java/ru/betterend/entity/model/EndSlimeEntityModel.java +++ b/src/main/java/ru/betterend/entity/model/EndSlimeEntityModel.java @@ -11,12 +11,13 @@ import ru.betterend.entity.EntityEndSlime; public class EndSlimeEntityModel extends CompositeEntityModel { private final ModelPart flower; + private final ModelPart crop; private final ModelPart innerCube; private final ModelPart rightEye; private final ModelPart leftEye; private final ModelPart mouth; - public EndSlimeEntityModel(boolean onlyShell, int type) { + public EndSlimeEntityModel(boolean onlyShell) { super(RenderLayer::getEntityCutout); this.innerCube = new ModelPart(this, 0, 16); @@ -24,6 +25,7 @@ public class EndSlimeEntityModel extends CompositeEnti this.leftEye = new ModelPart(this, 32, 4); this.mouth = new ModelPart(this, 32, 8); this.flower = new ModelPart(this); + this.crop = new ModelPart(this); if (onlyShell) { this.innerCube.setTextureOffset(0, 0); @@ -46,6 +48,18 @@ public class EndSlimeEntityModel extends CompositeEnti this.flower.addChild(petalRot); petalRot.addChild(petal); } + + for (int i = 0; i < 2; i++) { + ModelPart petalRot = new ModelPart(this); + petalRot.yaw = i * 90F + 45F; + + ModelPart petal = new ModelPart(this, 40, 0); + petal.setPivot(-4, 8, 0); + petal.addCuboid(0.0F, 0.0F, 0.0F, 8.0F, 8.0F, 0.0F, 0.0F); + + this.crop.addChild(petalRot); + petalRot.addChild(petal); + } } } @@ -55,6 +69,10 @@ public class EndSlimeEntityModel extends CompositeEnti public void renderFlower(MatrixStack matrices, VertexConsumer vertices, int light, int overlay) { flower.render(matrices, vertices, light, overlay); } + + public void renderCrop(MatrixStack matrices, VertexConsumer vertices, int light, int overlay) { + crop.render(matrices, vertices, light, overlay); + } @Override public Iterable getParts() { diff --git a/src/main/java/ru/betterend/entity/render/RendererEntityEndSlime.java b/src/main/java/ru/betterend/entity/render/RendererEntityEndSlime.java index 8cc8f7c3..86ef49de 100644 --- a/src/main/java/ru/betterend/entity/render/RendererEntityEndSlime.java +++ b/src/main/java/ru/betterend/entity/render/RendererEntityEndSlime.java @@ -18,11 +18,11 @@ import ru.betterend.entity.EntityEndSlime; import ru.betterend.entity.model.EndSlimeEntityModel; public class RendererEntityEndSlime extends MobEntityRenderer> { - private static final Identifier TEXTURE[] = new Identifier[3]; - private static final RenderLayer GLOW[] = new RenderLayer[3]; + private static final Identifier TEXTURE[] = new Identifier[4]; + private static final RenderLayer GLOW[] = new RenderLayer[4]; public RendererEntityEndSlime(EntityRenderDispatcher entityRenderDispatcher) { - super(entityRenderDispatcher, new EndSlimeEntityModel(false, 0), 0.25F); + super(entityRenderDispatcher, new EndSlimeEntityModel(false), 0.25F); this.addFeature(new OverlayFeatureRenderer(this)); this.addFeature(new EyesFeatureRenderer>(this) { @Override @@ -37,6 +37,9 @@ public class RendererEntityEndSlime extends MobEntityRenderer extends FeatureRenderer> { - private final EndSlimeEntityModel modelOrdinal = new EndSlimeEntityModel(true, 0); - private final EndSlimeEntityModel modelLake = new EndSlimeEntityModel(true, 1); + private final EndSlimeEntityModel modelOrdinal = new EndSlimeEntityModel(true); + private final EndSlimeEntityModel modelLake = new EndSlimeEntityModel(true); public OverlayFeatureRenderer(FeatureRendererContext> featureRendererContext) { super(featureRendererContext); @@ -91,8 +94,10 @@ public class RendererEntityEndSlime extends MobEntityRenderer