From 0c5b2bcf5758b7410d5e934c61f9d0f57c671192 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 13 Oct 2022 22:55:19 +0200 Subject: [PATCH] some HIMARS rendering stuff, cargo shell impact fix --- .../java/com/hbm/entity/EntityMappings.java | 1 + .../entity/projectile/EntityThrowableNT.java | 3 ++ .../com/hbm/items/weapon/ItemAmmoHIMARS.java | 10 ++--- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../projectile/RenderArtilleryRocket.java | 39 ++++++++++++++++++ .../hbm/render/item/ItemRenderLibrary.java | 16 +++++++ .../render/tileentity/RenderTurretHIMARS.java | 7 ++-- .../hbm/textures/models/turrets/himars.png | Bin 3158 -> 4074 bytes 8 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/hbm/render/entity/projectile/RenderArtilleryRocket.java diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index aa9e742e4..94e046a6c 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -203,6 +203,7 @@ public class EntityMappings { addEntity(EntityMinecartSemtex.class, "entity_ntm_cart_semtex", 250, false); addEntity(EntityNukeTorex.class, "entity_effect_torex", 250, false); addEntity(EntityArtilleryShell.class, "entity_artillery_shell", 1000); + addEntity(EntityArtilleryRocket.class, "entity_himars", 1000); addEntity(EntitySiegeTunneler.class, "entity_meme_tunneler", 1000); addEntity(EntitySPV.class, "entity_self_propelled_vehicle_mark_1", 1000); addEntity(EntityCog.class, "entity_stray_cog", 1000); diff --git a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java index f14d2be21..608f999d5 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java @@ -259,6 +259,9 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { this.stuckBlockZ = z; this.stuckBlock = worldObj.getBlock(x, y, z); this.inGround = true; + this.motionX = 0; + this.motionY = 0; + this.motionZ = 0; } public double getGravityVelocity() { diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java index 117bf15f6..4ef729c71 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java @@ -44,14 +44,12 @@ public class ItemAmmoHIMARS extends Item { public abstract class HIMARSRocket { - ResourceLocation texture; - int amount; - int modelType; /* 0 = sixfold/standard ; 1 = single */ - - public HIMARSRocket() { } + public final ResourceLocation texture; + public final int amount; + public final int modelType; /* 0 = sixfold/standard ; 1 = single */ public HIMARSRocket(String name, int type, int amount) { - this.texture = new ResourceLocation(RefStrings.MODID + ":textures/models/projectiles/" + name); + this.texture = new ResourceLocation(RefStrings.MODID + ":textures/models/projectiles/" + name + ".png"); this.amount = amount; this.modelType = type; } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 598a47103..3bd5870e2 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -561,6 +561,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityRBMKDebris.class, new RenderRBMKDebris()); RenderingRegistry.registerEntityRenderingHandler(EntityZirnoxDebris.class, new RenderZirnoxDebris()); RenderingRegistry.registerEntityRenderingHandler(EntityArtilleryShell.class, new RenderArtilleryShell()); + RenderingRegistry.registerEntityRenderingHandler(EntityArtilleryRocket.class, new RenderArtilleryRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityCog.class, new RenderCog()); RenderingRegistry.registerEntityRenderingHandler(EntitySawblade.class, new RenderSawblade()); RenderingRegistry.registerEntityRenderingHandler(EntityChemical.class, new RenderChemical()); diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderArtilleryRocket.java b/src/main/java/com/hbm/render/entity/projectile/RenderArtilleryRocket.java new file mode 100644 index 000000000..229a71e46 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/projectile/RenderArtilleryRocket.java @@ -0,0 +1,39 @@ +package com.hbm.render.entity.projectile; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.ItemAmmoHIMARS; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderArtilleryRocket extends Render { + + @Override + public void doRender(Entity shell, double x, double y, double z, float f0, float f1) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + GL11.glRotatef(shell.prevRotationYaw + (shell.rotationYaw - shell.prevRotationYaw) * f1 - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(shell.prevRotationPitch + (shell.rotationPitch - shell.prevRotationPitch) * f1 - 90, 0.0F, 0.0F, 1.0F); + + this.bindEntityTexture(shell); + + boolean fog = GL11.glIsEnabled(GL11.GL_FOG); + + if(fog) GL11.glDisable(GL11.GL_FOG); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.turret_himars.renderPart("RocketStandard"); + GL11.glShadeModel(GL11.GL_FLAT); + if(fog) GL11.glEnable(GL11.GL_FOG); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ItemAmmoHIMARS.itemTypes[0].texture; + } +} diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 2d6325b0c..15378e952 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -7,6 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockBobble.BobbleType; import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemAmmoHIMARS; +import com.hbm.items.weapon.ItemAmmoHIMARS.HIMARSRocket; import com.hbm.main.ResourceManager; import com.hbm.render.tileentity.RenderBobble; import com.hbm.render.tileentity.RenderDemonLamp; @@ -1356,6 +1358,20 @@ public class ItemRenderLibrary { ResourceManager.sawmill.renderPart("Blade"); }}); + renderers.put(ModItems.ammo_himars, new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, 2.5, 0); + GL11.glScaled(4, 4, 4); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glRotated(-45, 0, 1, 0); + GL11.glRotated(90, 1, 0, 0); + HIMARSRocket type = ItemAmmoHIMARS.itemTypes[item.getItemDamage()]; + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(type.texture); ResourceManager.turret_himars.renderPart(type.modelType == 0 ? "RocketStandard" : "RocketSingle"); + GL11.glShadeModel(GL11.GL_FLAT); + }}); + //hi there! it seems you are trying to register a new item renderer, most likely for a tile entity. //please refer to the comment at the start of the file on how to do this without adding to this gigantic pile of feces. } diff --git a/src/main/java/com/hbm/render/tileentity/RenderTurretHIMARS.java b/src/main/java/com/hbm/render/tileentity/RenderTurretHIMARS.java index 0e4de4cd2..e5215764c 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderTurretHIMARS.java +++ b/src/main/java/com/hbm/render/tileentity/RenderTurretHIMARS.java @@ -38,16 +38,15 @@ public class RenderTurretHIMARS extends TileEntitySpecialRenderer implements IIt ResourceManager.turret_himars.renderPart("Carriage"); GL11.glTranslated(0, 2.25, 2); - GL11.glRotated(pitch + 15, 1, 0, 0); + GL11.glRotated(pitch, 1, 0, 0); GL11.glTranslated(0, -2.25, -2); ResourceManager.turret_himars.renderPart("Launcher"); - //GL11.glTranslated(0, 0, -5 + (System.currentTimeMillis() / 1000D) % 5D); ResourceManager.turret_himars.renderPart("Crane"); bindTexture(ResourceManager.himars_standard_tex); ResourceManager.turret_himars.renderPart("TubeStandard"); - ResourceManager.turret_himars.renderPart("CapStandard1"); + /*ResourceManager.turret_himars.renderPart("CapStandard1"); ResourceManager.turret_himars.renderPart("CapStandard2"); - ResourceManager.turret_himars.renderPart("CapStandard4"); + ResourceManager.turret_himars.renderPart("CapStandard4");*/ GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); diff --git a/src/main/resources/assets/hbm/textures/models/turrets/himars.png b/src/main/resources/assets/hbm/textures/models/turrets/himars.png index 1d468f35540a38e9a393e5ff2ff55587f5993adc..55a0416c3d574d005ece7c23bee3d71f58eb1dfa 100644 GIT binary patch literal 4074 zcmXw+c|276|Hlv6vdhlcrb2eIZ&^lCwz-HfNXkxwu}e~jaHX_d9=_^Ld=}UO(scd4A4$ZfkAM!79QE004)@4ai>rK<7gn2e2^F z&gSQ2BWM?fP!kJ#7TOWZ;*|mbT%{HeWBbSgQejUTXhe8$DUV1j%7cB>H2@WqC$5|V zty!QVF%|{*^FW3RHxiU5n1-H-5`-!~GToAdr;)sLgr_~K-9Rh@tei?+?_D1_Jq@qA zRxP&GQ=d;LA~tT+ZfvhHCkL5N!8DNd-bGPI^&32NDjrztj7jOCB{Vg%!cPGh)~;d( z9{Vn0*!;yJ?kzd!UjQ_P--^?!eH{C(r0-h-FB3|w#UK%HVAy#LFI*nDLe#ZttVZ?i z2&QO5An?C-@)6R}4VM>IR!+ludcgsrHZ$MH@(M%oo40-+0v;_X_c~MM#5!_qUUNMV zL}hY?iB8Q3HaM0%NoPL_>6Am@7Cjd~d89VQ#g@$1U@#ARo>Y~jo&x}d%4`P^*N*;p z+zD}pqLIk}0EF^vdMn8OXY;q7$Gh!^WeZxEqYe4GI_|BtbRr#Kn{Ry`WYdf3l^T|a zr-HVH0i2%hW(lISi*xQk7X~~w)Rn^Z9?$WDql;BTnH16M$q|cP>+WaAnGnc+<{3z1 z!?D2|S-MT_+QHz}k}!Ma#kt~izz^b6BVO2jEEl7(_{n~RXnZl|RE>8#*bu#>o&9Fh z$!aF9+*;uA_X*(y>FD@-wtP$bzjN}OMzuKKen7md+QdL**xsx7D&VBA;%QF^RLFI9 z0Qc+yGb~~!0lYfqn4!3un|S7i%ziWR`w<<`Uv-ry+36Njc$*cHLT(S6K6ei0e4S|b4nOSSgwHe84yDFY-P3h;lram2U?Y#*< zPE5DcmJtAwj4m=S+!kis6$N@1rO zdNf2aL8)sz&}Drwf_9r`$Loay0FNu8oFekmntibVVEOXA`a$$81DOs`NjH7UAE1`Y z1w7_(wF8UASZxvPI!UKi2lc5^yAj&Yjg+ILLAV081&g$akl)ewG%=;6&NlbX8H z8h!V9YI5un|h`@N6C&qk9-K%fH+V8JlGW4U8nW4UeSC( zA*j;K+8D6_hgK<|dwqY^958$j2~Gg)R-~ zFp};gaGAwqk`S+tsH+Ez;!QwaK*XE|oXg;!P37mzztPARuzY%YFn)G{XQHo< z4(95L>+9=7YDP5*B6~VIYVIO2{@oO(>yQYuRmD)=-1@1#>c>MpeSJ&VOeL92 zE-bc1h=t!t1?_!)tA$r#CuZ9i`i2TU(~mi@B+48vE-ns^=j7z16aMMI(4d7Jx?Owp zs+Unz(1%wEr%9P%7;}$;3`uvP!CLM0Cz=r*>E7c->Eim4B`2oVNR_MePf2Klj&q;5s|+oY1W;M7ogvDNpR7wuEp*cn9FGkSUqSoaqB6jPF^sTP=hVq9X}ID5Is z67QETJtY=bmxzKZXP~fC;qk*IbimE#K;;Y!T>?{&u{ZMi+(8I`GEvvZPB@a^{y`_& zzqVPB8PJnOL#u0@%L8I`HX_MCt$t9{#WQ`?MJBw|N=Lj*GFEW3!9>m16O6jm6^je0 zE4eQ(m0q%twX$<=oOwO8*T*aoaQsep*%lU6N)^rwi8qr-G1Cf^!j(ki)=tk(W0Y2Q za|c&cbuvux#8;ppsTsrw0+w$nO-pmD(7VUY?&T%EB&lb2Z@@uzd}e$@s`WFQ&L*EF zmt~W7^nSI=9InBPN{p3Nq4lLV3(U)*(qj#qFV~`0qr^KK-kwLmn8nO^Xx_%$w%iPP z9*r~pH|;j@nSFn{Hj6+evBDqBY@wAtKe(DdzNY^6^DqJy0!kiSflFf@81l^sWPMso zA5<59{HL??fa zfe)uFclY)dKW|;pu4idYS+ANKNQ-;Jt%Yfe{~de6s7Ns;7|T19F4W(XHf^3xXaTIV}tAqgu^F`)}Svh&3V3&WIb2K?eM&R!mC%0AFnu9NNcBi zFq#sBkX*)b(ICpytaQf#d3`EQze(`lZW}lAr!J1G*+|g>A=2nzbkiR+>+WHn2`NznoI5%IL{aa*n1ab=UYY#9)=| z#@X?4EbYsWSY3Ruq4O8Y{EuxDpzVB>RyD0h$o}b-Zf0iYFgQGmYCGILlSbIX$J^N0 zkQ#ehQd+aiuV?H}FAV9eb&<&Dn%MqC4qlpyz-k?gF0A`cnlCjQpp8D#0YVD@mC^Kf zi_+{H!;i_$Rla^FekO->Ek?@RJ}N%>55^q6GdJ(`J9SComUHh1WGZpP0gu16|7mQ* zuHFRc+1aQ3x=D^EM)3cKmQ=xL6==2KS3#Rnf#`~T=aY8UMc1;~E4kede=voD>e z!2rs4-zAc;QKmykDNFgF^7Y6o7$;8Cxvx@A-KU`~#h-+umliKC@#>G0eRK<*yOi5x zvB%$>gy+lIARyrJWQFfd8jZLa=1lJe#MV-?lPwDf?sNbOWXpP}}%B zy6}A44t1`)F@W&CctD5UbT952?|OH2bYggdQKGe-#w}E7@$YD>yF!zG$WLI-MF<^a}lNpBUwgz|~G4eCCH`pTw0M zFom7KObKN9U7*e{a+a!NvUWjaL;R&xN?6Qa(;1i zPHk*BdwP?i#C0<8e&@w0m($38NV&_{k~m2mKdw2re{KYtYVb6facx2&S0SHN0-;e{#|H7EXwZsH-Bv1L6U!vdt-NHd*XJ^L(mLz2g^RKnQBc=sTpq^ zw|6}ScBMV>m=3OnP&cKVIgY+s?7!19^f>Bpc>)<<8t6U9O$-U6ZG*6f(x2%?hE&a< zuXKEsM(&xzZoi8f#a*&!xncG$^dRn9mz0ynbkl-xzcB^0Fb^e6MmVk$+(2dzry$%6 zqPOY|#xKqww4S0Hwhm`pO7WC zDcjNf7r9hrimanJe|$1V5M+g45( z9;>XQU8x+!g&rOEAA0~)-YafsCp%0t|GHNcu5X)UP$DOIXoskJTR|Ki1s@SSeRKu8caN%{146V B___c9 literal 3158 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 LT