From 8ae202ac44c993378b177e10f622ce8d4e86770b Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 6 Dec 2020 18:05:32 +0300 Subject: [PATCH] Jello improvements --- .../entity/model/ModelEntityJello.java | 86 ++++++++++++++---- .../entity/render/RendererEntityJello.java | 9 ++ .../world/biome/BiomeFoggyMushroomland.java | 1 + .../betterend/world/biome/BiomeMegalake.java | 1 + .../world/biome/BiomeMegalakeGrove.java | 1 + .../betterend/materialmaps/entity/jello.json | 12 +++ .../betterend/textures/entity/jello.png | Bin 1132 -> 2502 bytes .../betterend/textures/entity/jello_glow.png | Bin 0 -> 2530 bytes 8 files changed, 94 insertions(+), 16 deletions(-) create mode 100644 src/main/resources/assets/betterend/materialmaps/entity/jello.json create mode 100644 src/main/resources/assets/betterend/textures/entity/jello_glow.png diff --git a/src/main/java/ru/betterend/entity/model/ModelEntityJello.java b/src/main/java/ru/betterend/entity/model/ModelEntityJello.java index 2bdee3d7..98718938 100644 --- a/src/main/java/ru/betterend/entity/model/ModelEntityJello.java +++ b/src/main/java/ru/betterend/entity/model/ModelEntityJello.java @@ -4,48 +4,102 @@ import net.minecraft.client.model.ModelPart; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.math.MathHelper; import ru.betterend.entity.BlockBenchModel; import ru.betterend.entity.EntityJello; public class ModelEntityJello extends BlockBenchModel { private final ModelPart model; - private final ModelPart tentacles; - private final ModelPart main_cube; + private final ModelPart main_cube_r1; + private final ModelPart tentacle_center_1; + private final ModelPart tentacle_1; + private final ModelPart tentacle_center_2; + private final ModelPart tentacle_2; + private final ModelPart tentacle_center_3; + private final ModelPart tentacle_3; + private final ModelPart tentacle_center_4; + private final ModelPart tentacle_4; + private float scaleY; + private float scaleXZ; public ModelEntityJello() { super(RenderLayer::getEntityTranslucent); textureWidth = 48; textureHeight = 48; - + model = new ModelPart(this); model.setPivot(0.0F, 24.0F, 0.0F); - model.setTextureOffset(16, 17).addCuboid(-4.0F, -7.0F, 4.5F, 8.0F, 7.0F, 0.0F, 0.0F); - model.setTextureOffset(16, 17).addCuboid(-4.0F, -7.0F, -4.5F, 8.0F, 7.0F, 0.0F, 0.0F); model.setTextureOffset(0, 17).addCuboid(-2.0F, -12.5F, -2.0F, 4.0F, 4.0F, 4.0F, 0.0F); - tentacles = new ModelPart(this); - tentacles.setPivot(0.0F, -6.0F, 0.0F); - model.addChild(tentacles); - setRotationAngle(tentacles, 0.0F, -1.5708F, 0.0F); - tentacles.setTextureOffset(16, 17).addCuboid(-4.0F, -1.0F, 4.5F, 8.0F, 7.0F, 0.0F, 0.0F); - tentacles.setTextureOffset(16, 17).addCuboid(-4.0F, -1.0F, -4.5F, 8.0F, 7.0F, 0.0F, 0.0F); + main_cube_r1 = new ModelPart(this); + main_cube_r1.setPivot(0.0F, -14.0F, 0.0F); + model.addChild(main_cube_r1); + setRotationAngle(main_cube_r1, 0.0F, 0.0F, -3.1416F); + main_cube_r1.setTextureOffset(0, 0).addCuboid(-5.0F, -7.0F, -5.0F, 10.0F, 7.0F, 10.0F, 0.0F); - main_cube = new ModelPart(this); - main_cube.setPivot(0.0F, -14.0F, 0.0F); - model.addChild(main_cube); - setRotationAngle(main_cube, 0.0F, 0.0F, -3.1416F); - main_cube.setTextureOffset(0, 0).addCuboid(-5.0F, -7.0F, -5.0F, 10.0F, 7.0F, 10.0F, 0.0F); + tentacle_center_1 = new ModelPart(this); + tentacle_center_1.setPivot(0.0F, 0.0F, 0.0F); + model.addChild(tentacle_center_1); + + + tentacle_1 = new ModelPart(this); + tentacle_1.setPivot(0.0F, -7.0F, 4.5F); + tentacle_center_1.addChild(tentacle_1); + tentacle_1.setTextureOffset(16, 17).addCuboid(-4.0F, 0.0F, 0.0F, 8.0F, 7.0F, 0.0F, 0.0F); + + tentacle_center_2 = new ModelPart(this); + tentacle_center_2.setPivot(0.0F, 0.0F, 0.0F); + model.addChild(tentacle_center_2); + setRotationAngle(tentacle_center_2, 0.0F, -1.5708F, 0.0F); + + + tentacle_2 = new ModelPart(this); + tentacle_2.setPivot(0.0F, -7.0F, 4.5F); + tentacle_center_2.addChild(tentacle_2); + tentacle_2.setTextureOffset(16, 17).addCuboid(-4.0F, 0.0F, 0.0F, 8.0F, 7.0F, 0.0F, 0.0F); + + tentacle_center_3 = new ModelPart(this); + tentacle_center_3.setPivot(0.0F, 0.0F, 0.0F); + model.addChild(tentacle_center_3); + setRotationAngle(tentacle_center_3, 0.0F, 3.1416F, 0.0F); + + + tentacle_3 = new ModelPart(this); + tentacle_3.setPivot(0.0F, -7.0F, 4.5F); + tentacle_center_3.addChild(tentacle_3); + tentacle_3.setTextureOffset(16, 17).addCuboid(-4.0F, 0.0F, 0.0F, 8.0F, 7.0F, 0.0F, 0.0F); + + tentacle_center_4 = new ModelPart(this); + tentacle_center_4.setPivot(0.0F, 0.0F, 0.0F); + model.addChild(tentacle_center_4); + setRotationAngle(tentacle_center_4, 0.0F, 1.5708F, 0.0F); + + + tentacle_4 = new ModelPart(this); + tentacle_4.setPivot(0.0F, -7.0F, 4.5F); + tentacle_center_4.addChild(tentacle_4); + tentacle_4.setTextureOffset(16, 17).addCuboid(-4.0F, 0.0F, 0.0F, 8.0F, 7.0F, 0.0F, 0.0F); } @Override public void setAngles(EntityJello entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) { + float sin = MathHelper.sin(animationProgress * 0.13F); + scaleY = sin * 0.1F + 0.9F; + scaleXZ = MathHelper.sin(animationProgress * 0.13F + 3.14F) * 0.1F + 0.9F; + tentacle_1.pitch = sin * 0.15F; + tentacle_2.pitch = sin * 0.15F; + tentacle_3.pitch = sin * 0.15F; + tentacle_4.pitch = sin * 0.15F; } @Override public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, float red, float green, float blue, float alpha) { + matrices.push(); + matrices.scale(scaleXZ, scaleY, scaleXZ); model.render(matrices, vertices, light, overlay); + matrices.pop(); } } diff --git a/src/main/java/ru/betterend/entity/render/RendererEntityJello.java b/src/main/java/ru/betterend/entity/render/RendererEntityJello.java index 68e15ead..b1911d21 100644 --- a/src/main/java/ru/betterend/entity/render/RendererEntityJello.java +++ b/src/main/java/ru/betterend/entity/render/RendererEntityJello.java @@ -1,7 +1,9 @@ package ru.betterend.entity.render; +import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.entity.EntityRenderDispatcher; import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.client.render.entity.feature.EyesFeatureRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Identifier; import ru.betterend.BetterEnd; @@ -10,9 +12,16 @@ import ru.betterend.entity.model.ModelEntityJello; public class RendererEntityJello extends MobEntityRenderer { private static final Identifier TEXTURE = BetterEnd.makeID("textures/entity/jello.png"); + private static final RenderLayer GLOW = RenderLayer.getEyes(BetterEnd.makeID("textures/entity/jello_glow.png")); public RendererEntityJello(EntityRenderDispatcher entityRenderDispatcher) { super(entityRenderDispatcher, new ModelEntityJello(), 0.5f); + this.addFeature(new EyesFeatureRenderer(this) { + @Override + public RenderLayer getEyesTexture() { + return GLOW; + } + }); } @Override diff --git a/src/main/java/ru/betterend/world/biome/BiomeFoggyMushroomland.java b/src/main/java/ru/betterend/world/biome/BiomeFoggyMushroomland.java index a2354df9..1a8d2386 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeFoggyMushroomland.java +++ b/src/main/java/ru/betterend/world/biome/BiomeFoggyMushroomland.java @@ -36,6 +36,7 @@ public class BiomeFoggyMushroomland extends EndBiome { .addStructureFeature(ConfiguredStructureFeatures.END_CITY) .addMobSpawn(EndEntities.DRAGONFLY, 80, 2, 5) .addMobSpawn(EndEntities.END_FISH, 20, 2, 5) + .addMobSpawn(EndEntities.JELLO, 10, 3, 8) .addMobSpawn(EndEntities.END_SLIME, 10, 1, 2) .addMobSpawn(EntityType.ENDERMAN, 10, 1, 2)); } diff --git a/src/main/java/ru/betterend/world/biome/BiomeMegalake.java b/src/main/java/ru/betterend/world/biome/BiomeMegalake.java index 5cb2b1f7..2ad59e09 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeMegalake.java +++ b/src/main/java/ru/betterend/world/biome/BiomeMegalake.java @@ -29,6 +29,7 @@ public class BiomeMegalake extends EndBiome { .addFeature(EndFeatures.MENGER_SPONGE) .addMobSpawn(EndEntities.DRAGONFLY, 50, 1, 3) .addMobSpawn(EndEntities.END_FISH, 50, 3, 8) + .addMobSpawn(EndEntities.JELLO, 50, 3, 8) .addMobSpawn(EntityType.ENDERMAN, 10, 1, 2)); } } diff --git a/src/main/java/ru/betterend/world/biome/BiomeMegalakeGrove.java b/src/main/java/ru/betterend/world/biome/BiomeMegalakeGrove.java index c258d748..25b74dde 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeMegalakeGrove.java +++ b/src/main/java/ru/betterend/world/biome/BiomeMegalakeGrove.java @@ -32,6 +32,7 @@ public class BiomeMegalakeGrove extends EndBiome { .addFeature(EndFeatures.MENGER_SPONGE) .addMobSpawn(EndEntities.DRAGONFLY, 20, 1, 3) .addMobSpawn(EndEntities.END_FISH, 20, 3, 8) + .addMobSpawn(EndEntities.JELLO, 50, 3, 8) .addMobSpawn(EntityType.ENDERMAN, 10, 1, 2)); } } diff --git a/src/main/resources/assets/betterend/materialmaps/entity/jello.json b/src/main/resources/assets/betterend/materialmaps/entity/jello.json new file mode 100644 index 00000000..b63df8a1 --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/entity/jello.json @@ -0,0 +1,12 @@ +{ + "map": [ + { + "predicate": { + "materialPredicate": { + "renderLayerName": "eyes" + } + }, + "material": "canvas:emissive_transform" + } + ] +} diff --git a/src/main/resources/assets/betterend/textures/entity/jello.png b/src/main/resources/assets/betterend/textures/entity/jello.png index f38db9dababdab4866478f43d8994c41b762fbd0..83871b42bd2b5792cdb0317683d8d76313910e78 100644 GIT binary patch literal 2502 zcmb_e3se+U7#=ZSlxR|tCN>Ufpv=x=cXoFsSESw5#au<)qh_KGGk2Fkc4wIxb^-H& zWQHkXYDr+_>1mif>}8sepjI4ED>FT2n1>9Nh_X|ZRCjsoG1KyRnsa96-aFs@|L_0* z@7_DbsnaG8j2s?`AjrTJhb;}h$I&}9!o~pP5LHcfx zTywNJ&Z(Rrdv&}hX8>KE*ALMMGCnEK&kKuyhGqbd_Y2@@Q+I?Zrni`N@=p=$O345K?CS4FF?d_N%4fGX!I0hwBxlm$DwsAaPQVcJn&*v zU10Y6yOTfJUvZPWp{z_`dyXvA;nv(E#z)94z21(|5Aimw zxv*^UxZaL=o*7@Z+Z|&%_FA_bi!EBZxqetZsT?@Ju9`kuyw*N(;|fc=6nOcJ9dOWMICA_+H=dH z`}einIr!}eUwgx>d&Z90TO%Zm&7!Oaf6Li;1Prdt5A+*6Dt7|)$6ATD$DQ8A#t*Az zru)C?y(8`6jt^q8N{8?M5MO+$PfYVm32&Xse=RBLF59H#i6=g;TNd;5(ZcljCrYND z2_*i6RUTflZPLB%Qv$xb2aPJIjGj03=d9SA`rWQ!ODc|07fN0(v}|s^ur;UQ!N?yP z=ckreZd%B*lGXm$x$O(iEtxnES}0u|cX4}R)xyYxtu>$Imqy3^`D#w2$>7v$?r-K?}3v$5m&R z)vb&vn?-CmMtpbp(ic(9<)hCcA5Dw)6qm*hs+e%pG;%pxUor4}`I!4$4U?N&=b!S{ zjx20qW%**6!`}4J#_t#W+7@AJy7b~R14ez%?Ong@9ENu X+t3qSOkf}U(Lz$}(`-BLTe#vcWRrV# delta 1112 zcmV-e1gHDP6YL0(BYy-lNklsc^eK9%M={y`bR33rd^gMB)Lg? zYn#gN*PVKDn?G&OxKX(G<(}X9{m!|+&+pGUO8<&8!4>U+SuDdF($KZK0<%y-wc=vCQ&-=3bc>&EX|}%G79IkapHIUG=$KlZ ztXpv?ItT(G2maA zf*QPqiJ(8R8-KZM1~WH{Fw8vL>D@ip*Si;5w}!uqwax;_&XaQjfU+>)FEPOMYS)dH`hwjD$cl99_31RrN6P*E|NXihR{%KxrVmdx&7jg_iPrw^SzZOOB zKp5Q>6EA-Kn!Nz>F)AQLGc-F!NpCD0ST0tuR9!<<4{-f=~W-bGpoGH4l&P*gbIc$a_gnfAk*Scxv$mzpe7W(YDv_^7XghYIyA3 zo^%laIXf8Ccxvp=YwWy`Crf1n$_4zqG+#Gwm)-gCQ>_6;9{M-LZ>LwFbC!^2?-| z$-^5DVA4WA>K)Fbd2d20_?WzRt52Gz0bj2Kfdh#qLBSMGs!HE-19Ys3+ts|a z2b%RnBY;Mym3&I=v~1*cu68v~#@p$MJK@xJ_So|Og|@S)owg2uozZUeEhhs`22m6v z;FOSJ0F{?J8Bh+P;s#Cz6a%Qd+{u7)2o*PQGN2eh<>gKWltZYvfs+Bn04gtcGN2qn e#SQ-V8Tbd}vvXcboAQqU00000Inlq0(cfR}o|M&mj zy>}L*r%f0TGAu-)Pz*>(PRs;P%y$JT!Tn^e@D+FjyOXC%3Pt}g-_=J^RsDoQ(Qm0e zD_hPsO{7`TrDizM%&QAsZh%%O#>N%88P>tekeRpI1q0mL&|pgA92X0XEu?_~7cVnVq01>qbfE$6vP*-uuN#G-E{N+79Lp=u!ym>eaotZek#}{}r zz&2TS(L&fY?$_l67^jlRNA(5NYPffKz_)J1>^jeH%di_7|v4hFQ zI3L)KZ_4>pK_}ZKP_Lq%Nim6^+0$~`p)MiN4C@oP0cL%b?7$6G^ckatqzT7g%&5D;Awt*;>)^u_Bm{Jz0D@(DBj0Y$F;q z8ENnP4Y{zaPX(5~tMf*OY73QGxtWT+g5_PAHH$r3b6Tm&JGSIKvtz=X@>d*qU&piB zRex@1ZVz0L*Pb?KVb!ka)XWc&*57{qqV=OctM}KgZ5vgytm5b5(vT@Rs+ysWq;p01 zhUW3HW2wcvnJ1F;Ayw(bQ+ae;rSaQ7QC7U{;u^2gc=c3$l{jyUB5KUQqsK_)xYCQG zHk@}(95iC%S=$+V`iWzQqK^(&F0Xm?-Il85&t)!(TC57pbI->vEqgkrDh=v?oU}c< zn;5cvdRPFnDV!PKe1`aXh^BFOpm5^R39i=_e^@3DM)dBd~idV zdC0kCk^Lrrx#mRcpt{vn2bwNCHhaw5!*k1vUk`io&HXJ$KCe6!^!aBaUwp1|hC5-{ zv`7AKUVV{lSUQ;>{lO=rYBNsF_0FAj@u|ju=z@}uuN^2c4caX{9MGuL?_7PU#TmcJ zThzHBd-leu^P}44MnrWqUR!y%R+BnA&b%yg2IbWBwz4pf?Yu)%0$*H?moNsJ?@dA0N{$Pm9 zTKZBBSN>h@L3Q{yM+`rVShc+2@7!0dhr;_`-@0{JU2DhT;rV%WeNSEOEcvo-QaQ!O zUZ2Lk%s$?_WnXmT-n@wL-`nZXhVA~+UXdv5n z*0bejAHt81@XRz-w7<1zRc5GsIwdgd#;b6^cIEn|?+$6GetqKi!6_Nr_MH7>PM`Rx zMN9W?i;H{Qo3Q12+XAY(9d(~FPBw-wk