From 179d2a003563c571ca43c6910167460636493522 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Wed, 13 Jan 2021 04:09:55 +0300 Subject: [PATCH] Amber slimes --- .../ru/betterend/entity/EntityEndSlime.java | 11 ++++++++++ .../entity/model/EndSlimeEntityModel.java | 20 +++++++++++++++++- .../entity/render/RendererEntityEndSlime.java | 15 ++++++++----- .../betterend/world/biome/BiomeAmberLand.java | 4 +++- .../entity/end_slime/end_slime_amber.png | Bin 0 -> 4447 bytes .../entity/end_slime/end_slime_amber_glow.png | Bin 0 -> 2524 bytes 6 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 src/main/resources/assets/betterend/textures/entity/end_slime/end_slime_amber.png create mode 100644 src/main/resources/assets/betterend/textures/entity/end_slime/end_slime_amber_glow.png 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 MobEntityRenderer2J5uso>i(`)*sFWcQET%m&z}6e%&2s@GSZm_=;QBZp z8Y3=>L1rRXIUwxB6o`Ng3h4+jJDMY)i0zSIcq!0W^%{*te1Qm~?2%3?LBs}cD#C@! z2NAZ`1QY{ngF_I>)>s0DjI&vRz+tdNG=_-A;!zkZ1w)|V$%x4h5>n$c!zg~P?vq;3 zlRYv*DCAMlXpu-{Ey7!K`Qd0RnM_7waA+J31tCy^SdNe`MsWld-xyp$0fW!t30YhY zLd8fA<;Do@k&vffLtyi!XgPw(G(ibNi|ITx)*7P<=?jp_n8NX5_|ad)nG7@-4YEOw zPyk`EQ&?UESI8AaaQ}jOYWfcXP-?xsr!@Z57dCrJLLhY83WYJ5kUvEWXt6vH?FS0D zF?us9UPmZmBk^tD-z!Ba4puTXC;lNA;_1;s+uMPczYjExFvOZWp6>KZ0pNdK>3 zCW8{j<+JHf%q%uN97OXt;Yh?(CMho5Xf7WThP=an@xt4i;=vIJ=^O^=;cAbB!nS6y zn3PakCIQ1>(owcV92rF<+t{E;IJynWmdwP55^!NyCL#2jy(^ayqbjb-{%fBzxeSQo zpQ^-A8yh?mM?i(r!$>GB$p()icvhjk@evBlcQ)B z;!9gl=nPf6+anpOI)hB)k z!SZ>imJ)qddI-i-F=r0}eV|p^f*#nr-s1gf z*(HXH)pFHcwXOUPg@5O|#;Gv_xhMaJ>l+VWLGV``i1TyX>ByR%qn}5;s#SSm+eF2@ zdB)pI`gVRWufm4Q7}=!Ww+YFlSnUF!`Qu0T*unf1;NHe)301C^lUx%JFb1m}P<+ho zC`jsh>s)R}9Ix{*Ikwvf9ch<*>FV^J%N3%RvD&lK6BtI|nI!SqP7S#qJmkKf-opj; zK;OC?;yHk-%vK9o@%+@{)0d96`(9jhe$y5BZlj{@vu$i@3bg2;_QT5!S9LwTo_4N& z%EZ0*y^|Uerys+d^P<>y3H)epy@nhPM63)BdL21oW?SINpE=f9lC#4xRr|QoB4Fn1 z?2S5XRM*?X{W>+iG>WD3{m3=-vRk>Y|WuRe~nzsvbZKcfL^r!rM!!yBWm+e?iaAcW& zP{SDQIp5NjXJ@aT@8g7#jMZXYy=SCIi~D!yB4l^ks^PF z5Zg7xtJi#oAxuAs*%{S!Bfe{SQlh#0!87O^OXURMolqTQS7qOA*BKl=k#QMR1jQy0 z3qEIS1HsLKsJmtovNQ^TNv<)Q4O~e)vn)lS_GoFd)G&@wbV=VXm}>WCJGxQfa`vH> zEbm@T>p+gVN6uJV$9l=j4;cZ5&5sNZvlWlKE}|FD%+5_L^6S1V@gHCHV7Ei>_Yw>NL{5;LdmoI`9j=BwH#+JR>GNaZ}FwE5-?72zEo+AXONUJe>5^#rIyZWe2%xO%*fKl4Lt51O^@#P(MBakRR(Hbn%sjD^rn$uO z58Nw*qdCpmJxR3n}qRoeI}=R_hIwR474EO6Y?r&8UZ_vZWY zX+0)qca6mipEEcO?=t&QyX)Q|qnid|`J+Jf3>z0W?H_fzJL3&Yo!-Pzwo@hLYF?kZ_JSa^T-fua2=X9wj{SD$lMrEW}v`$@!% zU2Yo8PPNYJ8bDs?9pmS{m!D7>||456h?RTaf>$bLP8*KJ{H*7mX(rfSAenWz+r~Y{1aIW77lJR-=v% z6PTphrJq;nUzWm(p5NXZt#d9ec>iKrjg!owqIjogt#V#mN8CrHk1{X=N51w{EP)oh zeytkm$(H4pj{MdT1xPGbhqGj?nEM@_<}VwkQ~Jwu^T+d28Licye%1=QuG@o8Tyc`` zotlz9p8Z*IYe-Wrvi{`Wb?8gkSb295t6s7!>>COj`oh z-e|PYIeZ0kaHLF}EguA^i6$>8T|rMgJ#>@@@WtDP#fF++nYICKosFPdT6pj?W@5p6 zoy=^w`Q}HUM;dqJdBjBf9ea42LN#yPr0X+M7N;URI^lo%PKr6Y_FCO%|ACpL1wfhW z)eC)tL(@r5I$tHgYt;~ysE3fvdsq2agiO1Bef_PD4y#>?z8AI09kpoZ?Nxg^FFPn? z==4KrRS)gUFPwXlq$P>-Jw=P$=Dz&>Nf-Bd@8uq+cC}hiSBJrF)dt7bYdAWoId-&K zxz(1sFBeVZJowd~OfTUn{N+@mW0@8U;>}6@@SH<1N72uVXptrSfZh8E{TCujctm1% zOIg6I^o;TA3#nz&!J0+w+;Zi^d$M#KQY4&_;jqfL2bAGSn_~0 zT&8%?cvbp3vEN-%;|u%l=I%HA7frkSp1u7oDbiXrERVD{3s_ zTy?dZ1k`uVDgLRothJ*_e+3*7FS_B+>Ey%*tSr(7hP4cXDiSJ{o0alNy*JH)@skgs z>gBS!Z?L(rtcv>JZ#EK3Me7}9D|;YP%NU{2eCzAb-$H&W>h+5eTB>1J^^$MA z%VvtbrW9|hb5fgcPntvldnRuEuyPYneqBTI@3-d`X%j#xA<}j3_m($Qe}QM~xG}es z#|H#gmCQd{Rpeo-=CgJVp7aou6QzNH5U(;&G!zUgbkqUI?b2YZO`|Xrhp6)%@MO&) zRO&8<@vLD6mb~}m@C_x|qfhe)C%0!W{lHG5?$t$cZNU9))AR6>>1{oMTZw$cOl_ssJpW#7Y5C z6_tQ^6Vu7%zc>J?b-R;3ZpbARO1e&-$UkPYtYtcw_ zp3F0mweWSl94IWeM)zitojWK`Y(6BvOZIDudmk5)MFCnsQL z8pHaaZjlpwu_P1+)kSc#2P0{W0A>CQ6sU${ROVm7983E|ImCdNg%IQCQ7P<)p=2iM zJTWNBz%gKFjB6w0GGUf4bUI)Vwn-2;+6Tl(;v9vLUNZ=QB}s&_VJt#2oYiaf zSvVg>^zV0yY=u@_ZGWH6Igtf6{`6|bDIe!0ZHUc=bBNDM+7TPe+7ZG>Q9gpT;)J&^ zCxFd#Spbh36TIH4#)<C8CH|K17@{4^BkO*7H*J_Tk@RP9|`cl=sy&{&$}Y})CeQ< zll>rfx1ulfX8aYV@}JpTNVAt9a0c;uS#XG$0tag7qm^Wz)FVL? z6ir(C_4pszC(N?}ChX_I35vr1J)T=r=gs2z+w=9m#)E2SXP?y2zpF65cHKD(${C*m zhqpFNzBRy2^1Z`{L8@f%R;holaj;G|;B29DvL|}#yM}||uH3txKYXHS^u&=*e%ZKa z_l&d$T&}z7vL=ihIH!GT^SR;C)W?FcG^*LZXXpA2lRiKCwrjlbgTC%f+ZyJ`oZ-ht z*HiApZA%Yz?wt9}SM}!&)6#csy7taoV(Xfe^vKsszcXh-qn21sZXNZ>Q`Vm8uEDc0 z@711bpYGeawJU{NA8FsWZ}G(H*)L{YX?t2aw{XPZrKh_$>9^^l`n6hnht@XroNOF+ zX4ub-Z_Hag{dZNDC6#SjyZ@Y?u1=p~7`rImELY$eqv@*4X=$Cey+3GL?bX)u9~VvB z*syNPRAtYqU!N^MKkda|wjWy32p_q>5ZAL0EnJzo+0*i2jbt42)vmHRzb!eykJyy~ zuc*05wGUjAlj}=;^KRXiCir4Uot}9c^FB$7QAL(?PhIn~7vK$@9oB(*b%$Yb?ZdSr ztA-D%Bb^_l$OWA%-mWn0ttsg}|DlnV+m@v)J^fPe-p|GzO+RRa7o2@J{j+vsW^d_| z*of@=u0HmgU`XrC|9D8(-uj09KW*wz&?~EYdM(h#)r(^*eEO38vD z@%77wN5+4{lx?_F{i?RyFw`|cyRE-%