From f499e6cf004ee1b49e548e86eec1d64036e05cb6 Mon Sep 17 00:00:00 2001 From: Lazzzycatwastaken Date: Thu, 18 Sep 2025 21:25:40 +0200 Subject: [PATCH 01/10] setro OWNS me... (we've lost the plot) --- .../java/com/hbm/config/StructureConfig.java | 2 + .../java/com/hbm/main/StructureManager.java | 2 + .../com/hbm/world/gen/NTMWorldGenerator.java | 6 +++ .../hbm/world/gen/util/LogicBlockActions.java | 35 ++++++++++++++++++ .../world/gen/util/LogicBlockConditions.java | 9 +++++ .../resources/assets/hbm/structures/crane.nbt | Bin 0 -> 11539 bytes 6 files changed, 54 insertions(+) create mode 100644 src/main/resources/assets/hbm/structures/crane.nbt diff --git a/src/main/java/com/hbm/config/StructureConfig.java b/src/main/java/com/hbm/config/StructureConfig.java index 2ed7b40e3..2f49923f3 100644 --- a/src/main/java/com/hbm/config/StructureConfig.java +++ b/src/main/java/com/hbm/config/StructureConfig.java @@ -51,6 +51,7 @@ public class StructureConfig { public static int forestPostSpawnWeight = 30; public static int spireSpawnWeight = 2; + public static int craneSpawnWeight = 20; public static int bunkerSpawnWeight = 6; public static int dishSpawnWeight = 20; public static int featuresSpawnWeight = 50; @@ -109,6 +110,7 @@ public class StructureConfig { ruinsJSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.34_ruinJSpawnWeight", "Spawn weight for ruin J structure.", 12); radioSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.35_radioSpawnWeight", "Spawn weight for radio structure.", 25); factorySpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.36_factorySpawnWeight", "Spawn weight for factory structure.", 40); + craneSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.37_craneSpawnWeight", "Spawn weight for crane structure.", 20); plainsNullWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.37_plainsNullWeight", "Null spawn weight for plains biome", 20); oceanNullWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.38_oceanNullWeight", "Null spawn weight for ocean biomes", 35); diff --git a/src/main/java/com/hbm/main/StructureManager.java b/src/main/java/com/hbm/main/StructureManager.java index a5f70b5cb..8fba653e0 100644 --- a/src/main/java/com/hbm/main/StructureManager.java +++ b/src/main/java/com/hbm/main/StructureManager.java @@ -85,6 +85,8 @@ public class StructureManager { public static final NBTStructure factory = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/factory.nbt")); + public static final NBTStructure crane = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/crane.nbt")); + public static final NBTStructure spire = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/spire.nbt")); // public static final NBTStructure test_rot = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-rot.nbt")); diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index 8d951f8a3..776396f84 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -145,6 +145,12 @@ public class NTMWorldGenerator implements IWorldGenerator { spawnWeight = StructureConfig.factorySpawnWeight; }}); + NBTStructure.registerStructure(0, new SpawnCondition("crane") {{ + canSpawn = flatbiomes::contains; + structure = new JigsawPiece("crane", StructureManager.crane, -10); + spawnWeight = StructureConfig.craneSpawnWeight; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("plane1") {{ canSpawn = biome -> biome.heightVariation <= 0.3F; structure = new JigsawPiece("crashed_plane_1", StructureManager.plane1, -5); diff --git a/src/main/java/com/hbm/world/gen/util/LogicBlockActions.java b/src/main/java/com/hbm/world/gen/util/LogicBlockActions.java index 7e5b8df3e..50f99aec2 100644 --- a/src/main/java/com/hbm/world/gen/util/LogicBlockActions.java +++ b/src/main/java/com/hbm/world/gen/util/LogicBlockActions.java @@ -116,6 +116,40 @@ public class LogicBlockActions { // world.setBlock(x, y, z, ModBlocks.block_steel); this is useless }; + public static Consumer COLLAPSE_ROOF_RAD_10 = (tile) -> { + World world = tile.getWorldObj(); + int x = tile.xCoord; + int y = tile.yCoord; + int z = tile.zCoord; + + if(tile.phase == 0) return; + + int r = 8; + int r2 = r * r; + int r22 = r2 / 2; + + for (int xx = -r; xx < r; xx++) { + int X = xx + x; + int XX = xx * xx; + for (int yy = -r; yy < r; yy++) { + int Y = yy + y; + int YY = XX + yy * yy; + for (int zz = -r; zz < r; zz++) { + int Z = zz + z; + int ZZ = YY + zz * zz; + if (ZZ < r22) { + + if (world.getBlock(X, Y, Z).getExplosionResistance(null) <= 70) { + EntityFallingBlockNT entityfallingblock = new EntityFallingBlockNT(world, X + 0.5, Y + 0.5, Z + 0.5, world.getBlock(X, Y, Z), world.getBlockMetadata(X, Y, Z)); + world.spawnEntityInWorld(entityfallingblock); + } + } + } + } + } + world.setBlock(x, y, z, Blocks.air); + }; + public static Consumer FODDER_WAVE = (tile) -> { World world = tile.getWorldObj(); int x = tile.xCoord; @@ -342,6 +376,7 @@ public class LogicBlockActions { actions.put("FODDER_WAVE", FODDER_WAVE); actions.put("ABERRATOR", PHASE_ABERRATOR); actions.put("COLLAPSE_ROOF_RAD_5", COLLAPSE_ROOF_RAD_5); + actions.put("COLLAPSE_ROOF_RAD_10", COLLAPSE_ROOF_RAD_10); actions.put("PUZZLE_TEST", PUZZLE_TEST); actions.put("MISSILE_STRIKE", MISSILE_STRIKE); actions.put("IRRADIATE_ENTITIES_AOE", RAD_CONTAINMENT_SYSTEM); diff --git a/src/main/java/com/hbm/world/gen/util/LogicBlockConditions.java b/src/main/java/com/hbm/world/gen/util/LogicBlockConditions.java index f3eec59bb..b9bc15370 100644 --- a/src/main/java/com/hbm/world/gen/util/LogicBlockConditions.java +++ b/src/main/java/com/hbm/world/gen/util/LogicBlockConditions.java @@ -43,6 +43,14 @@ public class LogicBlockConditions { return false; }; + public static Function PLAYER_CUBE_3 = (tile) -> { + World world = tile.getWorldObj(); + int x = tile.xCoord; + int y = tile.yCoord; + int z = tile.zCoord; + return !world.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y - 2, z + 1).expand(3, 3, 3)).isEmpty(); + }; + public static Function PLAYER_CUBE_5 = (tile) -> { World world = tile.getWorldObj(); int x = tile.xCoord; @@ -97,6 +105,7 @@ public class LogicBlockConditions { //example conditions conditions.put("EMPTY", EMPTY); conditions.put("ABERRATOR", ABERRATOR); + conditions.put("PLAYER_CUBE_3", PLAYER_CUBE_3); conditions.put("PLAYER_CUBE_5", PLAYER_CUBE_5); conditions.put("PLAYER_CUBE_25", PLAYER_CUBE_25); conditions.put("REDSTONE", REDSTONE); diff --git a/src/main/resources/assets/hbm/structures/crane.nbt b/src/main/resources/assets/hbm/structures/crane.nbt new file mode 100644 index 0000000000000000000000000000000000000000..5cde5147dd3167cee3dd042f182a0d498d08ea18 GIT binary patch literal 11539 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 Date: Fri, 19 Sep 2025 11:50:48 +0200 Subject: [PATCH 02/10] creed embled unemployed drone --- src/main/java/com/hbm/world/gen/NTMWorldGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index 776396f84..f0fa6256e 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -147,7 +147,7 @@ public class NTMWorldGenerator implements IWorldGenerator { NBTStructure.registerStructure(0, new SpawnCondition("crane") {{ canSpawn = flatbiomes::contains; - structure = new JigsawPiece("crane", StructureManager.crane, -10); + structure = new JigsawPiece("crane", StructureManager.crane, -9); spawnWeight = StructureConfig.craneSpawnWeight; }}); From eddd75a62632ae156b508d744f7ee48347fde49d Mon Sep 17 00:00:00 2001 From: Lazzzycatwastaken Date: Fri, 19 Sep 2025 17:53:33 +0200 Subject: [PATCH 03/10] When I get pantsd in class but I lowkey got a humiliation kink so I get bricked up and everyone realizes im lowkey slanging and hypes me up so I start helicoptering it on some nonchalant shi --- .../java/com/hbm/config/StructureConfig.java | 2 ++ .../java/com/hbm/main/StructureManager.java | 2 ++ .../com/hbm/world/gen/NTMWorldGenerator.java | 8 +++++++- .../hbm/structures/broadcasting_tower.nbt | Bin 0 -> 31464 bytes 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/assets/hbm/structures/broadcasting_tower.nbt diff --git a/src/main/java/com/hbm/config/StructureConfig.java b/src/main/java/com/hbm/config/StructureConfig.java index 2ed7b40e3..fd24e8940 100644 --- a/src/main/java/com/hbm/config/StructureConfig.java +++ b/src/main/java/com/hbm/config/StructureConfig.java @@ -41,6 +41,7 @@ public class StructureConfig { public static int laboratorySpawnWeight = 20; public static int lighthouseSpawnWeight = 4; public static int oilRigSpawnWeight = 5; + public static int broadcastingTowerSpawnWeight = 25; public static int beachedPatrolSpawnWeight = 15; public static int vertibirdSpawnWeight = 6; public static int vertibirdCrashedSpawnWeight = 10; @@ -109,6 +110,7 @@ public class StructureConfig { ruinsJSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.34_ruinJSpawnWeight", "Spawn weight for ruin J structure.", 12); radioSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.35_radioSpawnWeight", "Spawn weight for radio structure.", 25); factorySpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.36_factorySpawnWeight", "Spawn weight for factory structure.", 40); + broadcastingTowerSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.40_broadcastingTowerSpawnWeight", "Spawn weight for broadcasting tower structure.", 25); plainsNullWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.37_plainsNullWeight", "Null spawn weight for plains biome", 20); oceanNullWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.38_oceanNullWeight", "Null spawn weight for ocean biomes", 35); diff --git a/src/main/java/com/hbm/main/StructureManager.java b/src/main/java/com/hbm/main/StructureManager.java index a5f70b5cb..7eca722ed 100644 --- a/src/main/java/com/hbm/main/StructureManager.java +++ b/src/main/java/com/hbm/main/StructureManager.java @@ -85,6 +85,8 @@ public class StructureManager { public static final NBTStructure factory = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/factory.nbt")); + public static final NBTStructure broadcasting_tower = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/broadcasting_tower.nbt")); + public static final NBTStructure spire = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/spire.nbt")); // public static final NBTStructure test_rot = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-rot.nbt")); diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index 8d951f8a3..7cf25d9fb 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -129,7 +129,7 @@ public class NTMWorldGenerator implements IWorldGenerator { NBTStructure.registerStructure(0, new SpawnCondition("forest_post") {{ canSpawn = biome -> biome.heightVariation <= 0.3F; - structure = new JigsawPiece("forest_post", StructureManager.forest_post, -9); + structure = new JigsawPiece("forest_post", StructureManager.forest_post, -10); spawnWeight = StructureConfig.forestPostSpawnWeight; }}); @@ -145,6 +145,12 @@ public class NTMWorldGenerator implements IWorldGenerator { spawnWeight = StructureConfig.factorySpawnWeight; }}); + NBTStructure.registerStructure(0, new SpawnCondition("broadcaster_tower") {{ + canSpawn = flatbiomes::contains; + structure = new JigsawPiece("broadcaster_tower", StructureManager.broadcasting_tower, -9); + spawnWeight = StructureConfig.broadcastingTowerSpawnWeight; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("plane1") {{ canSpawn = biome -> biome.heightVariation <= 0.3F; structure = new JigsawPiece("crashed_plane_1", StructureManager.plane1, -5); diff --git a/src/main/resources/assets/hbm/structures/broadcasting_tower.nbt b/src/main/resources/assets/hbm/structures/broadcasting_tower.nbt new file mode 100644 index 0000000000000000000000000000000000000000..a9b8d221a59f9fefaf754b93c689802369d6c6be GIT binary patch literal 31464 zcmZsD2|U#K|Nn07)Hbv% zL*#1BqQhB(5;GZB7=v;AUmxv$_xt@nejesC@6Y>uy|35%^?JTvuThTu@w?T(mD|jo z-%}4HJulxiN|#aH`Lmw%8xOH|EtQCE@;~fLzVk~4PLp#aa@!9%Co_Cbp8cg`J*C&< zLT5H*vEL$n_QH$<(W*tZ%Kl<_*OcedSsKdL8ZCQOsuq4GFie}ub@MgXXhpslt;-6 zZJF6CdB^Au+PdpSS+(Krfku9RsI+~gn%s2I)D?<}e+l>_qw6;+;h-pa^GfSL4bO{V=fcTCF>lGu?6Ga<+1C=AAiL%q&)$OJ#w2|2SC!HAm0EL4 zK;AAs&%45~t4koX$%(QRkHBbpyxfya{MprE4(BSezSOX7Kk6` zA8Ax&5_Guy%a9zxr0$wKV!^N@Gk?Eyh+zlWPqy>!Pzj7#Anyy`dzCx}R9o7m>GE8Z ze1T8iKA1poLNSpS*_k~jqF+j*m{u~MCigS!3aqSUR-+P`gj#1cF>UTt3-?(FJ`9_-a{8^p#oUTUs!7lbKS% zhZwt|YYy$azo-P?Z(Z|%Bp^_y{^OT#I!{*8AdWw=$VS*oLbR|;>p3rFd zAx1F}VCX4!>B{qrt{wtIWw;F{*r}c8Y{BqDg{NwA1D*{)h}jB*LX3Vn4Iu#;Rc%O| z?3#z+S7qwVkWquq>h&KZsRXp>as`aDZizBMYmP@^*r`l602MlKcqCN`n8k|IlUoi|3U=^N*Z`iEy{ zbQwb#7YVh*30S5zU7D_56eg_5C1?se$6JE2XbgiXXcHqZRds15 z$IdJSGwk#v=6TnsHD+AC=!1>qMvAp^>>i6!hPap)=?1r&?0L2brEBh7ZTE+!C{BF($;~t{f z6S8<-EK&oL8^)lcn6rj>K}f@DnF4(zmE5z`rxFHju7|J{{hG9yA|X=*Pky~bz{x~GbbBh2FC6M~(Sc%dZh{bL+P`G6 z4nV^;if5pK=|abo5>WE2lIu` zRmyWwT+J^9A8mbKx;&FcDWs`)Pww}9d5$%zsmnuoWT{9te2k%Pu$J-h5+q%_#O*7> zkj)>4w2-{g%R*Xe4U4G+m^qjDRTh&_|W8hBVKTrp@9jJavFU4hSRJ`qr2m!SG63 zJRo2-B-D(i1s5FbF`b5%J=0hR$gfTPkQJ$q#$P&wWFSCgERF7-e`-s-1Os6@?V^L! zfe^;AbK}l;VD^|lG#(>y1$Wu!Br%n5m73jxdJ`|f@LlwM35OLhB8A?id4%qz`KyJ( z>4=)q?cM0ocTc!CpM*Jj4wAL$$fT+NiJQZPacm}HFmmarF(bi-8L50B)8Q* z?Wpdpq4I6V&OTcUfwXPnf1Nej3L`1`yY8KG7>calbbr1(bo_@w`@a2kr-!$MJLur+ z+MSb#8{^#OQ6i^+O%@rih~WKt&Md(OiAslJ>JnoYLm^Wj(G<2{uG+D)I#XS?uFvwr zp25a`CxX{Y*XriDyFN>7C~r0^u5*U}z@XibcW4LXy}=1~eHQGhQ(3bKIG&yKV?8vm z(AztJv>@!YOQYjw5ki=ww@64EWx7yq!)iHvWy@Wlmdy}rEEEPHv@MXV|){!;0d zq`R${-5}anSZR+WjJgFSNzveWU5XY)>}I9{?PZBTJGU&3{ocW^as2ZSQ{Aa4*X2_k zVjL2T=Kk^ux=bw})j3{g6W6np1ljwM5mHYZQ#yo@k-Y`TI11yaGj*5kdI)o`WnA`$ z!EPq?`V&|`MZQbO5D5e>io)eID0c`e+>r*fQiu|bg}zM)NuS!Q3z0tdn?fHeJy!?& zj1DWHJYCae^gXdIfi-KYgK4U6+768rwcV+6wp%Eta?l-BQuvDZg2&f0gT7l>w~f|X z7%rSi->F-psdx0nVzqATgxKI>rf#dU=-^@@e8JljT?xv0Y5fJu&gD$s3nVYag!JV%vn^{JTaNPol*zg~@tlm?e}VSq7b(HG6x1 z$YEmWFy?nprb?S7*4l-0lWL-X3cnz;SX!gfwoFL7t{OaxCiPX+fI79utND z#o=iD*JJ(t4GAVQOJ~G;nvnDceI$CSTOe>xc`Xn$LI4?JrDlBpUkzH##UpW)2`l>A z7u|v(sC6{tVqJpC?9$J!UW!6OvhKsX6y;->-(7@0o-wgs1nLV)hRr!@ zd+)=AIebkGH|~&l{@d`>xVGJ! z@SH;=xz>}wAp9O)E!2N-wQxH9YGyI8#hzQ3O`NvKOWeh5od5DxT4Uz4GVbTrK-U!D zAA!${u^yJ5dN&J;Q*R#d*wgbQsD|Jo*Vz^3*-PQwTvMz(-20ZdD<+wu+m%L0193NZ z$@IHp#e7j#X_?@Fp2U~ZvH=DY#SRK{x|Mv+f`R-`yme1OBm`ab7c=epk0k?wbG|RH zI*eSv)K8zZ5IowKrz7i5(3$fu7o4lhlLhXejSemR08%`NYqp|=6(^%R?oexNMKAqv zvYqm%%QQOuj+sPPssqKNsc<~dEM3Mz2OEM8Yl9uqf5Cgq>hrHfMdsdo8l%#rLOJ+_G%?>!2+-cl^S*3eD$AflK-|CPm8Q zH2$#omy7*|)JvlZ2kR2X?=#0i2o`#%8mOnA5dUJuY^+Zhj}i?tKW&eOuj~(pL424Q zvxGwBi6Zz}Bj@OwFC)7%OpZge6+MpdCb_Bm*^spP_#%sC@M`_dIvgIj`%^<;;d z=hs!)`9vpO3I2I$e1*AP`%*czKR??E$bI+rI1p*du5YjY8tQt+gc!YHL|KjYDQcl< zSK~qx%Fkit4}_2jq%=huKV?q{tg~U&*hkN!#c;kx0}+%_o&A#+eN2a`<#|ocbqO1Y z8r_^nR0=_(zKWlDv@!F_V>5pe*J$oCBLo`6qDe2w9iXvVF-PhX`iVQa%SS8(cA^zd z=9RF(ap%SP#nSk&vW4$N@VrkQP>*(ZllM>CK$_1&-b#W|Qpx$BUt;TZYVw%}u)%S#8} z^y{iZmgsDknUt5~sXP3B+mMeXz(C}4&eSDPayY4&H>nFf zFq}Qm?Tfp9K~9pT(KR)v%#Cp}=I`39pl=I3Fx2LiaOSt&M+vJO3MBbe()fvhchgql zU&1OfgkPxR*&%GCZR5`o zY!x(I)g_*&xwz%1WnhXjJ2FK_-M%GtO6w-a`goNa)tXtGey@Nx{k|b#16FR-udvKI zL)ZYr-Twj>B70%o4)LYsiqq{&u=$Uo*iXtbFugC4=Nq>7ZNMfdeIsLuy6(zPqhLvU z&3i$&nry`LH;=ff(|qOvYiYh{pF^h7P`h@UPC+LB*fCI6cmbGZJX1meJ`D-h+PigK zz2YBKN06G$IXM$sE4*plCcko(wjrv?T@b=Pv`CMh=zOo4&_oVF`JJ%V!MQ8*Uft2%7C&@R zZO~@Xd1tfVBbBy0R1-VV+00NspmFHFn%`@qt3&sdqmys0!A~S4`KC1&yS%*C>U<%~ z{Fh~6h;`ucr1Ztf$@{)ai<2`o1BYAIg?W#BVIGX1SP8hyeIL?K znf&}QYdxoi{Oiis)PwQL=E+vGi<5J&?x?Nw`)MXJ!$TJ5Ub~OQ^18zPIK{lKXMJIN zCWBVK^1I@dLizr2Y{{B?isx1a*Y}$T&wZ|$SmdxLYRCrr?@xaeBzmsw?o7S>xgqZI z8wI@4)XhxAU|h=!8zm-YQ`F_LhIYfG_;lT$C58rf)26;6uf^%Q!o41U_Mq{DHiR0? zz4Mj2t%2sPW}fN{B1?UxWN7YWYc>6ZnVVZ6nr=#o+s;z=J$e?F?J2Gr zPM_QuBR|xPUE=B&wUxM}pHo&4(f>0_R{zhPa;ILOmmYQ;q5P(sb#EQX(x~d&XMXNz zVyg4yDfCb?Xb%pzKpp9cn&JZCE6A#eH?v14ZB5sG*mVRjK;=JwL*s??p=LD}mC~8& zkm}!7>!SE)DHiy%ksRWiSUWMM`{o@Y? zC7af~a^4o-vGK>@qD^Z+60qM8akX&Mng~iBZ7-}v$mjwg-Mf%u)Q$f=s2}Df2xqKt z8V`SAKOPRE`7&_$@o+eiFP4K~{ZB#$B&dncvoEh8EaStEIFYnf8I+XIkaEz>wHfA3SrGB((QO(p<-9W3~1bN;yf&Rkzk}eyH;{{kZW(MFixn`^X z7t22bMMu+gA65?ij*NWy=NQ6_VhSACW~t~!Gc5P-|A_#}PGQx6;1sGRU4t9;G(-4= zAOQBdbh>sT8%|A$D?r0lqy{*P$CK8s)_8S&+|X5^OX7-3{7?{*IM0qTd1yRzad+e8 zGN3ZZ80m0jY8)OUk_$K(7PiE2(TB0?sx?mIfiT5vtH#wJEV4jo;38BuKATC05eYK> z4H@e(80#?@Yqk|;s&eQoh-2ePeyQ98Joe>hu*^7n5_+bd0HVNjG7Hc{=Lfaikr;I= ze-mMnqzR}<<&eed>P(Sl9tvu?Br)n^)Cx&8ig`gT#MP!RUVeavQF#TUbUy_tuw%7} z`zfnUBtjFrja;GZaS2$-uSE1K+OWu){yYE7MYrIlSBB89omR+7%r;DDx_krRl07YG ziJ79%kH`UaIbv-ie1f&mNNPl4xz`3qonN81Yt+O|*K0#;4^Ose_bkLv6ouiR- z*i-}8Gnb$fu$a+??a(!85HiYNeDC+jC0!FGTs?ROuzy$c5?5^NGAm2xuPHv^qTU}t zwg&j=WUG&xx~DBL;1b+z{r8wZqd;w`FrZD@E4T&ci4=<)JT&QSw7KQ&rhf1j@tgSh zY?54K4~G?KZUuaAcj;om879SmhCeF2(#F>^t$+CFR^iEIew_Z>i&NU(Fe*(?a)* z1z68)8aj7Fen{g+kCtvpU=l!(rwgpzEQ6y->S0Nu2F@DYzdk8*eE|bmpaze+xISKe z0!6*ePJAr)-6<#Wo?pv1M%_N8Mf>#YBf$ZfW>`@+d5+7M>*6kZG{kvJ-B2akU%b3U zvM2aanV*VvOVs9$g^dVLGXxfU%df7zH&f9QH)FNWsFmbJffzjr)4MyH9K@Mr_K>W& ze9(g}|K~M1Jg;RcV=Y@-64?V8iRE0=Kc_OJ*^)B!*S;mGjuKUB_F+Rho;mBkwx<0# zXfx5;Xy14Ig$=eD5Z`$h#gWWT%*d`zxI8L5(vz%xoS$e9Fnp@veQ@^C_7oR6RDG20N9S|SWJ{oENNM9b8 zrEiMMDqe%j>Mt<%{H`kLu2^+O@n$%9_q_i}e~e02tBuqB>v=7FY(Q@E0KUltFF z=hxopn~3>*@A1-TQ#8@bp(>j~IgF7eg?z!SYYyA{B z>+6x%cv_{n!%P%o{8ntZNS}E%Q=i#re<5kFQm(vI9NzQV&CKFjP~2VI@*Z2jdf+#* zM8#8a1|9?q=X6AH){AzBvu@nHBHX+8CAg%6a$GAWS^@8wb~97It+74X(=7+> zCQn2Nu15Rp<(GTJmdOKU`LjIZRYJNn-8W zWd=Y%HZ2k24r^({dTD+MUqU8j^U)vc|8WeN)MF-}OvW zzb68?h^-mb+TAUkv~a}=)*y2tMLz(i+>ba3$5;5B4AgwO*G_ zKDXgbaskYzv9uK+GdD9!tKKwOt4tqJRsbPHK@&7^eQz8DC_dW;<60{k;#%|SZG5_e zuhg~sCA7Y5(3+#LlT!sTUkw92059?!CVBa08YkwOe`y?S?<08*Bf5mY2LR_g{XL)I=mQj^t=ZI_5&g(&ve0WRgn84LFLyD^oF=(s~S?BkcXhj?R-|+iwyqH=;&}{Z8Wvope3%LmT)uN-taPWWst2T}r z2NcBj1dX^n+bvd6#nGtQ-14S zkII_gpcllEvl5@8#v^`i9FN$>;!5D%xX+?tYe5Wc{0e-0;p2gPqUG6td5N?C+K3Cd*fvWZA!?KCb#gj67QwxT2FBe%U+xpyxGUu5*yK+_}Rz zNMjZN^7L(R_^eL^bUk106!0~hTbUrVv(FqJen9VkFWlntn3;O593HT{`kU($He@G$ zEw7-z-mQl#@%`CjX6Y!4D{N@pz2(*~6@FW2qj)14)PJ?!2JYEz0|QZpMSDzeGO)V% z=7e~3rhTb!n}|NS?5AQ!jAy>C1VHeKu#u{pVgUcybP9@kH?$YOxGcUlc=Xo6I^em; z0IU=mE5#5>R_x8(Kt{y=87zZuyI3)(N=q~LmvrYi1qlU(CO0$r)sE5WjqM?I-l~nZ zLJVL^rlFW!n%4(UmZ1q9k{bG0<0ljKNRSBA%VlzX}} zI<7%hYm&dT#?Vpe<2U4|p0JJJcu7vfESxzPWF_U{zv8K8)zohh_{l#stz7zAYAS5b zK#j+GUEI;rtS~yyMcJ*^a6J$Vh{yQnZGd?NU9Lx%i=uirM@9EOO5viM&!M2}F#2C^ zC18qF**{6)4L)dfPukSdq5z>WJ_<7iY*Cxf?v<(r-&l( zD?@lg|DdSfW^HajNd}rNl){rYkHKaB9@}V+TjZ6;Azmc)v@c5cK<^pPg!wS*Z1Q`d zi0z)d0#}PzK%WxE8vt^A!!*RXzZ^sIUM@?#VmU4PP!kMTX=!WGJb8 z0w-+fqcT_B)?5^uI2Ir|TvSC}g@P zOA51%o_DYiIH(SLqS(lPBt0EsJDWmZQ~?@z9y+@D9MaLP+5oHuJp{OksM-B1q2Obc z%gf+e+B9_o2c^&|W{`sRF~oNN+V@@;j$;eKDQMU^Fvl`qh{lo)uA8ntyi4985?5=%A5{724-Yh0DvgaD%SXJ?URd z%N8>*IaBcQ3*4PU(qosG`Y45yX;c`7p`FnH3a9M@Sg~!!K)lh&seQ?Z5du=|ao}y^ zo~yIq?D`BbWM zn~Z+NK{lO@QgF1M1>pGYd%fK6UVB5HeGaW(abLs3-`9r4z4(-V zqVFa>3&!j);CE@K3#!#?U~45`zFXg3QLw-SPzk#cf8MkAy;?#!uB7Z3%(>jBe?qgf zB8z6gRWP1kdTR7x(e_r6yuzQGJlU_*`*NrC5kRf(!~OfyzrdJ6y(RGokR6OGIp}b+ zf4?A0w-xlY99s}Ta3eT?VB8OD3U8Xo8a;)gbfB^ zT?>ZC7R^R>mis>7jGOCL!Z9YN=27}0ZmM6fG}C4;pfIiBwBei}aZS956K}5@*%wUj z=niIfnbKoNv}55cw`YxpkHk$(nD*>)2%CEO(ziNz5+5=`2@=$#EoXCPzk!~{7NH{x z|A3yK{{=lKRwn%ijKjmH25Pgi6iZ*XDb~2`S>N1D zSJ`;z{1@M6eGB|-;)k$3E&pPmFTP=*TTSPdU%gaYp>WJ6!d5y~!PIkWOcs}uiF*$p z?GqEPsPVkD$1g+j!&aRBf{m)jOy)io7avJ~9VLp(l6*vxcwu;3T^)|j7%It9xe!rC zPry3dnnb@rf%ibUUGEd5P{40?p0I%pxEj30|UvHhP(u z-X`^ADAe@3NMgCA@_hw2k*M$eN?eqW9Ff7#Wakk0aJK_w$|HFTSCG`zgGyi@4-xL?7Ik7-;`|cZ=l(^p&8WJd4<+$Y7 z+2EsB#p!6V+01Q+kyd|42!NoB`RzkHk5iIJKk^W1b^j5B zfPaHWABtoC>-E2akkTp4g^m|JLOR}a66v@$;5F&}BSRvXqs`*TBlJI@FpKQz;&iy9_mZqh@hOMprv-g^=)X@aU*G{r_P3f1d@w z`k3h&-BG`rH?*5szDkFIOk4>tEG908kn3a_?S%H&?fWkFko)D#t(ZA zlWZxA7h<+&!F1Z|dBZi>bW*`4T@FmaLtBIZZ-f8{0s(WY1TYW+KII|=RR2vtC_+HJ z9YVmr!K0xYF#q-XUqMLe6gt5aT+TzLz{nPv0yn@mir&3vvPAHAQ~JiwO3;JA#=v;r zgv>BGJDvB3zB!LW*74{R8`NU)tMtJDK?>~0+MUw{m*~3N+Bm3SGwh$m%Jf`RGDFV2 z+A(3?+hQ1A!W|Ok@BYu19lZULF#qq@$`h3~bJ@@H*@QH7N_k%!pTx=osd|ZHX>M1r z@`1|%O`US*hDx-&teBU$tl>YOjm4sY%amGT4cJ2pm>bpx=L}Hkzf5*1i-xV>YbV0h zn~$MXHsQa0;C!{cbtmUH^}otnnS7EQM<}ir}mNAi7%~mKpoB zM>b|-aY5j06HEQ|KGy39*3EN~QkJhYNS22|1fKm#pA5!edJ~I6`!rLOaam1PeI`GB zdCED zd{FVYjnVQrt>Q+Jk~#aMfBI}7D8t)TK*CF#{hAV|e`K9BJ}?c5RW-H_F*T+evHMFPgjZ}d9V~a?IPBn{bU-2sOvKJ50 zPkfXFo!a&fRaY)MUUYYKrl+WE&_+0{j#EK13CsB&4n$>*4+Ul-qPu?>wAtzk2j+?Y zJhQGN2k429>%hDb>Ht=QgHF>{pB|^9_lq-QPeSIbx(y_auO>(}J%V3uF_8|eIcs~I*b2mu;e+@&#FwwySTEKi9#v+^aqkkTn; z;5=~wqpN@l&Kt(p#Z?nWo9p}>#-jHQFD*GAOfhO_#9nu>M;~<~k#1!dw6m2XPVR_V|PfO#) z=c(SLXjP)kadAM&p2n!sLM?XT>JzXMvY{5GyC9JBoQ9b~b#x-wS??xNGy2_iC-M1D zzt*vB<(99NN?fSN=Tp-ywAu7Q6wzjbG(w;27KFZI z2wAikge={k@YPqI4TwFBL{ds^kQBKaNXkA)$=ERt1h=6_eRlmqrF3{d-6lRZZF_3F zD;Sa9(}*Fsb2zZ3{g^iGvEIeenRCH~KPP27GK2(xEe3 z5wg$MD}HC}G0M`2V`4wME2bunf zTq347+zJ`rRD{gOi3pkg2$}b+fXvfx55uZFR*Uu&tu{P0*^o@dw#tNFdOQ%Tk0Pe* zocph&9%^daY@oz!M=>)Mu5;%9`9c||Yj@B4_;OsHfn|S=?H$aG^l4PM!(X{BI=R7j zz_6;L>Ih~EdCqJJPsQfN+6rQ3m7k_=r~UWyQaeF)dulinA8X_pdQ9-y3w0 z`L5lL4D=sJ57ynqOf@{BVsnxpfa;h+y5dMcy3%q~e7?>*7(7NkixwB}bMM zE)R21>C08=ydip~;bMj|XP)lR>`QJ)CdxFH>w`d*?Z0UPgQ#`PlGf(ECedUD>m(H?*}{J z3U${B>EJ^_Pw#7h1x2A;lc%;Q$mz?H~1Hf%Y81lOK2MT z07jhwH3d53=+1_vx{A4{V9%*EbF5$`l&xQz+_78Qta#zEp+sst#rR7aN<@F;dtm!t zFJR&BA~i7z6|5xpIk>y!ZAaO;0GmKlp&;A^;KT_R9bA^9C&@B^Qy(|7X;-87PBm7J z0SFgM%DAjv8qHhhp5I1&#uA8;sNCKfRZsgbv`3^j+A-0;w=}K!> zPGEoIb)G`3e8-S9{(QSP8Z0t3z+3`vc1ELq`ptF0vD`CouUc4mI{M}#IC(*5>Db#x z|6y0cTA|GbcU+0plXXQPF+7dX0=2R|?2ivk)?21?Y}4Qhx??v8KONa@`VRpy*DmGh zfOSrOQ0~zb-OpHfHsg70ZwaupA!pxvNwTatTi>2ma58$s(=%F+r4(kWGI|>nq@SJ9 zqV+B11zxJN$vZhlLIj3Nd$^yntu&O6npFncbZ07KywS0s{~*sRk9!*c%E^ZUr#}Us zuDs$V^-c%;3?SBvSlZhl0%AsKY~m$#TO`Z3I!gqOW1nE5{({uD+5n8oS1YD{UsFzC zA^ik2JHuKnE2MYmSiyxw?wKl04=?2`sMWGGwxM0VnG7d_JY}tvKG^Si%xpNs;(oAZ zac@1KuN{cJNhJUPWdI&uGvu*b@;B0#0LSmU4CcVLzD5bb;n?Y)Jacvw(|<{5^43$n znT%p*J1$s#R%JhV z4yBAc0_DJTp|=(AtfymIv_-4ZR0Vu#Y6BcLkX}^W5ePN~r2uXtBiD+Y@$VhP$J~%7 zkYkLHbAbcoyk8{;DG0*SDmhRw2un}|Nt}%AK*VRF%>_@SqtFtZ_^F`&S^uZ4Ue0QZ z`W=B6Sz>^M`SpyLgZ)5%{<7Z|$uCyB9)P9E6U!2W=4gN=Pu=taY5M6;Y|PW2w2_WN zdTPFA8&e10?OeDL%7uuIa2nouP)g18f+Ti#MkyXeb=6qgVc&b z^22eDo_NR$Y5 z=hLMExFXTdWIOQiTBL=tcKQ4NO5+sg_e^NzdnnH`#-@= zKPFa+*0;NrUwsHe?l-iXY$yl$L!ulGt*3Y$+NXq(gjm=ee@FCTkjT+v0nNzrk_d+7 zg-?U!rO}~^hUK;AGq9*f@C2fwoMCy5B*608^Lcf7K|z=iD7acZtS~5oBt~HKB!a

f#lp&$Q~A6mT|Yk1yrjAB9B}Vz$QJy;NH+DfG<7#V>jm|)R%6aF#nP; zoKIIxHXl7J@p(Q6u0YrP=)aQV;>klNz*3Kgd(Qp{AjBNdk464r3nktq@CG`Jwbtz# zs&l>zg3&lf^z(d4x~41mEegxm1cUw8S*C)NhwC$RYPsG=%JLC7yW7peAE`?+*V+?l zdxLl_3A&#Jxu_bVHY=c1_bz|)kBx=ZYenGj4Oo_@4HxZMiLlN$3*V>!6uPQ6=9z^9 zYTL~a3oF~S96<>?GbuDj4;K->3n9^l7w*r9mSG~Yrc z5aky6XU*+Y+DfT}PEA!;%U#_Hew4Zz>n9v4#*z5W&q933tTaswEYsdET3Q5+uvK7Y z`ZmDK@Yo6512up7%8^*)y+7c>i#N8FiJosFAO2zLg9a<0GUG1);UT!E`?wp$%qu&f z+vO|jw{+eD%M1UB#b+!z*HQv_zx@<9{hm7Bd2lNj=Z}=C!kL~IL8#H}?jZ+mW92M| zy5%sUVAdDNKLkFnR*GPCc5MY6sHj@0cKHK+Z3ddZ4CXn1@Rz|hl4-t%oi6|bd`h0+ zU_sPMri=23SY_J6 zbD8;S`ZV`{q4k$7@Xy=%ns1(~T$x+o z9h9sl?`a&5A|Ah0vhwxXM7l}nRDaO&^tga%s_@{i`AOlc;uQrRe*z_3EcLW9oX+vA zaIDS0^@Q(xub!3D`ka0u)g70$sTTyF#~_RD-|ZoIDAZ2W%_4k9vNScGU6~7#nI>8C zlN#dEc9JaH04muuO1ecg={&U)uG@cc2r>;uf6Rf#+ZC&G{!BUqviR7-R2?-yHSHS zD?4zXPw~Fq1~C^JHzn5R$u+`Vj*_*AKEiD}jrkr@`Xld4!=+}3{DKWwG$i-mR0O|B`Wbrtr! zE-;YeM;vKPmc#UhJb{LLL-Hk0Z&Y}<{)l+K7;i0ju}`>tdl^}~ofgJ%RL;3>g zCXWwp8+4;}gQJ@DBh_ZM*XU){r{QYqFdAQYgz^Lo2pow|uY@Ou&q z;mt2c7d`e7Ft&=mrp5@md`FZ_@ktk3v8gz?pO$CGO6%`wlGCrS*7We_92cLbFb4$u zzKQRPPZR()(W-zl_LUh0&t4<&*Q@##Cq#TVX3_rr#CA%!g*Ab-(r!J zC*8r)n2{9(5m>4LL?Ca)u3%mM3gS#pT?hxvz=kfkhd6o9(-ZpuDS)7>+-TJ&)^F4e@iO4^Q(xb1{2l)%X}AwJ zBOw-N1TcJg)huH&ubMxYha>5=>tNLZk*S;a`#H6%S$xka&nf$ zJwqiYAs$X`Mc0jN3M3nz^39II{W9N7>{Amt9R()CZSd0(v`!&7Tu9^#9A4N==;KNl zC*kStIYQY1E_Ea4ktgqbQg_0)m(gRCzW`{;XE+I4(L`ozAo5ye?utby}TK z?STw>mzE);xY`5hCRCuCrQ`>jc(}ejD5~>dT(x9%uTXRH3E$x;hAd~FUJ5hfsr?!} zLn)n7!Il(mz1E!O+;HWtkG`c&Ozaxwb21T*DqtHO;JaY}QOE}WWwODx7QLEoB{LfO zpv-T8Aq{e#diVVP+Sbk}9RPR{$0g=U3U^Gg3UA=y8s9s{dew)nb?%(jarN>oObY@Z z0M3~KEHC(O9LTn5K?vvpiQm9K<>}hubDfA}TW+E`N3xx4$Qy`tn1}_l7M(UANu0TL zm&fguK6)28)`JI3Gx43VHT<*yxKJ$@^#w!cu_LK!0N^pFrHtb*&noC+=gz|~LsSi{ z{+tK3W*B_(#g^}(7kB-eFu~Z%I0cxRWHo4GxA+5MK3=ACR7|l_C|oChC{zjs|K-iR zT6FUVGV3+Pk@xnl?o8iN%0hj+5X1ih_uFpot^pCB_|VVFP98FRed^#OCOiuF<~#wq z{wW0AAJenL!a-r{oB(&8Gw?GYsZYQIi7aPhy%*$7o(LxIEKdZi%G%b9h^W)jP~eVK zsLwo~sxue6unvCy;6y*k*FqKp zleC%~a7>!I%a=PgdThecQ*60t`PyoK%rV{V3z9qZU?;2q9pm;Zwbvac5B%DA2K?Q24w{^mq`G)Ij02^{TG z0D+v247gNXpwo&T4Xt+JtiF}`ZJb7n20l)U0jDJk#PtQgP-MZ+KZo%Eq5K!|PwfjDt6lj!0=feJSCeQyK?a7Q4{m~qogp|_%?Frh zq?};296@}BoC^!Bjjju`xEvR;A>Z6>i$3r%{Ts+Udmh7(t83Wrjk=|CqOvgLgAbH$ zfkYoeHoTEpWx)H0;VxVGri0z`G;-HXQG$!%oVF}XQ9M6bd~~|F&kWlj-V;T(KrWxL zhv0sahnm04Y7bfr68nl@+5&3iJM2mDkaetSPQ>|Tyl7vZCe)g}yAQX#QRGw5h7a$! z{OI%qc-Yaep*%i17{w+>R*jmrR`tI(YL8twcLM-h^W&h&by`oC(j5w>O*{;0TPFkt z;-eqvC(^4M7puzrGK~4($%5viltJ=h6f0#!YzXgr52&b-c;IqIm+53BUuuK55HK4bUd)EOAc^+f3 zZMtKhkF$1jXz5*}_ND*aw)T)m*Xf;#KZDygjTO^ddAd=dGk14FGMRrvH95SaMUi!2 zDYPMh^$u+5^DTHBg;DJq9gxzO*ZG}jBjQTBmMS(XtT-q1kk^Bs$i#rl8T*NW{Yt;j z6G2at`~+SL%i#5fhI=vVOD=fcDMi>(GHT!mMU-=2E>fAk8)?6^`o#|bC-4GLNBSAE z?$x&T#4d8OwGp0qr=gv2@IO!Zy%{n~D`gkTll{)g0d#jrfoXwYYJijPkcz=Yxz4+M zqQs}<1#E1lJ+p@=n^z0hFZuC)fP-~58T}UJUd>+ZRR;8`Q*sYPEFZ6JeP`zg7*VI) z>U$TJ^)B5J27Kv>bTD_cj%<%@U}>=Uh{hsj46Y}<$kb-Qb838WVioI!G=7T&?7y?% z{)FY-O>Nd6$?n07Jkh459q&A4414e$0$8Q>lHkWJOiRIQvK017UUncT1nz|CwY;&jt_i$5$en{Ez2Cj`uiEdoxm%iz`HAO4aY zx*qfx*ura-nvYRlz%OTn!!HZb!!?_aE!8*J#5tIM-LEti$(OdqJZ1D@77V`LrBZT& z$}v+<_&U~~Gk1BJHc1cLM5qcs?Cg$OxR017Ef2?-z*aqzrtALF7`Z5aE;idUJ|0ofiJPIyVW6^cB?$f7_zC z_!|c)0ue}V$RR@hZ$`f!=Ou#0I z1`;&7%Yh~aAmK3}Hr*ALChE?_IqB3dURE8x3pkYD&4u|JnVz+mC*Y^9rn)XGPrq`O zCEBpSdpqor0DkM~PxlmX6Q8XB=L_)DKL2PyaEID&N3Mb8{}vP`SVG-i;`u|3?bYDb zUwCKVV&2Tx;_+j=qtyzH4ylv+W$@cP&t?n3%2uMhx5>M%U8&SDx}#%X-fE;wZZ0Kn z$6y@!R;)Z<5fq0CB+<+k>`gX@l*V(eKdGO_xpac2(Angz(&ngY+x0CBILOG~Z?@4L zrDnEpM~HkOAUu-gTV&##(V94ZmgMKcu$c&x&iF7pR(qu!KMNYNSmGkaJ@B;gu{U3E zfA$x(hMRnp$!>@nAG#r*>Ip`LEwcK1-hyex^W}-k)J(z%=@0{8_jkT$SYd#$TMPr_ zEeGdo*@Rp8*+E%@h+w&Oq`=uI7n=Jmd`IHxQnzub`jE*T-co z+mZ}i6-Ocv@XoXy5ggW&L2!rw)UP^2iHnH7YfUF3`FkZB3zfJcfVn$K&RmBEBxk?? z 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 literal 0 HcmV?d00001 From 4440550a37e77b0ad12cc11b4251885f5f76f8c0 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+ballofenergy1@users.noreply.github.com> Date: Sun, 21 Sep 2025 10:20:23 -0500 Subject: [PATCH 04/10] Small fix for erroneous crashes. --- .../java/com/hbm/handler/neutron/RBMKNeutronHandler.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java index fadaea505..9bae72c5d 100644 --- a/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java +++ b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java @@ -4,6 +4,7 @@ import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.tileentity.machine.rbmk.*; +import com.hbm.util.Compat; import com.hbm.util.fauxpointtwelve.BlockPos; import java.util.ArrayList; @@ -35,7 +36,7 @@ public class RBMKNeutronHandler { } private static TileEntity blockPosToTE(World worldObj, BlockPos pos) { - return worldObj.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); + return Compat.getTileStandard(worldObj, pos.getX(), pos.getY(), pos.getZ()); } public static RBMKNeutronNode makeNode(StreamWorld streamWorld, TileEntityRBMKBase tile) { @@ -222,7 +223,7 @@ public class RBMKNeutronHandler { pos.mutate(origin.tile.xCoord + x, origin.tile.yCoord, origin.tile.zCoord + z); NeutronNode node = streamWorld.getNode(pos); - if(node != null && node instanceof RBMKNeutronNode) { + if(node instanceof RBMKNeutronNode) { positions[i - 1] = node; } else if(this.origin.tile.getBlockType() instanceof RBMKBase) { TileEntity te = blockPosToTE(world, pos); From d67b3778c38548ad13de657e831d9260e8855b8a Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 21 Sep 2025 20:58:56 +0200 Subject: [PATCH 05/10] this is the part where the T-45 fucking dies --- changelog | 4 + .../java/com/hbm/crafting/ArmorRecipes.java | 8 +- .../com/hbm/itempool/ItemPoolsLegacy.java | 9 +- src/main/java/com/hbm/items/ModItems.java | 32 +- .../java/com/hbm/items/armor/ArmorT45.java | 1 + .../java/com/hbm/items/armor/ArmorT51.java | 33 + .../java/com/hbm/main/ResourceManager.java | 46 +- .../com/hbm/render/model/ModelArmorT51.java | 59 + src/main/java/com/hbm/util/ArmorUtil.java | 3 +- .../com/hbm/util/DamageResistanceHandler.java | 6 + src/main/java/com/hbm/util/MobUtil.java | 8 +- src/main/resources/assets/hbm/lang/de_DE.lang | 4 + src/main/resources/assets/hbm/lang/en_US.lang | 4 + .../resources/assets/hbm/models/armor/t51.obj | 3123 +++++++++++++++++ .../assets/hbm/textures/armor/t51_arm.png | Bin 502 -> 1010 bytes .../assets/hbm/textures/armor/t51_chest.png | Bin 820 -> 1480 bytes .../assets/hbm/textures/armor/t51_helmet.png | Bin 0 -> 996 bytes .../assets/hbm/textures/armor/t51_leg.png | Bin 380 -> 851 bytes 18 files changed, 3301 insertions(+), 39 deletions(-) create mode 100644 src/main/java/com/hbm/items/armor/ArmorT51.java create mode 100644 src/main/java/com/hbm/render/model/ModelArmorT51.java create mode 100644 src/main/resources/assets/hbm/models/armor/t51.obj create mode 100644 src/main/resources/assets/hbm/textures/armor/t51_helmet.png diff --git a/changelog b/changelog index 938e01585..e636a3177 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,7 @@ +## Added +* T-51b power armor + * Serves as a replacement for the T-45 + ## Changed * Added more QMAW pages * Removed most old particle accelerator blocks from the creative inventory diff --git a/src/main/java/com/hbm/crafting/ArmorRecipes.java b/src/main/java/com/hbm/crafting/ArmorRecipes.java index 1f12beaf9..eab087d2c 100644 --- a/src/main/java/com/hbm/crafting/ArmorRecipes.java +++ b/src/main/java/com/hbm/crafting/ArmorRecipes.java @@ -64,10 +64,10 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.zirconium_legs, 1), new Object[] { "EEE", "E E", "E E", 'E', ZR.ingot() }); //Power armor - CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_titanium, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'I', ANY_RUBBER.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.titanium_helmet }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_plate, 1), new Object[] { "MPM", "TBT", "PPP", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'T', ModItems.gas_empty, 'B', ModItems.titanium_plate }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_legs, 1), new Object[] { "MPM", "PBP", "P P", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_legs }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_boots }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.t51_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_titanium, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'I', ANY_RUBBER.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.titanium_helmet }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.t51_plate, 1), new Object[] { "MPM", "TBT", "PPP", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'T', ModItems.gas_empty, 'B', ModItems.titanium_plate }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.t51_legs, 1), new Object[] { "MPM", "PBP", "P P", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_legs }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.t51_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_boots }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_ajr, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'I', ANY_PLASTIC.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.alloy_helmet }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_plate, 1), new Object[] { "MPM", "TBT", "PPP", 'M', ModItems.motor_desh, 'P', ModItems.plate_armor_ajr, 'T', ModItems.gas_empty, 'B', ModItems.alloy_plate }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_legs, 1), new Object[] { "MPM", "PBP", "P P", 'M', ModItems.motor_desh, 'P', ModItems.plate_armor_ajr, 'B', ModItems.alloy_legs }); diff --git a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java index 31d43ed4f..a59094921 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java @@ -187,11 +187,10 @@ public class ItemPoolsLegacy { //loot found in vertibirds new ItemPool(POOL_VERTIBIRD) {{ this.pool = new WeightedRandomChestContent[] { - weighted(ModItems.t45_helmet, 0, 1, 1, 15), - weighted(ModItems.t45_plate, 0, 1, 1, 15), - weighted(ModItems.t45_legs, 0, 1, 1, 15), - weighted(ModItems.t45_boots, 0, 1, 1, 15), - weighted(ModItems.t45_kit, 0, 1, 1, 3), + weighted(ModItems.t51_helmet, 0, 1, 1, 15), + weighted(ModItems.t51_plate, 0, 1, 1, 15), + weighted(ModItems.t51_legs, 0, 1, 1, 15), + weighted(ModItems.t51_boots, 0, 1, 1, 15), weighted(ModItems.fusion_core, 0, 1, 1, 10), weighted(ModItems.gun_light_revolver, 0, 1, 1, 4), weighted(ModItems.gun_kit_1, 0, 2, 3, 4), diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 2887a7ab2..1a6182ca8 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1742,10 +1742,14 @@ public class ModItems { public static Item beta; public static Item no9; - public static Item t45_helmet; - public static Item t45_plate; - public static Item t45_legs; - public static Item t45_boots; + @Deprecated public static Item t45_helmet; + @Deprecated public static Item t45_plate; + @Deprecated public static Item t45_legs; + @Deprecated public static Item t45_boots; + public static Item t51_helmet; + public static Item t51_plate; + public static Item t51_legs; + public static Item t51_boots; public static Item steamsuit_helmet; public static Item steamsuit_plate; public static Item steamsuit_legs; @@ -2107,7 +2111,7 @@ public class ModItems { public static Item fleija_kit; public static Item prototype_kit; public static Item missile_kit; - public static Item t45_kit; + @Deprecated public static Item t45_kit; public static Item euphemium_kit; public static Item solinium_kit; public static Item hazmat_kit; @@ -4255,6 +4259,20 @@ public class ModItems { t45_legs = new ArmorT45(aMatT45, 2, 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t45_helmet).setUnlocalizedName("t45_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_legs"); t45_boots = new ArmorT45(aMatT45, 3, 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t45_helmet).setUnlocalizedName("t45_boots").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_boots"); + ArmorMaterial aMatT51 = EnumHelper.addArmorMaterial("HBM_T51", 150, new int[] { 3, 8, 6, 3 }, 0); + aMatT51.customCraftingMaterial = ModItems.plate_armor_titanium; + t51_helmet = new ArmorT51(aMatT51, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5) + .enableVATS(true) + .setHasGeigerSound(true) + .setHasHardLanding(true) + .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0)) + .setStep("hbm:step.metal").setJump("hbm:step.iron_jump").setFall("hbm:step.iron_land") + .hides(EnumPlayerPart.HAT) + .setUnlocalizedName("t51_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t51_helmet"); + t51_plate = new ArmorT51(aMatT51, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t51_plate"); + t51_legs = new ArmorT51(aMatT51, 2, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t51_legs"); + t51_boots = new ArmorT51(aMatT51, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_boots").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t51_boots"); + ArmorMaterial aMatDesh = EnumHelper.addArmorMaterial("HBM_DESH", 150, new int[] { 3, 8, 6, 3 }, 0); aMatDesh.customCraftingMaterial = ModItems.ingot_desh; steamsuit_helmet = new ArmorDesh(aMatDesh, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.STEAM, 64_000, 500, 50, 1) @@ -6902,6 +6920,10 @@ public class ModItems { GameRegistry.registerItem(t45_plate, t45_plate.getUnlocalizedName()); GameRegistry.registerItem(t45_legs, t45_legs.getUnlocalizedName()); GameRegistry.registerItem(t45_boots, t45_boots.getUnlocalizedName()); + GameRegistry.registerItem(t51_helmet, t51_helmet.getUnlocalizedName()); + GameRegistry.registerItem(t51_plate, t51_plate.getUnlocalizedName()); + GameRegistry.registerItem(t51_legs, t51_legs.getUnlocalizedName()); + GameRegistry.registerItem(t51_boots, t51_boots.getUnlocalizedName()); GameRegistry.registerItem(ajr_helmet, ajr_helmet.getUnlocalizedName()); GameRegistry.registerItem(ajr_plate, ajr_plate.getUnlocalizedName()); GameRegistry.registerItem(ajr_legs, ajr_legs.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ArmorT45.java b/src/main/java/com/hbm/items/armor/ArmorT45.java index addb410f1..dab151080 100644 --- a/src/main/java/com/hbm/items/armor/ArmorT45.java +++ b/src/main/java/com/hbm/items/armor/ArmorT45.java @@ -26,6 +26,7 @@ public class ArmorT45 extends ArmorFSBPowered { public ArmorT45(ArmorMaterial material, int slot, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, "", maxPower, chargeRate, consumption, drain); + this.setCreativeTab(null); } @Override diff --git a/src/main/java/com/hbm/items/armor/ArmorT51.java b/src/main/java/com/hbm/items/armor/ArmorT51.java new file mode 100644 index 000000000..26150198b --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ArmorT51.java @@ -0,0 +1,33 @@ +package com.hbm.items.armor; + +import com.hbm.render.model.ModelArmorT51; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; + +public class ArmorT51 extends ArmorFSBPowered { + + public ArmorT51(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { + super(material, slot, texture, maxPower, chargeRate, consumption, drain); + } + + @SideOnly(Side.CLIENT) + ModelArmorT51[] models; + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { + + if(models == null) { + models = new ModelArmorT51[4]; + + for(int i = 0; i < 4; i++) + models[i] = new ModelArmorT51(i); + } + + return models[armorSlot]; + } +} diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 480e84917..d4331bbb5 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -924,26 +924,27 @@ public class ResourceManager { public static final IModelCustom grenade_frag = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/grenade_frag.obj")); public static final IModelCustom grenade_aschrab = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/grenade_aschrab.obj")); - public static final IModelCustom armor_bj = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/BJ.obj")); - public static final IModelCustom armor_hev = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/hev.obj")); - public static final IModelCustom armor_ajr = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/AJR.obj")); - public static final IModelCustom armor_hat = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/hat.obj")); - public static final IModelCustom armor_no9 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/no9.obj")); - public static final IModelCustom armor_goggles = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/goggles.obj")); - public static final IModelCustom armor_fau = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/fau.obj")); - public static final IModelCustom armor_dnt = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/dnt.obj")); - public static final IModelCustom armor_steamsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/steamsuit.obj")); - public static final IModelCustom armor_dieselsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/bnuuy.obj")); - public static final IModelCustom armor_remnant = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/remnant.obj")); - public static final IModelCustom armor_bismuth = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/bismuth.obj")); - public static final IModelCustom armor_mod_tesla = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/mod_tesla.obj")); - public static final IModelCustom armor_wings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/murk.obj")); - public static final IModelCustom armor_axepack = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/wings_pheo.obj")); - public static final IModelCustom armor_tail = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/tail_peep.obj")); - public static final IModelCustom player_manly_af = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/armor/player_fem.obj")); - public static final IModelCustom armor_envsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/envsuit.obj")); - public static final IModelCustom armor_taurun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/taurun.obj")); - public static final IModelCustom armor_trenchmaster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/trenchmaster.obj")); + public static final IModelCustom armor_bj = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/BJ.obj")).asVBO(); + public static final IModelCustom armor_hev = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/hev.obj")).asVBO(); + public static final IModelCustom armor_ajr = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/AJR.obj")).asVBO(); + public static final IModelCustom armor_t51 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/t51.obj")).asVBO(); + public static final IModelCustom armor_hat = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/hat.obj")).asVBO(); + public static final IModelCustom armor_no9 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/no9.obj")).asVBO(); + public static final IModelCustom armor_goggles = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/goggles.obj")).asVBO(); + public static final IModelCustom armor_fau = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/fau.obj")).asVBO(); + public static final IModelCustom armor_dnt = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/dnt.obj")).asVBO(); + public static final IModelCustom armor_steamsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/steamsuit.obj")).asVBO(); + public static final IModelCustom armor_dieselsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/bnuuy.obj")).asVBO(); + public static final IModelCustom armor_remnant = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/remnant.obj")).asVBO(); + public static final IModelCustom armor_bismuth = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/bismuth.obj")).asVBO(); + public static final IModelCustom armor_mod_tesla = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/mod_tesla.obj")).asVBO(); + public static final IModelCustom armor_wings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/murk.obj")).asVBO(); + public static final IModelCustom armor_axepack = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/wings_pheo.obj")).asVBO(); + public static final IModelCustom armor_tail = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/tail_peep.obj")).asVBO(); + public static final IModelCustom player_manly_af = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/player_fem.obj"), false).asVBO(); + public static final IModelCustom armor_envsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/envsuit.obj")).asVBO(); + public static final IModelCustom armor_taurun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/taurun.obj")).asVBO(); + public static final IModelCustom armor_trenchmaster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/trenchmaster.obj")).asVBO(); ////Texture Items @@ -1087,6 +1088,11 @@ public class ResourceManager { public static final ResourceLocation ajro_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/ajro_chest.png"); public static final ResourceLocation ajro_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/ajro_arm.png"); + public static final ResourceLocation t51_helmet = new ResourceLocation(RefStrings.MODID, "textures/armor/t51_helmet.png"); + public static final ResourceLocation t51_leg = new ResourceLocation(RefStrings.MODID, "textures/armor/t51_leg.png"); + public static final ResourceLocation t51_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/t51_chest.png"); + public static final ResourceLocation t51_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/t51_arm.png"); + public static final ResourceLocation fau_helmet = new ResourceLocation(RefStrings.MODID, "textures/armor/fau_helmet.png"); public static final ResourceLocation fau_leg = new ResourceLocation(RefStrings.MODID, "textures/armor/fau_leg.png"); public static final ResourceLocation fau_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/fau_chest.png"); diff --git a/src/main/java/com/hbm/render/model/ModelArmorT51.java b/src/main/java/com/hbm/render/model/ModelArmorT51.java new file mode 100644 index 000000000..2cbbe3b2f --- /dev/null +++ b/src/main/java/com/hbm/render/model/ModelArmorT51.java @@ -0,0 +1,59 @@ +package com.hbm.render.model; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.loader.ModelRendererObj; + +import net.minecraft.entity.Entity; + +public class ModelArmorT51 extends ModelArmorBase { + + public ModelArmorT51(int type) { + super(type); + + this.head = new ModelRendererObj(ResourceManager.armor_t51, "Helmet"); + this.body = new ModelRendererObj(ResourceManager.armor_t51, "Chest"); + this.leftArm = new ModelRendererObj(ResourceManager.armor_t51, "LeftArm").setRotationPoint(5.0F, 2.0F, 0.0F); + this.rightArm = new ModelRendererObj(ResourceManager.armor_t51, "RightArm").setRotationPoint(-5.0F, 2.0F, 0.0F); + this.leftLeg = new ModelRendererObj(ResourceManager.armor_t51, "LeftLeg").setRotationPoint(1.9F, 12.0F, 0.0F); + this.rightLeg = new ModelRendererObj(ResourceManager.armor_t51, "RightLeg").setRotationPoint(-1.9F, 12.0F, 0.0F); + this.leftFoot = new ModelRendererObj(ResourceManager.armor_t51, "LeftBoot").setRotationPoint(1.9F, 12.0F, 0.0F); + this.rightFoot = new ModelRendererObj(ResourceManager.armor_t51, "RightBoot").setRotationPoint(-1.9F, 12.0F, 0.0F); + } + + @Override + public void render(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor) { + + super.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scaleFactor, entity); + + GL11.glPushMatrix(); + GL11.glShadeModel(GL11.GL_SMOOTH); + + if(this.type == 0) { + bindTexture(ResourceManager.t51_helmet); + this.head.render(scaleFactor); + } + if(this.type == 1) { + bindTexture(ResourceManager.t51_chest); + this.body.render(scaleFactor); + + bindTexture(ResourceManager.t51_arm); + this.leftArm.render(scaleFactor); + this.rightArm.render(scaleFactor); + } + if(this.type == 2) { + bindTexture(ResourceManager.t51_leg); + this.leftLeg.render(scaleFactor); + this.rightLeg.render(scaleFactor); + } + if(this.type == 3) { + bindTexture(ResourceManager.t51_leg); + this.leftFoot.render(scaleFactor); + this.rightFoot.render(scaleFactor); + } + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/util/ArmorUtil.java b/src/main/java/com/hbm/util/ArmorUtil.java index c9e4f34cd..965258792 100644 --- a/src/main/java/com/hbm/util/ArmorUtil.java +++ b/src/main/java/com/hbm/util/ArmorUtil.java @@ -51,7 +51,8 @@ public class ArmorUtil { ArmorRegistry.registerHazard(ModItems.hazmat_helmet_grey, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.hazmat_paa_helmet, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.liquidator_helmet, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.t45_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.t45_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.t51_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.ajr_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.ajro_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.steamsuit_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); diff --git a/src/main/java/com/hbm/util/DamageResistanceHandler.java b/src/main/java/com/hbm/util/DamageResistanceHandler.java index 154891677..2c059c5b0 100644 --- a/src/main/java/com/hbm/util/DamageResistanceHandler.java +++ b/src/main/java/com/hbm/util/DamageResistanceHandler.java @@ -165,6 +165,12 @@ public class DamageResistanceHandler { .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) .addExact(DamageSource.fall.damageType, 0F, 1F) .setOther(0F, 0.1F)); + registerSet(ModItems.t51_helmet, ModItems.t51_plate, ModItems.t51_legs, ModItems.t51_boots, new ResistanceStats() + .addCategory(CATEGORY_PHYSICAL, 2F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) + .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) + .addExact(DamageSource.fall.damageType, 0F, 1F) + .setOther(0F, 0.1F)); registerSet(ModItems.ajr_helmet, ModItems.ajr_plate, ModItems.ajr_legs, ModItems.ajr_boots, new ResistanceStats() .addCategory(CATEGORY_PHYSICAL, 4F, 0.15F) .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) diff --git a/src/main/java/com/hbm/util/MobUtil.java b/src/main/java/com/hbm/util/MobUtil.java index c9d103684..2fd154891 100644 --- a/src/main/java/com/hbm/util/MobUtil.java +++ b/src/main/java/com/hbm/util/MobUtil.java @@ -92,23 +92,23 @@ public class MobUtil { })); slotPoolAdv.put(4, createSlotPool(new Object[][]{ - {ModItems.security_helmet, 10}, {ModItems.t45_helmet, 4}, {ModItems.asbestos_helmet, 12}, + {ModItems.security_helmet, 10}, {ModItems.t51_helmet, 4}, {ModItems.asbestos_helmet, 12}, {ModItems.liquidator_helmet, 4}, {ModItems.no9, 12}, {ModItems.hazmat_helmet, 6} })); slotPoolAdv.put(3, createSlotPool(new Object[][]{ {ModItems.liquidator_plate, 4}, {ModItems.security_plate, 8}, {ModItems.asbestos_plate, 12}, - {ModItems.t45_plate, 4}, {ModItems.hazmat_plate, 6}, + {ModItems.t51_plate, 4}, {ModItems.hazmat_plate, 6}, {ModItems.steel_plate, 8} })); slotPoolAdv.put(2, createSlotPool(new Object[][]{ {ModItems.liquidator_legs, 4}, {ModItems.security_legs, 8}, {ModItems.asbestos_legs, 12}, - {ModItems.t45_legs, 4}, {ModItems.hazmat_legs, 6}, + {ModItems.t51_legs, 4}, {ModItems.hazmat_legs, 6}, {ModItems.steel_legs, 8} })); slotPoolAdv.put(1, createSlotPool(new Object[][]{ {ModItems.liquidator_boots, 4}, {ModItems.security_boots, 8}, {ModItems.asbestos_boots, 12}, - {ModItems.t45_boots, 4}, {ModItems.hazmat_boots, 6}, + {ModItems.t51_boots, 4}, {ModItems.hazmat_boots, 6}, {ModItems.robes_boots, 8} })); slotPoolAdv.put(0, createSlotPool(new Object[][]{ diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index a631c58c2..1de98c6bb 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3464,6 +3464,10 @@ item.t45_helmet.name=T45-Powerrüstungshelm item.t45_kit.name=T45-Powerrüstungskit item.t45_legs.name=T45-Powerrüstungsbeinschutz item.t45_plate.name=T45-Powerrüstungsbrustpanzer +item.t51_boots.name=T-51b-Powerrüstungsstiefel +item.t51_helmet.name=T-51b-Powerrüstungshelm +item.t51_legs.name=T-51b-Powerrüstungsbeinschutz +item.t51_plate.name=T-51b-Powerrüstungsbrustpanzer item.tank_steel.name=Stahltank item.taurun_boots.name=Taurun-Stiefel item.taurun_helmet.name=Taurun-Helm diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index c1e263f80..2ddc6c297 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4584,6 +4584,10 @@ item.t45_helmet.name=T45 Power Armor Helmet item.t45_kit.name=T45 Power Armor Kit item.t45_legs.name=T45 Power Armor Leggings item.t45_plate.name=T45 Power Armor Chestplate +item.t51_boots.name=T-51b Power Armor Boots +item.t51_helmet.name=T-51b Power Armor Helmet +item.t51_legs.name=T-51b Power Armor Leggings +item.t51_plate.name=T-51b Power Armor Chestplate item.tank_steel.name=Steel Tank item.taurun_boots.name=Taurun Boots item.taurun_helmet.name=Taurun Helmet diff --git a/src/main/resources/assets/hbm/models/armor/t51.obj b/src/main/resources/assets/hbm/models/armor/t51.obj new file mode 100644 index 000000000..e6a65e4f5 --- /dev/null +++ b/src/main/resources/assets/hbm/models/armor/t51.obj @@ -0,0 +1,3123 @@ +# Blender v2.79 (sub 0) OBJ File: 't51_scaled.blend' +# www.blender.org +o Chest +v 4.249996 12.239999 2.250000 +v -4.250004 12.240001 2.250000 +v 4.249996 12.239999 -2.250000 +v -4.250004 12.240001 -2.250000 +v 4.249995 7.559998 2.250000 +v -4.250005 7.560001 2.250000 +v 4.249994 5.999998 -2.250000 +v -4.250006 6.000002 -2.250000 +v 4.249996 10.159999 -2.812500 +v -4.250004 10.160001 -2.812500 +v 4.249996 10.159999 2.812500 +v -4.250004 10.160001 2.812500 +v -4.781254 10.160002 2.250000 +v -4.781254 10.160002 -2.250000 +v 4.781246 10.159998 2.250000 +v 4.781246 10.159998 -2.250000 +v 4.249996 11.719998 -2.812500 +v -4.250004 11.720000 -2.812500 +v 4.249996 11.719998 2.812500 +v -4.250004 11.720000 2.812500 +v -4.781254 11.720001 2.250000 +v -4.781254 11.720001 -2.250000 +v 4.781246 11.719997 2.250000 +v 4.781246 11.719997 -2.250000 +v -2.125004 13.280001 -2.812500 +v -4.250006 6.000002 -2.812500 +v 2.124996 13.279999 -2.812500 +v -2.125004 13.280001 2.812500 +v 4.249994 5.999998 -2.812500 +v 2.124996 13.279999 2.812500 +v 4.249994 6.519999 2.812500 +v -4.250006 6.520002 2.812500 +v -4.781256 6.520002 2.250000 +v -4.781256 6.000002 -2.250000 +v 4.781244 6.519999 2.250000 +v 4.781244 5.999998 -2.250000 +v -4.250006 4.960001 -3.375000 +v 4.249994 4.959997 -3.375000 +v 4.249992 -0.240002 2.250000 +v -4.250008 -0.239998 2.250000 +v 4.249992 -0.240002 -2.250000 +v -4.250008 -0.239998 -2.250000 +v 4.249995 7.559998 2.812500 +v -4.250005 7.560001 2.812500 +v -4.781255 7.560001 2.250000 +v -4.781256 4.960001 -2.250000 +v 4.781245 7.559998 2.250000 +v 4.781244 4.959997 -2.250000 +v 2.124995 7.040001 3.375000 +v -2.125005 7.040001 3.375000 +v -0.531256 4.440001 3.375000 +v 0.531244 4.440001 3.375000 +v 2.124995 7.040001 2.250000 +v -2.125005 7.040001 2.250000 +v 3.187492 -0.240002 3.375000 +v 3.187494 5.999998 3.375000 +v 3.187492 -0.240002 2.250000 +v 3.187494 5.999998 2.250000 +v -3.187506 6.000002 3.375000 +v -3.187508 -0.239998 3.375000 +v -3.187506 6.000002 2.250000 +v -3.187508 -0.239998 2.250000 +v 0.531243 3.400000 3.375000 +v -0.531257 3.400000 3.375000 +v 0.531244 4.440001 4.500000 +v -0.531256 4.440001 4.500000 +v -0.531257 3.400000 4.500000 +v 0.531243 3.400000 4.500000 +v 1.195305 2.490000 4.218750 +v 1.460931 2.750000 4.218750 +v -1.195319 5.350000 4.218750 +v -1.460944 5.090000 4.218750 +v -1.195320 2.490000 4.218750 +v -1.460944 2.750000 4.218750 +v 1.195306 5.350000 4.218750 +v 1.460931 5.090000 4.218750 +v 2.124994 4.959999 4.500000 +v 1.062494 6.000000 4.500000 +v -1.062506 6.000000 4.500000 +v -2.125006 4.959999 4.500000 +v 1.062493 1.840000 4.500000 +v 2.124993 2.880001 4.500000 +v -2.125007 2.880001 4.500000 +v -1.062507 1.840000 4.500000 +v 1.062494 6.000000 3.937500 +v 2.124994 4.959999 3.937500 +v -2.125006 4.959999 3.937500 +v -1.062506 6.000000 3.937500 +v 2.124993 2.880001 3.937500 +v 1.062493 1.840000 3.937500 +v -1.062507 1.840000 3.937500 +v -2.125007 2.880001 3.937500 +v 1.593744 4.959999 4.500000 +v 1.062494 5.480000 4.500000 +v -1.062506 5.480000 4.500000 +v -1.593756 4.959999 4.500000 +v 1.062493 2.360001 4.500000 +v 1.593743 2.880001 4.500000 +v -1.593757 2.880001 4.500000 +v -1.062507 2.360001 4.500000 +v -1.062507 2.360001 3.937500 +v -1.593757 2.880001 3.937500 +v 1.593743 2.880001 3.937500 +v 1.062493 2.360001 3.937500 +v -1.593756 4.959999 3.937500 +v -1.062506 5.480000 3.937500 +v 1.062494 5.480000 3.937500 +v 1.593744 4.959999 3.937500 +vt 0.893333 0.253968 +vt 0.680000 0.126984 +vt 0.893333 0.126984 +vt 0.773333 0.746032 +vt 0.746667 0.761905 +vt 0.746667 0.746032 +vt 0.680000 0.253968 +vt 0.573333 0.396825 +vt 0.573333 0.253968 +vt 1.000000 0.396825 +vt 0.893333 0.444444 +vt 0.680000 0.444444 +vt 0.360000 0.396825 +vt 0.360000 0.253968 +vt 0.120000 0.396825 +vt 0.120000 0.269841 +vt 0.133333 0.253968 +vt 0.133333 0.158730 +vt 0.186667 0.000000 +vt 0.186667 0.158730 +vt 0.346667 0.253968 +vt 0.360000 0.206349 +vt 0.360000 0.253968 +vt 0.013333 0.253968 +vt -0.000000 0.206349 +vt 0.013333 0.206349 +vt 0.120000 0.206349 +vt 0.120000 0.253968 +vt 0.293333 0.158730 +vt 0.480000 0.253968 +vt 0.466667 0.206349 +vt 0.480000 0.206349 +vt 0.133333 0.206349 +vt 0.466667 0.253968 +vt 0.293333 0.507937 +vt 0.186667 0.507937 +vt 0.133333 0.412698 +vt 0.120000 0.015873 +vt 0.120000 0.142857 +vt 0.346667 -0.000000 +vt 0.346667 0.158730 +vt 0.360000 0.142857 +vt 0.360000 0.015873 +vt 0.293333 0.000000 +vt 0.573333 0.460317 +vt 0.360000 0.428571 +vt 0.573333 0.428571 +vt 0.360000 0.746032 +vt 0.573333 0.619048 +vt 0.573333 0.746032 +vt 0.573333 0.952381 +vt 0.360000 0.984127 +vt 0.360000 0.952381 +vt 0.186667 0.761905 +vt 0.160000 0.746032 +vt 0.186667 0.746032 +vt 0.706667 0.619048 +vt 0.733333 0.603175 +vt 0.733333 0.619048 +vt 0.200000 0.603175 +vt 0.226667 0.619048 +vt 0.200000 0.619048 +vt 0.360000 0.460317 +vt 0.226667 0.587302 +vt 0.360000 0.619048 +vt 0.706667 0.587302 +vt 0.840000 0.476190 +vt 0.946667 0.476190 +vt 0.973333 0.507937 +vt 0.813333 0.698413 +vt 0.786667 0.507937 +vt 0.813333 0.507937 +vt 1.000000 0.476190 +vt 0.973333 0.476190 +vt 0.973333 0.730159 +vt 0.973333 0.698413 +vt 0.946667 0.444444 +vt 0.813333 0.476190 +vt 0.786667 0.476190 +vt 1.000000 0.698413 +vt 0.773333 0.507937 +vt 0.746667 0.476190 +vt 0.773333 0.476190 +vt 0.720000 0.507937 +vt 0.720000 0.476190 +vt 0.720000 0.539683 +vt 0.746667 0.507937 +vt 0.746667 0.539683 +vt 0.693333 0.476190 +vt 0.693333 0.507937 +vt 0.746667 0.444444 +vt 0.720000 0.444444 +vt 0.573333 0.000000 +vt 0.546667 0.015873 +vt 0.560000 0.000000 +vt 0.493333 -0.000000 +vt 0.493333 0.015873 +vt 0.466667 0.000000 +vt 0.453333 0.015873 +vt 0.453333 -0.000000 +vt 0.400000 0.015873 +vt 0.400000 -0.000000 +vt 0.386667 0.000000 +vt 0.360000 0.015873 +vt 0.373333 0.000000 +vt 0.680000 -0.000000 +vt 0.733333 0.015873 +vt 0.680000 0.015873 +vt 0.653333 0.000000 +vt 0.666667 0.000000 +vt 0.640000 -0.000000 +vt 0.586667 0.015873 +vt 0.586667 -0.000000 +vt 0.573333 0.047619 +vt 0.546667 0.031746 +vt 0.586667 0.031746 +vt 0.493333 0.047619 +vt 0.546667 0.047619 +vt 0.466667 0.047619 +vt 0.493333 0.031746 +vt 0.480000 0.047619 +vt 0.453333 0.047619 +vt 0.400000 0.031746 +vt 0.453333 0.031746 +vt 0.360000 0.031746 +vt 0.386667 0.047619 +vt 0.373333 0.047619 +vt 0.733333 0.031746 +vt 0.680000 0.047619 +vt 0.680000 0.031746 +vt 0.653333 0.047619 +vt 0.640000 0.031746 +vt 0.640000 0.047619 +vt 0.586667 0.047619 +vt 0.573333 0.460317 +vt 0.666667 0.476190 +vt 0.573333 0.476190 +vt 0.573333 0.460317 +vt 0.666667 0.444444 +vt 0.666667 0.460317 +vt 0.346667 0.412698 +vt 0.360000 0.412698 +vt 0.573333 0.984127 +vt 0.573333 1.000000 +vt 0.146667 0.619048 +vt 0.146667 0.746032 +vt 0.786667 0.619048 +vt 0.786667 0.746032 +vt 0.773333 0.619048 +vt 0.160000 0.619048 +vt 0.186667 0.619048 +vt 0.773333 0.761905 +vt 1.000000 0.253968 +vt 0.346667 0.412698 +vt 0.360000 0.269841 +vt 0.360000 0.396825 +vt 0.133333 0.000000 +vt 0.346667 0.206349 +vt -0.000000 0.253968 +vt 0.133333 0.460317 +vt 0.346667 0.460317 +vt 0.160000 0.761905 +vt 0.786667 0.698413 +vt 1.000000 0.507937 +vt 0.813333 0.730159 +vt 0.840000 0.444444 +vt 0.546667 -0.000000 +vt 0.480000 0.000000 +vt 0.733333 -0.000000 +vt 0.640000 0.015873 +vt 0.560000 0.047619 +vt 0.400000 0.047619 +vt 0.733333 0.047619 +vt 0.666667 0.047619 +vt 0.666667 0.460317 +vt 0.573333 0.444444 +vt 0.573333 0.412698 +vt 0.586667 0.412698 +vt 0.586667 1.000000 +vt 0.360000 1.000000 +vt 0.346667 1.000000 +vt 0.746667 0.619048 +vt 0.546667 0.063492 +vt 0.733333 0.063492 +vt 0.453333 0.063492 +vt 0.653333 0.063492 +vt 0.666667 0.063492 +vt 0.373333 0.063492 +vt 0.466667 0.063492 +vt 0.480000 0.063492 +vt 0.560000 0.063492 +vt 0.640000 0.063492 +vt 0.493333 0.063492 +vt 0.680000 0.063492 +vt 0.400000 0.063492 +vt 0.386667 0.063492 +vt 0.573333 0.063492 +vt 0.586667 0.063492 +vn 0.0000 1.0000 0.0000 +vn 0.7270 0.0000 0.6866 +vn -1.0000 0.0000 0.0000 +vn 1.0000 -0.0000 -0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.5918 0.8061 0.0000 +vn 0.7270 -0.0000 -0.6866 +vn -0.7270 0.0000 0.6866 +vn -0.7270 0.0000 -0.6866 +vn 0.5918 0.8061 0.0000 +vn 0.0000 0.4757 -0.8796 +vn -0.0000 -0.2115 -0.9774 +vn -0.9004 -0.0920 -0.4252 +vn 0.9004 -0.0920 -0.4252 +vn -0.6995 0.7146 0.0000 +vn 0.6995 0.7146 0.0000 +vn 0.0000 0.9448 -0.3275 +vn -0.0000 -0.0829 0.9966 +vn -0.9948 -0.1016 0.0000 +vn 0.9948 -0.1016 0.0000 +vn 0.7258 -0.0570 0.6855 +vn -0.7258 -0.0570 0.6855 +vn 0.8811 0.2250 -0.4161 +vn -0.8811 0.2250 -0.4161 +vn -0.9966 -0.0783 0.0271 +vn 0.9966 -0.0783 0.0271 +vn 0.3777 0.9259 0.0000 +vn -0.3777 0.9259 0.0000 +vn -0.9218 0.3876 0.0000 +vn -0.9218 -0.3876 0.0000 +vn -0.3777 -0.9259 0.0000 +vn 0.3777 -0.9259 0.0000 +vn 0.9218 0.3876 0.0000 +vn 0.9218 -0.3876 0.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 47/4/2 31/5/2 35/6/2 +f 4/7/3 6/8/3 2/9/3 +f 3/1/4 5/10/4 7/11/4 +f 3/1/5 8/12/5 4/7/5 +f 2/9/6 5/13/6 1/14/6 +f 13/15/7 14/16/7 10/17/7 +f 18/18/8 28/19/8 25/20/8 +f 9/21/9 24/22/9 16/23/9 +f 13/24/10 20/25/10 21/26/10 +f 13/24/3 22/27/3 14/28/3 +f 25/20/5 27/29/5 9/21/5 +f 11/30/2 23/31/2 19/32/2 +f 14/28/11 18/33/11 10/17/11 +f 16/23/4 23/31/4 15/34/4 +f 30/35/6 28/36/6 12/37/6 +f 21/38/1 18/18/1 22/39/1 +f 27/29/12 19/40/12 17/41/12 +f 24/42/1 19/40/1 23/43/1 +f 25/20/1 30/44/1 27/29/1 +f 38/45/13 26/46/13 29/47/13 +f 40/48/7 41/49/7 39/50/7 +f 31/51/6 44/52/6 32/53/6 +f 32/54/10 45/55/10 33/56/10 +f 48/57/9 29/58/9 36/59/9 +f 26/60/11 46/61/11 34/62/11 +f 41/49/14 37/63/14 38/45/14 +f 46/61/15 37/64/15 42/65/15 +f 48/57/16 41/49/16 38/66/16 +f 49/67/6 50/68/6 59/69/6 +f 55/70/4 58/71/4 56/72/4 +f 54/73/17 59/69/17 50/74/17 +f 62/75/7 55/70/7 60/76/7 +f 49/67/1 54/77/1 50/68/1 +f 49/78/18 58/71/18 53/79/18 +f 59/69/3 62/80/3 60/76/3 +f 64/81/3 66/82/3 51/83/3 +f 66/82/6 68/84/6 65/85/6 +f 63/86/7 67/87/7 64/88/7 +f 52/89/4 68/84/4 63/90/4 +f 51/91/1 65/85/1 52/92/1 +f 103/93/5 90/94/5 104/95/5 +f 101/96/5 90/94/5 91/97/5 +f 102/98/5 91/97/5 92/99/5 +f 102/100/5 87/101/5 105/102/5 +f 105/103/5 88/104/5 106/105/5 +f 107/106/5 88/107/5 85/108/5 +f 85/108/5 108/109/5 107/110/5 +f 108/111/5 89/112/5 103/113/5 +f 98/114/6 81/115/6 82/116/6 +f 100/117/6 81/115/6 97/118/6 +f 99/119/6 84/120/6 100/121/6 +f 99/122/6 80/123/6 83/124/6 +f 79/125/6 96/126/6 95/127/6 +f 79/128/6 94/129/6 78/130/6 +f 78/130/6 93/131/6 77/132/6 +f 82/116/6 93/133/6 98/134/6 +f 75/135/6 73/136/6 76/137/6 +f 69/138/6 71/139/6 72/140/6 +f 26/46/1 34/141/1 8/142/1 +f 44/52/1 43/143/1 5/144/1 +f 8/145/19 45/55/19 6/146/19 +f 47/4/19 7/147/19 5/148/19 +f 35/6/4 36/149/4 47/4/4 +f 33/56/3 34/150/3 46/151/3 +f 40/48/20 31/51/20 32/53/20 +f 40/48/21 46/61/21 42/65/21 +f 48/57/22 39/50/22 41/49/22 +f 35/6/23 31/5/23 39/50/23 +f 33/56/24 40/48/24 32/54/24 +f 3/1/1 4/7/1 2/2/1 +f 47/4/2 43/152/2 31/5/2 +f 4/7/3 8/12/3 6/8/3 +f 3/1/4 1/153/4 5/10/4 +f 3/1/5 7/11/5 8/12/5 +f 2/9/6 6/8/6 5/13/6 +f 10/17/7 9/21/7 11/154/7 +f 9/21/7 16/155/7 11/154/7 +f 16/155/7 15/156/7 11/154/7 +f 11/154/7 12/37/7 10/17/7 +f 12/37/7 13/15/7 10/17/7 +f 18/18/8 20/157/8 28/19/8 +f 9/21/9 17/158/9 24/22/9 +f 13/24/10 12/159/10 20/25/10 +f 13/24/3 21/26/3 22/27/3 +f 17/158/5 9/21/5 27/29/5 +f 9/21/5 10/17/5 25/20/5 +f 10/17/5 18/33/5 25/20/5 +f 11/30/2 15/34/2 23/31/2 +f 14/28/11 22/27/11 18/33/11 +f 16/23/4 24/22/4 23/31/4 +f 20/160/6 12/37/6 28/36/6 +f 12/37/6 11/154/6 30/35/6 +f 11/154/6 19/161/6 30/35/6 +f 21/38/1 20/157/1 18/18/1 +f 27/29/12 30/44/12 19/40/12 +f 24/42/1 17/41/1 19/40/1 +f 25/20/1 28/19/1 30/44/1 +f 38/45/13 37/63/13 26/46/13 +f 40/48/7 42/65/7 41/49/7 +f 31/51/6 43/143/6 44/52/6 +f 32/54/10 44/162/10 45/55/10 +f 48/57/25 38/66/25 29/58/25 +f 26/60/26 37/64/26 46/61/26 +f 41/49/14 42/65/14 37/63/14 +f 59/69/6 60/76/6 55/70/6 +f 55/70/6 56/72/6 59/69/6 +f 56/72/6 49/67/6 59/69/6 +f 55/70/4 57/163/4 58/71/4 +f 54/73/17 61/164/17 59/69/17 +f 62/75/7 57/165/7 55/70/7 +f 49/67/1 53/166/1 54/77/1 +f 49/78/18 56/72/18 58/71/18 +f 59/69/3 61/164/3 62/80/3 +f 64/81/3 67/87/3 66/82/3 +f 66/82/6 67/87/6 68/84/6 +f 63/86/7 68/84/7 67/87/7 +f 52/89/4 65/85/4 68/84/4 +f 51/91/1 66/82/1 65/85/1 +f 103/93/5 89/112/5 90/94/5 +f 101/96/5 104/167/5 90/94/5 +f 102/98/5 101/168/5 91/97/5 +f 102/100/5 92/99/5 87/101/5 +f 105/103/5 87/101/5 88/104/5 +f 107/106/5 106/169/5 88/107/5 +f 85/108/5 86/170/5 108/109/5 +f 108/111/5 86/170/5 89/112/5 +f 98/114/6 97/171/6 81/115/6 +f 100/117/6 84/120/6 81/115/6 +f 99/119/6 83/124/6 84/120/6 +f 99/122/6 96/172/6 80/123/6 +f 79/125/6 80/123/6 96/126/6 +f 79/128/6 95/173/6 94/129/6 +f 78/130/6 94/174/6 93/131/6 +f 82/116/6 77/132/6 93/133/6 +f 75/135/6 74/175/6 73/136/6 +f 69/138/6 70/176/6 71/139/6 +f 8/142/1 7/177/1 26/46/1 +f 7/177/1 36/178/1 29/47/1 +f 26/46/1 7/177/1 29/47/1 +f 47/179/1 5/144/1 43/143/1 +f 5/144/1 6/180/1 44/52/1 +f 6/180/1 45/181/1 44/52/1 +f 8/145/19 34/150/19 45/55/19 +f 47/4/19 36/149/19 7/147/19 +f 35/6/4 48/182/4 36/149/4 +f 33/56/3 45/55/3 34/150/3 +f 40/48/20 39/50/20 31/51/20 +f 40/48/27 33/56/27 46/61/27 +f 48/57/28 35/6/28 39/50/28 +s 1 +f 78/130/29 88/107/30 79/128/30 +f 104/183/30 100/117/29 97/118/30 +f 80/123/31 92/99/32 83/124/32 +f 84/120/33 90/94/34 81/115/34 +f 78/130/29 86/170/35 85/108/29 +f 90/94/34 82/116/36 81/115/34 +f 92/99/32 84/120/33 83/124/32 +f 80/123/31 88/104/30 87/101/31 +f 82/116/36 86/170/35 77/132/35 +f 106/184/34 94/129/33 95/173/34 +f 102/185/35 96/172/36 99/122/35 +f 108/186/32 94/174/33 107/187/33 +f 96/126/36 106/188/34 95/127/34 +f 102/189/35 100/121/29 101/190/29 +f 98/114/31 104/191/30 97/171/30 +f 108/192/32 98/134/31 93/133/32 +f 78/130/29 85/108/29 88/107/30 +f 104/183/30 101/193/29 100/117/29 +f 80/123/31 87/101/31 92/99/32 +f 84/120/33 91/97/33 90/94/34 +f 78/130/29 77/132/35 86/170/35 +f 90/94/34 89/112/36 82/116/36 +f 92/99/32 91/97/33 84/120/33 +f 80/123/31 79/125/30 88/104/30 +f 82/116/36 89/112/36 86/170/35 +f 106/184/34 107/194/33 94/129/33 +f 102/185/35 105/195/36 96/172/36 +f 108/186/32 93/131/32 94/174/33 +f 96/126/36 105/196/36 106/188/34 +f 102/189/35 99/119/35 100/121/29 +f 98/114/31 103/197/31 104/191/30 +f 108/192/32 103/198/31 98/134/31 +o LeftArm +v 8.249992 -0.240002 2.250000 +v 8.249992 -0.240002 -2.250000 +v 3.749995 7.039999 -2.250000 +v 3.749995 7.039999 2.250000 +v 3.749992 -0.240002 -2.250000 +v 3.749992 -0.240002 2.250000 +v 8.249994 7.039999 -2.250000 +v 8.249994 7.039999 2.250000 +v 3.749996 11.199999 2.250000 +v 3.749996 11.199999 -2.250000 +v 8.249996 11.199997 -2.250000 +v 8.249996 11.199997 2.250000 +v 3.187496 11.199999 -2.812500 +v 3.187496 11.199999 2.812500 +v 8.812496 11.199997 -2.812500 +v 8.812496 11.199997 2.812500 +v 3.187495 7.039999 -2.812500 +v 3.187495 7.039999 2.812500 +v 8.812494 7.039997 -2.812500 +v 8.812494 7.039997 2.812500 +v 3.749996 12.239999 -2.250000 +v 3.749996 12.239999 2.250000 +v 8.249996 12.239997 -2.250000 +v 8.249996 12.239997 2.250000 +v 3.749994 5.999998 -2.250000 +v 3.749994 5.999998 2.250000 +v 8.249994 5.999998 -2.250000 +v 8.249994 5.999998 2.250000 +v 3.468744 5.999998 -2.531250 +v 3.468744 5.999998 2.531250 +v 8.531244 5.999998 -2.531250 +v 8.531244 5.999998 2.531250 +v 3.468743 2.359999 -2.531250 +v 3.468743 2.359999 2.531250 +v 8.531243 2.359999 -2.531250 +v 8.531243 2.359999 2.531250 +v 4.195994 0.683130 3.656250 +v 3.825352 2.550331 -2.531250 +v 9.656243 2.359997 2.531250 +v 9.656243 2.359997 -2.531250 +v 4.195994 0.683130 -3.656250 +v 3.825352 2.550331 -3.093750 +v 5.282662 0.952303 3.656250 +v 5.282662 0.952303 -3.656250 +v 3.825352 2.550331 2.531250 +v 3.825352 2.550331 3.093750 +v 3.262852 1.649666 -2.531250 +v 8.621385 -1.210335 -2.531250 +v 3.262852 1.649666 -3.093750 +v 9.108523 -1.470337 -3.093750 +v 8.621385 -1.210335 2.531250 +v 9.108523 -1.470337 3.093750 +v 3.262852 1.649666 2.531250 +v 3.262852 1.649666 3.093750 +v 4.086410 -1.191668 -2.531250 +v 6.522106 -2.491667 -2.531250 +v 4.086410 -1.191668 -3.093750 +v 7.009244 -2.751669 -3.093750 +v 6.522106 -2.491667 2.531250 +v 7.009244 -2.751669 3.093750 +v 4.086410 -1.191668 2.531250 +v 4.086410 -1.191668 3.093750 +v 9.746386 0.590996 -2.531250 +v 10.233524 0.330996 -3.093750 +v 9.746386 0.590996 2.531250 +v 10.233524 0.330996 3.093750 +v 4.991491 1.956867 3.656250 +v 3.904823 1.687695 3.656250 +v 4.991491 1.956867 -3.656250 +v 3.904823 1.687695 -3.656250 +vt 0.690476 0.298507 +vt 0.500000 0.328358 +vt 0.690476 0.328358 +vt 0.023810 0.119403 +vt 0.214286 0.000000 +vt 0.023810 0.000000 +vt 0.309524 0.522388 +vt 0.119048 0.641791 +vt 0.309524 0.641791 +vt 0.023810 0.149254 +vt 0.214286 0.119403 +vt 0.452381 0.149254 +vt 0.261905 0.119403 +vt 0.261905 0.149254 +vt 0.690476 0.149254 +vt 0.500000 0.119403 +vt 0.500000 0.149254 +vt -0.000000 0.164179 +vt 0.214286 0.149254 +vt 0.928571 0.149254 +vt 0.738095 0.119403 +vt 0.738095 0.149254 +vt 0.238095 0.164179 +vt 0.714286 0.164179 +vt 0.000000 0.283582 +vt 0.476190 0.164179 +vt 0.952381 0.283582 +vt 0.738095 0.298507 +vt 0.928571 0.298507 +vt 0.238095 0.283582 +vt 0.714286 0.283582 +vt 0.952381 0.164179 +vt 0.214286 0.298507 +vt 0.023810 0.298507 +vt 0.452381 0.298507 +vt 0.261905 0.298507 +vt 0.476190 0.283582 +vt 0.500000 0.298507 +vt 0.000000 0.328358 +vt 0.214286 0.343284 +vt 0.190476 0.328358 +vt 0.452381 0.328358 +vt 0.928571 0.328358 +vt 0.214286 0.328358 +vt 0.642857 0.343284 +vt 0.428571 0.447761 +vt 0.642857 0.447761 +vt 0.428571 0.343284 +vt 0.404762 0.328358 +vt 0.428571 0.328358 +vt 0.619048 0.328358 +vt 0.642857 0.328358 +vt 0.857143 0.343284 +vt 0.833333 0.328358 +vt 0.261905 0.865672 +vt -0.000000 0.865672 +vt -0.000000 0.880597 +vt 0.857143 0.447761 +vt -0.000000 0.343284 +vt 0.214286 0.447761 +vt 0.119048 0.522388 +vt 0.000000 0.656716 +vt 0.333333 0.447761 +vt 0.119048 0.447761 +vt 0.428571 0.656716 +vt 0.119048 0.716418 +vt 0.333333 0.716418 +vt 0.428571 0.597015 +vt 0.476190 0.447761 +vt -0.000000 0.731343 +vt 0.261905 0.731343 +vt -0.000000 0.716418 +vt 1.000000 0.940298 +vt 0.833333 0.880597 +vt 0.738095 0.970149 +vt 0.595238 0.731343 +vt 0.500000 0.865672 +vt 0.595238 0.865672 +vt 0.571429 0.089552 +vt 0.261905 0.119403 +vt 0.571429 0.119403 +vt 0.714286 0.940298 +vt 0.714286 0.970149 +vt 0.714286 0.626866 +vt 0.738095 0.656716 +vt 0.738095 0.626866 +vt 0.285714 0.716418 +vt 0.380952 0.880597 +vt 0.380952 0.716418 +vt 1.000000 0.656716 +vt 0.833333 0.716418 +vt 0.214286 -0.000000 +vt 0.261905 0.029851 +vt 0.261905 -0.000000 +vt 0.690476 0.865672 +vt 0.428571 0.656716 +vt 0.619048 0.716418 +vt 0.500000 0.731343 +vt 0.619048 0.731343 +vt 0.476190 0.880597 +vt 0.476190 0.716418 +vt 0.619048 0.880597 +vt 0.261905 0.059701 +vt 0.571429 0.029851 +vt 0.714286 0.865672 +vt 0.714286 0.880597 +vt 0.714286 0.716418 +vt 0.714286 0.731343 +vt 0.428571 0.940298 +vt 0.285714 0.880597 +vt 0.571429 -0.000000 +vt 0.619048 -0.000000 +vt 0.261905 0.089552 +vt 0.571429 0.059701 +vt 0.452381 0.119403 +vt 0.690476 0.119403 +vt 0.928571 0.119403 +vt 0.261905 0.328358 +vt 0.738095 0.328358 +vt 0.023810 0.328358 +vt 0.000000 0.447761 +vt -0.000000 0.507463 +vt 0.071429 0.447761 +vt 0.428571 0.507463 +vt 0.071429 0.716418 +vt 0.476190 0.597015 +vt 0.738095 0.940298 +vt 1.000000 1.000000 +vt 0.952381 0.880597 +vt 0.714286 0.656716 +vt 0.952381 0.716418 +vt 1.000000 0.597015 +vt 0.214286 0.029851 +vt 0.690476 0.731343 +vt 0.428571 0.597015 +vt 0.619048 0.865672 +vt 0.428571 1.000000 +vt 0.619048 0.029851 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.3142 0.9494 0.0000 +vn 0.8796 -0.4757 0.0000 +vn 0.0000 -0.1075 -0.9942 +vn -0.9942 -0.1075 0.0000 +vn 0.0000 -0.1075 0.9942 +vn -0.5210 0.8536 0.0000 +vn 0.2404 -0.9707 0.0000 +vn -0.8482 0.5297 0.0000 +vn 0.8482 -0.5297 0.0000 +vn -0.4709 -0.8822 0.0000 +vn -0.2404 0.9707 0.0000 +vn -0.9605 -0.2784 0.0000 +vn 0.5210 -0.8536 0.0000 +vn 0.4709 0.8822 0.0000 +vn 0.9605 0.2784 0.0000 +vn 0.3235 0.9340 0.1516 +vn 0.3235 0.9340 -0.1516 +s off +f 111/199/37 135/200/37 133/201/37 +f 130/202/38 131/203/38 129/204/38 +f 113/205/39 109/206/39 114/207/39 +f 117/208/40 132/209/40 130/202/40 +f 119/210/41 132/211/41 120/212/41 +f 118/213/37 131/214/37 119/215/37 +f 122/216/38 120/217/38 117/208/38 +f 117/218/42 129/219/42 118/220/42 +f 124/221/38 119/210/38 120/212/38 +f 121/222/38 117/218/38 118/220/38 +f 126/223/40 124/221/40 122/216/40 +f 123/224/38 118/213/38 119/215/38 +f 126/225/39 111/226/39 112/227/39 +f 128/228/41 123/224/41 124/221/41 +f 123/224/37 125/229/37 121/222/37 +f 125/229/42 122/230/42 121/222/42 +f 116/231/39 126/223/39 112/232/39 +f 115/233/39 128/228/39 116/234/39 +f 111/199/39 127/235/39 115/236/39 +f 134/237/38 140/238/38 136/239/38 +f 116/234/41 135/240/41 115/233/41 +f 111/226/42 134/241/42 112/227/42 +f 112/232/40 136/242/40 116/231/40 +f 137/243/37 143/244/37 141/245/37 +f 136/242/38 139/246/38 135/247/38 +f 135/248/38 137/243/38 133/249/38 +f 133/250/38 138/251/38 134/252/38 +f 173/253/43 153/254/43 154/255/43 +f 137/243/42 142/256/42 138/251/42 +f 138/257/40 144/258/40 140/238/40 +f 140/238/41 143/244/41 139/246/41 +f 110/259/44 147/260/44 109/206/44 +f 113/205/45 141/261/45 143/262/45 +f 142/263/46 113/205/46 114/207/46 +f 109/206/47 144/264/47 142/265/47 +f 144/266/38 148/267/38 143/244/38 +f 146/268/43 171/269/43 150/270/43 +f 159/271/37 169/272/37 153/273/37 +f 156/274/48 167/275/48 159/276/48 +f 145/277/49 152/278/49 151/279/49 +f 153/273/50 162/280/50 154/281/50 +f 150/282/50 155/283/50 146/284/50 +f 172/285/51 160/286/51 158/287/51 +f 156/288/40 146/284/40 163/289/40 +f 149/290/37 177/291/37 152/292/37 +f 173/293/50 156/274/50 159/276/50 +f 158/294/37 165/295/37 150/282/37 +f 165/295/52 164/296/52 163/297/52 +f 168/298/52 164/296/52 166/299/52 +f 170/300/52 167/275/52 168/298/52 +f 178/301/53 175/302/53 177/291/53 +f 161/303/54 170/300/54 162/304/54 +f 160/286/55 166/299/55 158/287/55 +f 157/305/54 163/297/54 155/306/54 +f 160/307/40 154/281/40 170/300/40 +f 171/269/56 174/308/56 172/285/56 +f 177/291/57 151/309/57 152/292/57 +f 175/302/40 145/310/40 151/309/40 +f 149/311/54 176/312/54 178/301/54 +f 174/308/58 173/253/58 154/255/58 +f 171/269/59 172/285/59 150/270/59 +f 111/199/37 115/236/37 135/200/37 +f 130/202/38 132/209/38 131/203/38 +f 113/205/39 110/259/39 109/206/39 +f 117/208/40 120/217/40 132/209/40 +f 119/210/41 131/313/41 132/211/41 +f 118/213/37 129/314/37 131/214/37 +f 122/216/38 124/221/38 120/217/38 +f 117/218/42 130/315/42 129/219/42 +f 124/221/38 123/224/38 119/210/38 +f 121/222/38 122/230/38 117/218/38 +f 126/223/40 128/228/40 124/221/40 +f 123/224/38 121/222/38 118/213/38 +f 126/225/39 125/229/39 111/226/39 +f 128/228/41 127/235/41 123/224/41 +f 123/224/37 127/235/37 125/229/37 +f 125/229/42 126/225/42 122/230/42 +f 116/231/39 128/228/39 126/223/39 +f 115/233/39 127/235/39 128/228/39 +f 111/199/39 125/229/39 127/235/39 +f 134/237/38 138/257/38 140/238/38 +f 116/234/41 136/316/41 135/240/41 +f 111/226/42 133/317/42 134/241/42 +f 112/232/40 134/318/40 136/242/40 +f 137/243/37 139/246/37 143/244/37 +f 136/242/38 140/238/38 139/246/38 +f 135/248/38 139/246/38 137/243/38 +f 133/250/38 137/243/38 138/251/38 +f 137/243/42 141/245/42 142/256/42 +f 138/257/40 142/319/40 144/258/40 +f 140/238/41 144/258/41 143/244/41 +f 110/259/44 148/320/44 147/260/44 +f 148/321/45 110/259/45 143/262/45 +f 110/259/45 113/205/45 143/262/45 +f 142/263/46 141/322/46 113/205/46 +f 142/265/47 114/207/47 109/206/47 +f 109/206/47 147/323/47 144/264/47 +f 144/266/38 147/324/38 148/267/38 +f 161/325/37 153/273/37 169/272/37 +f 153/273/37 173/326/37 159/271/37 +f 159/271/37 167/327/37 169/272/37 +f 156/274/48 164/296/48 167/275/48 +f 145/277/49 149/311/49 152/278/49 +f 153/273/50 161/325/50 162/280/50 +f 150/282/50 157/328/50 155/283/50 +f 172/285/51 174/308/51 160/286/51 +f 164/329/40 156/288/40 163/289/40 +f 156/288/40 171/330/40 146/284/40 +f 163/289/40 146/284/40 155/283/40 +f 149/290/37 178/331/37 177/291/37 +f 173/293/50 171/332/50 156/274/50 +f 157/328/37 150/282/37 165/295/37 +f 150/282/37 172/333/37 158/294/37 +f 158/294/37 166/299/37 165/295/37 +f 165/295/52 166/299/52 164/296/52 +f 168/298/52 167/275/52 164/296/52 +f 170/300/52 169/334/52 167/275/52 +f 178/301/53 176/312/53 175/302/53 +f 161/303/54 169/334/54 170/300/54 +f 160/286/55 168/298/55 166/299/55 +f 157/305/54 165/295/54 163/297/54 +f 168/298/40 160/307/40 170/300/40 +f 160/307/40 174/335/40 154/281/40 +f 170/300/40 154/281/40 162/280/40 +f 171/269/56 173/253/56 174/308/56 +f 177/291/57 175/302/57 151/309/57 +f 175/302/40 176/336/40 145/310/40 +f 149/311/54 145/277/54 176/312/54 +o RightArm +v -8.250008 -0.239998 2.250000 +v -8.250008 -0.239998 -2.250000 +v -3.750005 7.040003 -2.250000 +v -3.750005 7.040003 2.250000 +v -3.750008 -0.239998 -2.250000 +v -3.750008 -0.239998 2.250000 +v -8.250006 7.040003 -2.250000 +v -8.250006 7.040003 2.250000 +v -3.750004 11.200001 2.250000 +v -3.750004 11.200001 -2.250000 +v -8.250004 11.200003 -2.250000 +v -8.250004 11.200003 2.250000 +v -3.187504 11.200001 -2.812500 +v -3.187504 11.200001 2.812500 +v -8.812504 11.200003 -2.812500 +v -8.812504 11.200003 2.812500 +v -3.187505 7.040003 -2.812500 +v -3.187505 7.040003 2.812500 +v -8.812506 7.040005 -2.812500 +v -8.812506 7.040005 2.812500 +v -3.750004 12.240001 -2.250000 +v -3.750004 12.240001 2.250000 +v -8.250004 12.240003 -2.250000 +v -8.250004 12.240003 2.250000 +v -3.750006 6.000002 -2.250000 +v -3.750006 6.000002 2.250000 +v -8.250006 6.000002 -2.250000 +v -8.250006 6.000002 2.250000 +v -3.468756 6.000002 -2.531250 +v -3.468756 6.000002 2.531250 +v -8.531256 6.000002 -2.531250 +v -8.531256 6.000002 2.531250 +v -3.468757 2.360003 -2.531250 +v -3.468757 2.360003 2.531250 +v -8.531257 2.360003 -2.531250 +v -8.531257 2.360003 2.531250 +v -4.196010 0.683134 3.656250 +v -3.825366 2.550335 -2.531250 +v -9.656257 2.360004 2.531250 +v -9.656257 2.360004 -2.531250 +v -4.196010 0.683134 -3.656250 +v -3.825366 2.550335 -3.093750 +v -5.282678 0.952307 3.656250 +v -5.282678 0.952307 -3.656250 +v -3.825366 2.550335 2.531250 +v -3.825366 2.550335 3.093750 +v -3.262867 1.649670 -2.531250 +v -8.621402 -1.210331 -2.531250 +v -3.262867 1.649670 -3.093750 +v -9.108541 -1.470329 -3.093750 +v -8.621402 -1.210331 2.531250 +v -9.108541 -1.470329 3.093750 +v -3.262867 1.649670 2.531250 +v -3.262867 1.649670 3.093750 +v -4.086426 -1.191664 -2.531250 +v -6.522123 -2.491663 -2.531250 +v -4.086426 -1.191664 -3.093750 +v -7.009262 -2.751665 -3.093750 +v -6.522123 -2.491663 2.531250 +v -7.009262 -2.751665 3.093750 +v -4.086426 -1.191664 2.531250 +v -4.086426 -1.191664 3.093750 +v -9.746401 0.591003 -2.531250 +v -10.233540 0.331003 -3.093750 +v -9.746401 0.591003 2.531250 +v -10.233540 0.331003 3.093750 +v -4.991505 1.956871 3.656250 +v -3.904837 1.687698 3.656250 +v -4.991505 1.956871 -3.656250 +v -3.904837 1.687698 -3.656250 +vt 0.690476 0.328358 +vt 0.500000 0.298507 +vt 0.690476 0.298507 +vt 0.214286 0.000000 +vt 0.023810 0.119403 +vt 0.023810 0.000000 +vt 0.119048 0.641791 +vt 0.309524 0.522388 +vt 0.309524 0.641791 +vt 0.214286 0.149254 +vt 0.023810 0.149254 +vt 0.261905 0.119403 +vt 0.452381 0.149254 +vt 0.261905 0.149254 +vt 0.500000 0.149254 +vt 0.690476 0.119403 +vt 0.690476 0.149254 +vt -0.000000 0.164179 +vt 0.738095 0.119403 +vt 0.928571 0.149254 +vt 0.738095 0.149254 +vt 0.238095 0.164179 +vt 0.714286 0.164179 +vt 0.000000 0.283582 +vt 0.476190 0.164179 +vt 0.738095 0.298507 +vt 0.952381 0.283582 +vt 0.928571 0.298507 +vt 0.238095 0.283582 +vt 0.476190 0.283582 +vt 0.952381 0.164179 +vt 0.714286 0.283582 +vt 0.214286 0.298507 +vt 0.023810 0.298507 +vt 0.452381 0.298507 +vt 0.261905 0.298507 +vt 0.214286 0.343284 +vt 0.000000 0.328358 +vt 0.190476 0.328358 +vt 0.452381 0.328358 +vt 0.928571 0.328358 +vt 0.214286 0.328358 +vt 0.642857 0.447761 +vt 0.428571 0.343284 +vt 0.642857 0.343284 +vt 0.404762 0.328358 +vt 0.428571 0.328358 +vt 0.619048 0.328358 +vt 0.857143 0.343284 +vt 0.642857 0.328358 +vt 0.833333 0.328358 +vt 0.261905 0.865672 +vt -0.000000 0.880597 +vt -0.000000 0.865672 +vt 0.857143 0.447761 +vt 0.000000 0.447761 +vt -0.000000 0.343284 +vt 0.428571 0.447761 +vt 0.000000 0.656716 +vt 0.119048 0.522388 +vt 0.119048 0.447761 +vt 0.333333 0.447761 +vt 0.428571 0.656716 +vt 0.333333 0.716418 +vt 0.119048 0.716418 +vt 0.476190 0.447761 +vt 0.428571 0.597015 +vt -0.000000 0.731343 +vt -0.000000 0.716418 +vt 0.261905 0.731343 +vt 0.833333 0.880597 +vt 0.952381 0.880597 +vt 1.000000 0.940298 +vt 0.500000 0.865672 +vt 0.595238 0.731343 +vt 0.595238 0.865672 +vt 0.261905 0.119403 +vt 0.571429 0.089552 +vt 0.571429 0.119403 +vt 0.714286 0.940298 +vt 0.738095 0.970149 +vt 0.714286 0.970149 +vt 0.738095 0.656716 +vt 0.714286 0.626866 +vt 0.738095 0.626866 +vt 0.380952 0.880597 +vt 0.285714 0.716418 +vt 0.380952 0.716418 +vt 1.000000 0.656716 +vt 0.833333 0.716418 +vt 0.261905 0.029851 +vt 0.214286 -0.000000 +vt 0.261905 -0.000000 +vt 0.690476 0.865672 +vt 0.619048 0.716418 +vt 0.476190 0.716418 +vt 0.428571 0.656716 +vt 0.500000 0.731343 +vt 0.619048 0.731343 +vt 0.476190 0.880597 +vt 0.619048 0.880597 +vt 0.571429 0.029851 +vt 0.261905 0.059701 +vt 0.714286 0.865672 +vt 0.714286 0.880597 +vt 0.714286 0.716418 +vt 0.714286 0.731343 +vt 0.428571 0.940298 +vt 0.285714 0.880597 +vt 0.571429 -0.000000 +vt 0.619048 -0.000000 +vt 0.619048 0.029851 +vt 0.571429 0.059701 +vt 0.261905 0.089552 +vt 0.500000 0.328358 +vt 0.214286 0.119403 +vt 0.452381 0.119403 +vt 0.500000 0.119403 +vt 0.928571 0.119403 +vt 0.261905 0.328358 +vt 0.738095 0.328358 +vt 0.023810 0.328358 +vt 0.214286 0.447761 +vt -0.000000 0.507463 +vt 0.071429 0.447761 +vt 0.428571 0.507463 +vt 0.071429 0.716418 +vt 0.476190 0.597015 +vt 1.000000 1.000000 +vt 0.738095 0.940298 +vt 0.714286 0.656716 +vt 1.000000 0.597015 +vt 0.952381 0.716418 +vt 0.214286 0.029851 +vt 0.690476 0.731343 +vt 0.428571 0.597015 +vt 0.619048 0.865672 +vt 0.428571 1.000000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn -0.3142 0.9494 0.0000 +vn -0.8796 -0.4757 0.0000 +vn 0.0000 -0.1075 -0.9942 +vn 0.9942 -0.1075 0.0000 +vn 0.0000 -0.1075 0.9942 +vn 0.5210 0.8536 0.0000 +vn -0.2404 -0.9707 0.0000 +vn 0.8482 0.5297 0.0000 +vn -0.8482 -0.5297 0.0000 +vn 0.4709 -0.8822 0.0000 +vn 0.2404 0.9707 0.0000 +vn 0.9605 -0.2784 0.0000 +vn -0.5210 -0.8536 0.0000 +vn -0.4709 0.8822 0.0000 +vn -0.9605 0.2784 0.0000 +vn -0.3235 0.9340 0.1516 +vn -0.3235 0.9340 -0.1516 +s off +f 203/337/60 185/338/60 181/339/60 +f 201/340/61 200/341/61 199/342/61 +f 179/343/62 183/344/62 184/345/62 +f 200/341/63 190/346/63 187/347/63 +f 202/348/64 189/349/64 190/350/64 +f 189/351/60 199/352/60 188/353/60 +f 190/346/61 192/354/61 187/347/61 +f 199/355/65 187/356/65 188/357/65 +f 189/349/61 194/358/61 190/350/61 +f 187/356/61 191/359/61 188/357/61 +f 194/358/63 196/360/63 192/354/63 +f 188/353/61 193/361/61 189/351/61 +f 181/362/62 196/363/62 182/364/62 +f 193/361/64 198/365/64 194/358/64 +f 191/359/60 197/366/60 193/361/60 +f 192/367/65 195/368/65 191/359/65 +f 196/360/62 186/369/62 182/370/62 +f 198/365/62 185/371/62 186/372/62 +f 197/366/62 181/339/62 185/338/62 +f 210/373/61 204/374/61 206/375/61 +f 205/376/64 186/372/64 185/371/64 +f 204/377/65 181/362/65 182/364/65 +f 206/378/63 182/370/63 186/369/63 +f 211/379/60 209/380/60 207/381/60 +f 209/380/61 206/378/61 205/382/61 +f 207/381/61 205/383/61 203/384/61 +f 208/385/61 203/386/61 204/387/61 +f 243/388/66 224/389/66 223/390/66 +f 212/391/65 207/381/65 208/385/65 +f 210/373/63 212/392/63 208/393/63 +f 213/394/64 210/373/64 209/380/64 +f 217/395/67 180/396/67 179/343/67 +f 213/397/68 211/398/68 183/344/68 +f 183/344/69 212/399/69 184/345/69 +f 212/400/70 214/401/70 179/343/70 +f 218/402/61 214/403/61 213/394/61 +f 216/404/66 220/405/66 241/406/66 +f 239/407/60 237/408/60 229/409/60 +f 237/410/71 226/411/71 229/412/71 +f 222/413/72 215/414/72 221/415/72 +f 232/416/73 223/417/73 224/418/73 +f 225/419/73 220/420/73 216/421/73 +f 230/422/74 242/423/74 228/424/74 +f 226/425/63 233/426/63 216/421/63 +f 247/427/60 219/428/60 222/429/60 +f 226/411/73 243/430/73 229/412/73 +f 235/431/60 236/432/60 228/433/60 +f 234/434/75 235/431/75 233/435/75 +f 234/434/75 238/436/75 236/432/75 +f 237/410/75 240/437/75 238/436/75 +f 245/438/76 248/439/76 247/427/76 +f 240/437/77 231/440/77 232/441/77 +f 236/432/78 230/422/78 228/424/78 +f 233/435/77 227/442/77 225/443/77 +f 230/444/63 240/437/63 224/418/63 +f 244/445/79 241/406/79 242/423/79 +f 221/446/80 247/427/80 222/429/80 +f 245/438/63 215/447/63 246/448/63 +f 246/449/77 219/450/77 248/439/77 +f 244/445/81 224/389/81 243/388/81 +f 241/406/82 220/405/82 242/423/82 +f 203/337/60 205/451/60 185/338/60 +f 201/340/61 202/452/61 200/341/61 +f 179/343/62 180/396/62 183/344/62 +f 200/341/63 202/452/63 190/346/63 +f 202/348/64 201/453/64 189/349/64 +f 189/351/60 201/454/60 199/352/60 +f 190/346/61 194/358/61 192/354/61 +f 199/355/65 200/455/65 187/356/65 +f 189/349/61 193/361/61 194/358/61 +f 187/356/61 192/367/61 191/359/61 +f 194/358/63 198/365/63 196/360/63 +f 188/353/61 191/359/61 193/361/61 +f 181/362/62 195/368/62 196/363/62 +f 193/361/64 197/366/64 198/365/64 +f 191/359/60 195/368/60 197/366/60 +f 192/367/65 196/363/65 195/368/65 +f 196/360/62 198/365/62 186/369/62 +f 198/365/62 197/366/62 185/371/62 +f 197/366/62 195/368/62 181/339/62 +f 210/373/61 208/393/61 204/374/61 +f 205/376/64 206/456/64 186/372/64 +f 204/377/65 203/457/65 181/362/65 +f 206/378/63 204/458/63 182/370/63 +f 211/379/60 213/394/60 209/380/60 +f 209/380/61 210/373/61 206/378/61 +f 207/381/61 209/380/61 205/383/61 +f 208/385/61 207/381/61 203/386/61 +f 212/391/65 211/379/65 207/381/65 +f 210/373/63 214/459/63 212/392/63 +f 213/394/64 214/459/64 210/373/64 +f 217/395/67 218/460/67 180/396/67 +f 183/344/68 180/396/68 213/397/68 +f 180/396/68 218/461/68 213/397/68 +f 183/344/69 211/462/69 212/399/69 +f 179/343/70 184/345/70 212/400/70 +f 214/401/70 217/463/70 179/343/70 +f 218/402/61 217/464/61 214/403/61 +f 243/465/60 223/417/60 229/409/60 +f 223/417/60 231/466/60 239/407/60 +f 229/409/60 223/417/60 239/407/60 +f 237/410/71 234/434/71 226/411/71 +f 222/413/72 219/450/72 215/414/72 +f 232/416/73 231/466/73 223/417/73 +f 225/419/73 227/467/73 220/420/73 +f 230/422/74 244/445/74 242/423/74 +f 241/468/63 226/425/63 216/421/63 +f 226/425/63 234/469/63 233/426/63 +f 216/421/63 233/426/63 225/419/63 +f 247/427/60 248/470/60 219/428/60 +f 226/411/73 241/471/73 243/430/73 +f 242/472/60 220/420/60 228/433/60 +f 220/420/60 227/467/60 235/431/60 +f 228/433/60 220/420/60 235/431/60 +f 234/434/75 236/432/75 235/431/75 +f 234/434/75 237/410/75 238/436/75 +f 237/410/75 239/473/75 240/437/75 +f 245/438/76 246/449/76 248/439/76 +f 240/437/77 239/473/77 231/440/77 +f 236/432/78 238/436/78 230/422/78 +f 233/435/77 235/431/77 227/442/77 +f 244/474/63 230/444/63 224/418/63 +f 230/444/63 238/436/63 240/437/63 +f 224/418/63 240/437/63 232/416/63 +f 244/445/79 243/388/79 241/406/79 +f 221/446/80 245/438/80 247/427/80 +f 245/438/63 221/446/63 215/447/63 +f 246/449/77 215/414/77 219/450/77 +o LeftLeg +v -0.531253 14.360001 -2.531250 +v -0.531253 14.360001 2.531250 +v 4.531246 11.759998 2.531250 +v 4.531246 11.759998 -2.531250 +v -0.531252 17.480000 -2.531250 +v 4.531248 17.480000 -2.531250 +v -0.531252 17.480000 2.531250 +v 4.531248 17.480000 2.531250 +v 4.249998 18.519999 2.250000 +v -0.250002 18.520000 2.250000 +v 4.249998 18.519999 -2.250000 +v -0.250002 18.520000 -2.250000 +v 4.249998 17.480000 2.250000 +v -0.250002 17.480000 2.250000 +v 4.249998 17.480000 -2.250000 +v -0.250002 17.480000 -2.250000 +v 4.249996 12.280000 2.250000 +v -0.250003 14.360001 2.250000 +v 4.249996 12.280000 -2.250000 +v -0.250003 14.360001 -2.250000 +v 4.249996 11.759999 2.250000 +v -0.250004 11.760000 2.250000 +v 4.249996 11.759999 -2.250000 +v -0.250004 11.760000 -2.250000 +v 3.687498 19.039999 -2.250000 +v 0.312498 19.040001 -2.250000 +v 3.687498 16.959999 -2.250000 +v 0.312498 16.959999 -2.250000 +v 3.124998 16.959999 -2.812500 +v 3.124998 19.039999 -2.812500 +v 0.874998 19.039999 -2.812500 +v 0.874998 16.959999 -2.812500 +v 2.562498 17.480000 -2.531250 +v 2.562498 18.519999 -2.531250 +v 1.437498 18.520000 -2.531250 +v 1.437498 17.480000 -2.531250 +vt 0.750000 0.452830 +vt 1.000000 0.566038 +vt 1.000000 0.452830 +vt 0.250000 0.452830 +vt 0.000000 0.566038 +vt 0.250000 0.660377 +vt 0.500000 0.452830 +vt 0.750000 0.566038 +vt 0.500000 0.660377 +vt 0.250000 0.830189 +vt 0.750000 0.396226 +vt 0.972222 0.433962 +vt 0.972222 0.396226 +vt 0.250000 0.396226 +vt 0.472222 0.433962 +vt 0.472222 0.396226 +vt 0.722222 0.396226 +vt 0.500000 0.433962 +vt 0.722222 0.433962 +vt -0.000000 0.396226 +vt 0.222222 0.433962 +vt 0.222222 0.396226 +vt 0.750000 0.433962 +vt -0.000000 0.433962 +vt 0.000000 0.452830 +vt 0.250000 0.433962 +vt 0.888889 0.754717 +vt 0.750000 0.905660 +vt 0.888889 0.905660 +vt 0.500000 0.905660 +vt 0.527778 0.754717 +vt 0.500000 0.754717 +vt 0.527778 0.735849 +vt 0.750000 0.754717 +vt 0.750000 0.660377 +vt 0.527778 0.924528 +vt 0.527778 0.905660 +vt 0.888889 0.603774 +vt 0.944444 0.641509 +vt 0.944444 0.603774 +vt 0.972222 0.584906 +vt 0.972222 0.660377 +vt 0.833333 0.566038 +vt 1.000000 0.566038 +vt 1.000000 0.660377 +vt 0.833333 0.660377 +vt 0.861111 0.584906 +vt 0.833333 0.584906 +vt 1.000000 0.679245 +vt 0.861111 0.660377 +vt 0.833333 0.679245 +vt 0.888889 0.641509 +vt 0.500000 0.830189 +vt 0.500000 0.396226 +vt 0.750000 1.000000 +vt 1.000000 0.584906 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 -0.0000 0.0000 +vn -0.4569 -0.8895 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.0000 -1.0000 0.0000 +vn 0.4472 -0.0000 -0.8944 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn -0.4472 0.0000 -0.8944 +vn 0.0000 0.4757 -0.8796 +vn 0.0000 -0.4757 -0.8796 +s off +f 253/475/83 250/476/83 255/477/83 +f 256/478/84 250/479/84 251/480/84 +f 254/481/85 249/482/85 253/475/85 +f 256/478/86 252/483/86 254/481/86 +f 250/484/87 252/483/87 251/480/87 +f 260/485/83 262/486/83 258/487/83 +f 257/488/86 263/489/86 259/490/86 +f 260/491/85 263/492/85 264/493/85 +f 258/494/84 261/495/84 257/496/84 +f 253/475/88 263/492/88 254/481/88 +f 255/477/88 264/497/88 253/475/88 +f 256/478/88 262/498/88 255/499/88 +f 254/481/88 261/500/88 256/478/88 +f 268/501/83 270/502/83 266/503/83 +f 265/504/86 271/505/86 267/506/86 +f 267/507/85 272/508/85 268/509/85 +f 265/510/84 270/502/84 269/511/84 +f 269/511/89 272/508/89 271/505/89 +f 282/512/85 284/513/85 283/514/85 +f 279/515/90 284/513/90 280/516/90 +f 273/517/88 279/515/88 274/518/88 +f 276/519/91 279/515/91 280/516/91 +f 275/520/92 278/521/92 273/522/92 +f 276/523/89 277/524/89 275/525/89 +f 277/524/93 282/512/93 278/521/93 +f 277/524/94 284/513/94 281/526/94 +f 278/521/95 283/514/95 279/515/95 +f 253/475/83 249/482/83 250/476/83 +f 256/478/84 255/499/84 250/479/84 +f 254/481/85 252/483/85 249/482/85 +f 256/478/86 251/480/86 252/483/86 +f 250/484/87 249/527/87 252/483/87 +f 260/485/83 264/497/83 262/486/83 +f 257/488/86 261/500/86 263/489/86 +f 260/491/85 259/528/85 263/492/85 +f 258/494/84 262/498/84 261/495/84 +f 253/475/88 264/493/88 263/492/88 +f 255/477/88 262/486/88 264/497/88 +f 256/478/88 261/495/88 262/498/88 +f 254/481/88 263/489/88 261/500/88 +f 268/501/83 272/508/83 270/502/83 +f 265/504/86 269/511/86 271/505/86 +f 267/507/85 271/505/85 272/508/85 +f 265/510/84 266/529/84 270/502/84 +f 269/511/89 270/502/89 272/508/89 +f 282/512/85 281/526/85 284/513/85 +f 279/515/90 283/514/90 284/513/90 +f 273/517/88 278/521/88 279/515/88 +f 276/519/91 274/530/91 279/515/91 +f 275/520/92 277/524/92 278/521/92 +f 276/523/89 280/516/89 277/524/89 +f 277/524/93 281/526/93 282/512/93 +f 277/524/94 280/516/94 284/513/94 +f 278/521/95 282/512/95 283/514/95 +o RightLeg +v 0.531247 14.360001 -2.531250 +v 0.531247 14.360001 2.531250 +v -4.531254 11.760002 2.531250 +v -4.531254 11.760002 -2.531250 +v 0.531248 17.480000 -2.531250 +v -4.531252 17.480001 -2.531250 +v 0.531248 17.480000 2.531250 +v -4.531252 17.480001 2.531250 +v -4.250002 18.520000 2.250000 +v 0.249998 18.520000 2.250000 +v -4.250002 18.520000 -2.250000 +v 0.249998 18.520000 -2.250000 +v -4.250002 17.480001 2.250000 +v 0.249998 17.480000 2.250000 +v -4.250002 17.480001 -2.250000 +v 0.249998 17.480000 -2.250000 +v -4.250004 12.280002 2.250000 +v 0.249997 14.360001 2.250000 +v -4.250004 12.280002 -2.250000 +v 0.249997 14.360001 -2.250000 +v -4.250004 11.760001 2.250000 +v 0.249996 11.760000 2.250000 +v -4.250004 11.760001 -2.250000 +v 0.249996 11.760000 -2.250000 +v -3.687502 19.040001 -2.250000 +v -0.312502 19.040001 -2.250000 +v -3.687502 16.960001 -2.250000 +v -0.312502 16.959999 -2.250000 +v -3.125002 16.960001 -2.812500 +v -3.125002 19.040001 -2.812500 +v -0.875002 19.040001 -2.812500 +v -0.875002 16.960001 -2.812500 +v -2.562502 17.480001 -2.531250 +v -2.562502 18.520000 -2.531250 +v -1.437502 18.520000 -2.531250 +v -1.437502 17.480000 -2.531250 +vt 1.000000 0.566038 +vt 0.750000 0.452830 +vt 1.000000 0.452830 +vt 0.250000 0.452830 +vt 0.000000 0.566038 +vt 0.000000 0.452830 +vt 0.750000 0.566038 +vt 0.500000 0.452830 +vt 0.500000 0.660377 +vt 0.250000 0.830189 +vt 0.250000 0.660377 +vt 0.972222 0.433962 +vt 0.750000 0.396226 +vt 0.972222 0.396226 +vt 0.472222 0.433962 +vt 0.250000 0.396226 +vt 0.472222 0.396226 +vt 0.722222 0.433962 +vt 0.500000 0.396226 +vt 0.722222 0.396226 +vt 0.222222 0.433962 +vt -0.000000 0.396226 +vt 0.222222 0.396226 +vt 0.500000 0.433962 +vt 0.750000 0.433962 +vt -0.000000 0.433962 +vt 0.250000 0.433962 +vt 0.750000 0.905660 +vt 0.888889 0.754717 +vt 0.888889 0.905660 +vt 0.527778 0.754717 +vt 0.500000 0.905660 +vt 0.500000 0.754717 +vt 0.750000 0.754717 +vt 0.527778 0.735849 +vt 0.750000 0.660377 +vt 0.527778 0.924528 +vt 0.750000 1.000000 +vt 0.527778 0.905660 +vt 0.944444 0.603774 +vt 0.888889 0.641509 +vt 0.888889 0.603774 +vt 0.972222 0.660377 +vt 0.972222 0.584906 +vt 0.833333 0.566038 +vt 1.000000 0.566038 +vt 1.000000 0.584906 +vt 1.000000 0.660377 +vt 0.833333 0.584906 +vt 0.861111 0.660377 +vt 0.833333 0.660377 +vt 1.000000 0.679245 +vt 0.833333 0.679245 +vt 0.861111 0.584906 +vt 0.944444 0.641509 +vt 0.500000 0.830189 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.4569 -0.8895 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.4472 0.0000 -0.8944 +vn 0.7071 -0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.4472 -0.0000 -0.8944 +vn 0.0000 0.4757 -0.8796 +vn 0.0000 -0.4757 -0.8796 +s off +f 286/531/96 289/532/96 291/533/96 +f 292/534/97 286/535/97 291/536/97 +f 285/537/98 290/538/98 289/532/98 +f 288/539/99 292/534/99 290/538/99 +f 288/539/100 286/540/100 287/541/100 +f 298/542/96 296/543/96 294/544/96 +f 299/545/99 293/546/99 295/547/99 +f 300/548/98 295/549/98 296/550/98 +f 297/551/97 294/552/97 293/553/97 +f 299/554/101 289/532/101 290/538/101 +f 300/555/101 291/533/101 289/532/101 +f 298/556/101 292/534/101 291/536/101 +f 297/557/101 290/538/101 292/534/101 +f 306/558/96 304/559/96 302/560/96 +f 307/561/99 301/562/99 303/563/99 +f 308/564/98 303/565/98 304/566/98 +f 301/567/97 306/558/97 302/568/97 +f 308/564/102 305/569/102 307/561/102 +f 319/570/98 317/571/98 318/572/98 +f 316/573/103 319/570/103 315/574/103 +f 315/574/101 309/575/101 310/576/101 +f 316/573/104 310/577/104 312/578/104 +f 309/579/105 313/580/105 311/581/105 +f 313/580/102 312/582/102 311/583/102 +f 314/584/106 317/571/106 313/580/106 +f 313/580/107 320/585/107 316/573/107 +f 319/570/108 314/584/108 315/574/108 +f 286/531/96 285/537/96 289/532/96 +f 292/534/97 287/541/97 286/535/97 +f 285/537/98 288/539/98 290/538/98 +f 288/539/99 287/541/99 292/534/99 +f 288/539/100 285/586/100 286/540/100 +f 298/542/96 300/555/96 296/543/96 +f 299/545/99 297/557/99 293/546/99 +f 300/548/98 299/554/98 295/549/98 +f 297/551/97 298/556/97 294/552/97 +f 299/554/101 300/548/101 289/532/101 +f 300/555/101 298/542/101 291/533/101 +f 298/556/101 297/551/101 292/534/101 +f 297/557/101 299/545/101 290/538/101 +f 306/558/96 308/564/96 304/559/96 +f 307/561/99 305/569/99 301/562/99 +f 308/564/98 307/561/98 303/565/98 +f 301/567/97 305/569/97 306/558/97 +f 308/564/102 306/558/102 305/569/102 +f 319/570/98 320/585/98 317/571/98 +f 316/573/103 320/585/103 319/570/103 +f 315/574/101 314/584/101 309/575/101 +f 316/573/104 315/574/104 310/577/104 +f 309/579/105 314/584/105 313/580/105 +f 313/580/102 316/573/102 312/582/102 +f 314/584/106 318/572/106 317/571/106 +f 313/580/107 317/571/107 320/585/107 +f 319/570/108 318/572/108 314/584/108 +o LeftBoot +v -0.531251 21.639999 -2.531250 +v 4.531249 21.639999 -2.531250 +v -0.531252 18.520000 -2.531250 +v -0.531252 18.520000 2.531250 +v 4.531248 18.519999 2.531250 +v 4.531248 18.519999 -2.531250 +v -0.531250 24.240000 -2.531250 +v 4.531250 24.239998 -2.531250 +v -0.531250 24.240000 2.531250 +v 4.531250 24.239998 2.531250 +v -0.250002 18.520000 -2.250000 +v 4.249998 18.519999 -2.250000 +v -0.250002 18.520000 2.250000 +v 4.249998 18.519999 2.250000 +v 3.687500 22.679998 -3.656250 +v 0.312500 22.680000 -3.656250 +v 3.687500 24.239998 -3.656250 +v 0.312500 24.240000 -3.656250 +vt 0.555556 0.075472 +vt 0.750000 0.037736 +vt 0.527778 0.037736 +vt 0.777778 0.075472 +vt 0.722222 0.132075 +vt 0.777778 0.169811 +vt 0.555556 0.132075 +vt 0.500000 0.075472 +vt 0.500000 0.169811 +vt 0.722222 0.075472 +vt 0.513889 0.169811 +vt 0.500000 0.377358 +vt 0.750000 0.264151 +vt 0.500000 0.264151 +vt 0.000000 0.169811 +vt 0.250000 0.377358 +vt 0.250000 0.169811 +vt 1.000000 0.377358 +vt 1.000000 0.169811 +vt 0.722222 0.396226 +vt 0.500000 0.396226 +vt 0.250000 -0.000000 +vt 0.472222 0.396226 +vt 0.250000 0.396226 +vt 0.972222 0.396226 +vt 0.750000 0.377358 +vt 0.750000 0.396226 +vt 0.222222 0.396226 +vt -0.000000 0.377358 +vt -0.000000 0.396226 +vt 0.763889 0.169811 +vt 0.750000 0.169811 +vt 0.500000 0.169811 +vt 0.000000 -0.000000 +vn 0.0000 1.0000 0.0000 +vn -0.8000 0.0000 -0.6000 +vn 0.8000 -0.0000 -0.6000 +vn -0.0000 0.0000 -1.0000 +vn -0.0000 -0.7343 -0.6788 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 -0.0000 +vn 1.0000 -0.0000 0.0000 +vn -0.0000 -1.0000 0.0000 +s off +f 337/587/109 327/588/109 328/589/109 +f 327/590/110 336/591/110 321/592/110 +f 335/593/111 328/594/111 322/595/111 +f 335/593/112 338/596/112 337/587/112 +f 322/597/113 336/591/113 335/593/113 +f 326/598/112 321/599/112 322/600/112 +f 329/601/114 325/602/114 330/603/114 +f 321/599/115 324/604/115 329/605/115 +f 325/602/116 326/598/116 322/600/116 +f 331/606/117 326/598/117 332/607/117 +f 328/608/109 329/601/109 330/603/109 +f 332/609/117 325/602/117 334/610/117 +f 333/611/117 323/612/117 331/613/117 +f 334/614/117 324/615/117 333/616/117 +f 337/587/109 338/596/109 327/588/109 +f 327/590/110 338/596/110 336/591/110 +f 335/593/111 337/587/111 328/594/111 +f 335/593/112 336/591/112 338/596/112 +f 322/597/113 321/617/113 336/591/113 +f 326/598/112 323/612/112 321/599/112 +f 329/601/114 324/615/114 325/602/114 +f 329/605/115 327/618/115 321/599/115 +f 321/599/115 323/612/115 324/604/115 +f 328/619/116 330/603/116 322/600/116 +f 330/603/116 325/602/116 322/600/116 +f 331/606/117 323/612/117 326/598/117 +f 328/608/109 327/620/109 329/601/109 +f 332/609/117 326/598/117 325/602/117 +f 333/611/117 324/604/117 323/612/117 +f 334/614/117 325/602/117 324/615/117 +o RightBoot +v -4.250002 18.520000 2.250000 +v 0.249998 18.520000 2.250000 +v -4.250002 18.520000 -2.250000 +v 0.249998 18.520000 -2.250000 +v -4.531250 24.240002 2.531250 +v 0.531250 24.240000 2.531250 +v -4.531250 24.240002 -2.531250 +v 0.531250 24.240000 -2.531250 +v -4.531252 18.520000 -2.531250 +v -4.531252 18.520000 2.531250 +v 0.531248 18.520000 2.531250 +v 0.531248 18.520000 -2.531250 +v -4.531251 21.640001 -2.531250 +v 0.531249 21.639999 -2.531250 +v -3.687500 22.680000 -3.656250 +v -0.312500 22.680000 -3.656250 +v -3.687500 24.240002 -3.656250 +v -0.312500 24.240000 -3.656250 +vt -0.000000 0.377358 +vt 0.222222 0.396226 +vt -0.000000 0.396226 +vt 0.750000 0.377358 +vt 0.972222 0.396226 +vt 0.750000 0.396226 +vt 0.250000 0.377358 +vt 0.472222 0.396226 +vt 0.250000 0.396226 +vt 0.000000 0.169811 +vt 0.250000 -0.000000 +vt 0.250000 0.169811 +vt 0.500000 0.377358 +vt 0.722222 0.396226 +vt 0.500000 0.396226 +vt 0.500000 0.264151 +vt 1.000000 0.377358 +vt 0.750000 0.264151 +vt 0.555556 0.132075 +vt 0.763889 0.169811 +vt 0.513889 0.169811 +vt 0.555556 0.075472 +vt 0.722222 0.132075 +vt 0.500000 0.075472 +vt 0.500000 0.169811 +vt 0.777778 0.075472 +vt 0.722222 0.075472 +vt 0.750000 0.037736 +vt 0.527778 0.037736 +vt 0.000000 -0.000000 +vt 0.500000 0.169811 +vt 0.750000 0.169811 +vt 1.000000 0.169811 +vt 0.777778 0.169811 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 -0.7343 -0.6788 +vn -0.8000 0.0000 -0.6000 +vn 0.8000 -0.0000 -0.6000 +s off +f 349/621/118 339/622/118 340/623/118 +f 350/624/118 340/625/118 342/626/118 +f 348/627/118 341/628/118 339/629/118 +f 344/630/119 345/631/119 343/632/119 +f 347/633/118 342/634/118 341/635/118 +f 351/636/120 347/633/120 348/627/120 +f 349/637/121 350/624/121 352/638/121 +f 343/632/122 349/621/122 344/630/122 +f 351/636/123 350/624/123 347/633/123 +f 353/639/124 352/640/124 351/641/124 +f 355/642/123 354/643/123 353/639/123 +f 345/644/125 353/639/125 351/645/125 +f 346/646/126 354/643/126 356/647/126 +f 346/648/119 355/642/119 345/649/119 +f 349/621/118 348/627/118 339/622/118 +f 350/624/118 349/637/118 340/625/118 +f 348/627/118 347/633/118 341/628/118 +f 344/630/119 346/650/119 345/631/119 +f 347/633/118 350/624/118 342/634/118 +f 348/627/120 343/632/120 351/636/120 +f 343/632/120 345/651/120 351/636/120 +f 352/638/121 346/652/121 344/653/121 +f 344/653/121 349/637/121 352/638/121 +f 343/632/122 348/627/122 349/621/122 +f 351/636/123 352/638/123 350/624/123 +f 353/639/124 354/643/124 352/640/124 +f 355/642/123 356/647/123 354/643/123 +f 345/644/125 355/642/125 353/639/125 +f 346/646/126 352/654/126 354/643/126 +f 346/648/119 356/647/119 355/642/119 +o Helmet +v 4.249992 0.249998 4.250000 +v -4.250008 0.250002 4.250000 +v 4.249992 0.249998 -4.250000 +v -4.250008 0.250002 -4.250000 +v 4.249990 -8.250000 -4.250000 +v 4.249990 -8.250000 4.250000 +v -4.250010 -8.250000 4.250000 +v -4.250010 -8.250000 -4.250000 +v 2.124992 0.250000 -4.250000 +v -2.125008 0.250000 -4.250000 +v 2.124991 -2.937500 -4.250000 +v -2.125009 -2.937500 -4.250000 +v 1.062491 -4.000000 -4.250000 +v -1.062509 -4.000000 -4.250000 +v 1.062492 0.250000 -5.312500 +v -1.062508 0.250000 -5.312500 +v 1.062491 -2.937500 -5.312500 +v -1.062509 -2.937500 -5.312500 +v -1.062508 -0.812500 -5.312500 +v -0.531258 -1.732653 -5.312500 +v 0.531242 -1.732653 -5.312500 +v 1.062492 -0.812500 -5.312500 +v 0.531242 0.107653 -5.312500 +v -0.531258 0.107653 -5.312500 +v -1.062508 -0.812500 -5.843750 +v -0.531258 -1.732653 -5.843750 +v 0.531242 -1.732653 -5.843750 +v 1.062492 -0.812500 -5.843750 +v 0.531242 0.107653 -5.843750 +v -0.531258 0.107653 -5.843750 +v -0.000008 -0.812502 -5.843750 +v 1.859367 -2.140625 -4.250000 +v 1.859366 -2.671875 -4.250000 +v 1.859367 -2.140625 -5.312500 +v 1.859366 -2.671875 -5.312500 +v 1.328117 -2.140625 -4.250000 +v 1.328116 -2.671875 -4.250000 +v 1.328117 -2.140625 -5.312500 +v 1.328116 -2.671875 -5.312500 +v -1.328133 -2.140625 -4.250000 +v -1.328134 -2.671875 -4.250000 +v -1.328133 -2.140625 -5.312500 +v -1.328134 -2.671875 -5.312500 +v -1.859383 -2.140625 -4.250000 +v -1.859384 -2.671875 -4.250000 +v -1.859383 -2.140625 -5.312500 +v -1.859384 -2.671875 -5.312500 +v 4.249991 -3.468752 -4.250000 +v -4.250009 -3.468748 -4.250000 +v 4.249990 -5.593752 -4.250000 +v -4.250010 -5.593748 -4.250000 +v -3.718759 -3.468748 -4.781250 +v 3.718741 -3.468752 -4.781250 +v -3.718760 -5.593748 -4.781250 +v 3.718740 -5.593752 -4.781250 +v 3.718740 -5.062502 -4.781250 +v 3.718741 -4.000002 -4.781250 +v -3.718759 -3.999998 -4.781250 +v -3.718760 -5.062498 -4.781250 +v -3.718760 -5.062498 -4.250000 +v 1.593741 -4.531250 -4.781250 +v -3.718759 -3.999998 -4.250000 +v 3.718741 -4.000002 -4.250000 +v -1.593759 -4.531250 -4.781250 +v 3.718740 -5.062502 -4.250000 +v 1.593741 -4.531250 -4.250000 +v -1.593759 -4.531250 -4.250000 +v 1.593740 -5.593750 -4.250000 +v -1.593760 -5.593750 -4.250000 +v 1.593740 -8.250000 -4.250000 +v -1.593760 -8.250000 -4.250000 +v -1.593760 -5.593750 -4.781250 +v 1.593740 -5.593750 -4.781250 +v -1.593760 -7.718750 -4.781250 +v 1.593740 -7.718750 -4.781250 +v -1.062510 -6.656250 -4.781250 +v -0.531260 -7.576403 -4.781250 +v 0.531240 -7.576403 -4.781250 +v 1.062490 -6.656250 -4.781250 +v 0.531240 -5.736097 -4.781250 +v -0.531260 -5.736097 -4.781250 +v -1.062510 -6.656250 -5.312500 +v -0.531260 -7.576403 -5.312500 +v 0.531240 -7.576403 -5.312500 +v 1.062490 -6.656250 -5.312500 +v 0.531240 -5.736097 -5.312500 +v -0.531260 -5.736097 -5.312500 +v -0.000010 -6.656252 -5.312500 +v 4.249992 0.249998 4.250000 +v 4.249992 0.249998 0.000000 +v 4.781242 0.249998 4.250000 +v 4.781242 0.249998 0.000000 +v 5.312492 -0.281252 4.250000 +v 5.312492 -0.281252 0.000000 +v 5.312492 -1.343752 4.250000 +v 5.312492 -1.343752 0.000000 +v 4.781241 -1.875002 4.250000 +v 4.781241 -1.875002 0.000000 +v 4.249991 -1.875002 4.250000 +v 4.249991 -1.875002 0.000000 +v 4.249992 0.249998 4.781250 +v 4.249992 -0.281252 5.312500 +v 4.249992 -1.343752 5.312500 +v 4.249991 -1.875002 4.781250 +v -4.250008 0.250002 4.250000 +v -4.250008 0.250002 4.781250 +v -4.250008 -0.281248 5.312500 +v -4.250008 -1.343748 5.312500 +v -4.250009 -1.874998 4.781250 +v -4.250009 -1.874998 4.250000 +v -4.781258 0.250002 4.250000 +v -5.312508 -0.281248 4.250000 +v -5.312508 -1.343748 4.250000 +v -4.781259 -1.874998 4.250000 +v -4.250008 0.250002 0.000000 +v -4.781258 0.250002 0.000000 +v -5.312508 -0.281248 0.000000 +v -5.312508 -1.343748 0.000000 +v -4.781259 -1.874998 0.000000 +v -4.250009 -1.874998 0.000000 +v -4.781258 -1.343748 0.000000 +v -4.321181 -1.078123 0.000000 +v -4.321181 -0.546873 0.000000 +v -4.781258 -0.281248 0.000000 +v -5.241335 -0.546873 0.000000 +v -5.241335 -1.078123 0.000000 +v -4.781258 -0.281248 -4.250000 +v -4.321180 -0.015623 -4.250000 +v -4.321180 0.515627 -4.250000 +v -4.781258 0.781252 -4.250000 +v -5.241335 0.515627 -4.250000 +v -5.241335 -0.015623 -4.250000 +v -4.250008 -0.281248 -4.781250 +v -4.250008 -0.015623 -4.321173 +v -4.250008 0.515627 -4.321173 +v -4.250008 0.781252 -4.781250 +v -4.250008 0.515627 -5.241327 +v -4.250008 -0.015623 -5.241327 +v -1.062508 -1.343750 -4.781250 +v -1.062508 -1.078125 -4.321173 +v -1.062508 -0.546875 -4.321173 +v -1.062508 -0.281250 -4.781250 +v -1.062508 -0.546875 -5.241327 +v -1.062508 -1.078125 -5.241327 +v 4.781242 -1.343752 0.000000 +v 4.321165 -1.078127 0.000000 +v 4.321165 -0.546877 0.000000 +v 4.781242 -0.281252 0.000000 +v 5.241319 -0.546877 0.000000 +v 5.241319 -1.078127 0.000000 +v 4.781242 -0.281252 -4.250000 +v 4.321165 -0.015627 -4.250000 +v 4.321165 0.515623 -4.250000 +v 4.781242 0.781248 -4.250000 +v 5.241320 0.515623 -4.250000 +v 5.241320 -0.015627 -4.250000 +v 4.249992 -0.281252 -4.781250 +v 4.249992 -0.015627 -4.321173 +v 4.249992 0.515623 -4.321173 +v 4.249992 0.781248 -4.781250 +v 4.249992 0.515623 -5.241327 +v 4.249992 -0.015627 -5.241327 +v 1.062492 -1.343750 -4.781250 +v 1.062492 -1.078125 -4.321173 +v 1.062492 -0.546875 -4.321173 +v 1.062492 -0.281250 -4.781250 +v 1.062492 -0.546875 -5.241327 +v 1.062492 -1.078125 -5.241327 +v -4.250009 -4.531248 -1.593750 +v -4.250010 -5.658201 -1.126951 +v -4.250010 -6.124998 0.000000 +v -4.250010 -5.658201 1.126951 +v -4.250009 -4.531248 1.593750 +v -4.250009 -3.404295 1.126951 +v -4.250009 -2.937498 -0.000000 +v -4.250009 -3.404295 -1.126951 +v -4.781259 -4.531248 -1.593750 +v -4.781260 -5.658201 -1.126951 +v -4.781260 -6.124998 0.000000 +v -4.781260 -5.658201 1.126951 +v -4.781259 -4.531248 1.593750 +v -4.781259 -3.404295 1.126951 +v -4.781259 -2.937498 -0.000000 +v -4.781259 -3.404295 -1.126951 +v -5.312509 -4.531248 -1.062500 +v -5.312510 -5.282549 -0.751301 +v -5.312510 -5.593748 0.000000 +v -5.312510 -5.282549 0.751301 +v -5.312509 -4.531248 1.062500 +v -5.312509 -3.779947 0.751301 +v -5.312509 -3.468748 0.000000 +v -5.312509 -3.779947 -0.751301 +v -5.312510 -4.725698 0.725701 +v -5.312509 -3.805548 0.194451 +v -5.312510 -7.913198 -4.795211 +v -5.312510 -6.993048 -5.326461 +v -5.843760 -7.913198 -4.795211 +v -5.843760 -4.725698 0.725701 +v -5.843759 -3.805548 0.194451 +v -5.843760 -6.993048 -5.326461 +v -5.312510 -7.258673 -5.786537 +v -5.312510 -8.178825 -5.255287 +v -3.187510 -6.993048 -5.326461 +v -3.187510 -7.913198 -4.795211 +v -3.187510 -7.258673 -5.786537 +v -3.187510 -8.178825 -5.255287 +v -3.718760 -7.320311 -4.830798 +v -3.187510 -8.117188 -4.370721 +v -2.125010 -8.117188 -4.370721 +v -1.593760 -7.320312 -4.830798 +v -2.125010 -6.523438 -5.290874 +v -3.187510 -6.523436 -5.290874 +v -3.718760 -7.851561 -5.750950 +v -3.187511 -8.648438 -5.290874 +v -2.125011 -8.648438 -5.290874 +v -1.593760 -7.851562 -5.750950 +v -2.125010 -7.054688 -6.211026 +v -3.187510 -7.054686 -6.211026 +v -2.656260 -7.851564 -5.750949 +v -2.656262 -7.320312 -4.830798 +v -4.250010 -5.593748 -4.250000 +v -4.781260 -5.593748 -4.250000 +v -4.781259 -3.468748 -4.250000 +v -4.250009 -3.468748 -4.250000 +v -4.250010 -5.593748 -3.718750 +v -4.781260 -5.593748 -3.718750 +v -4.781259 -3.468748 -3.718750 +v -4.250009 -3.468748 -3.718750 +v 4.249991 -4.531252 -1.593750 +v 4.249990 -5.658205 -1.126951 +v 4.249990 -6.125002 0.000000 +v 4.249990 -5.658205 1.126951 +v 4.249991 -4.531252 1.593750 +v 4.249991 -3.404299 1.126951 +v 4.249991 -2.937502 -0.000000 +v 4.249991 -3.404299 -1.126951 +v 4.781241 -4.531252 -1.593750 +v 4.781240 -5.658205 -1.126951 +v 4.781240 -6.125002 0.000000 +v 4.781240 -5.658205 1.126951 +v 4.781241 -4.531252 1.593750 +v 4.781241 -3.404299 1.126951 +v 4.781241 -2.937502 -0.000000 +v 4.781241 -3.404299 -1.126951 +v 5.312491 -4.531252 -1.062500 +v 5.312490 -5.282553 -0.751301 +v 5.312490 -5.593752 0.000000 +v 5.312490 -5.282553 0.751301 +v 5.312491 -4.531252 1.062500 +v 5.312491 -3.779951 0.751301 +v 5.312491 -3.468752 0.000000 +v 5.312491 -3.779951 -0.751301 +v 4.249990 -5.593752 -4.250000 +v 4.781240 -5.593752 -4.250000 +v 4.781241 -3.468752 -4.250000 +v 4.249991 -3.468752 -4.250000 +v 4.249990 -5.593752 -3.718750 +v 4.781240 -5.593752 -3.718750 +v 4.781241 -3.468752 -3.718750 +v 4.249991 -3.468752 -3.718750 +v -2.125009 -2.671875 -4.250000 +v -2.125009 -3.203125 -4.250000 +v -2.125009 -2.671875 -4.781250 +v -2.125009 -3.203125 -4.781250 +v -2.656259 -2.671875 -4.250000 +v -2.656259 -3.203125 -4.250000 +v -2.656259 -2.671875 -4.781250 +v -2.656259 -3.203125 -4.781250 +v -4.250009 -2.140623 -4.781250 +v -4.250008 -1.609373 -4.781250 +v -4.250008 -1.609373 -4.250000 +v -4.250009 -2.140623 -4.250000 +v -4.781259 -2.140623 -4.781250 +v -4.781258 -1.609373 -4.781250 +v -4.781258 -1.609373 -4.250000 +v -4.781259 -2.140623 -4.250000 +v -4.250009 -2.671873 0.000000 +v -4.250009 -2.140623 0.000000 +v -4.781259 -2.671873 0.000000 +v -4.781259 -2.140623 0.000000 +v 2.124991 -2.671875 -4.250000 +v 2.124991 -3.203125 -4.250000 +v 2.124991 -2.671875 -4.781250 +v 2.124991 -3.203125 -4.781250 +v 2.656241 -2.671875 -4.250000 +v 2.656241 -3.203125 -4.250000 +v 2.656241 -2.671875 -4.781250 +v 2.656241 -3.203125 -4.781250 +v 4.249991 -2.140627 -4.781250 +v 4.249992 -1.609377 -4.781250 +v 4.249992 -1.609377 -4.250000 +v 4.249991 -2.140627 -4.250000 +v 4.781241 -2.140627 -4.781250 +v 4.781242 -1.609377 -4.781250 +v 4.781242 -1.609377 -4.250000 +v 4.781241 -2.140627 -4.250000 +v 4.249991 -2.671877 0.000000 +v 4.249991 -2.140627 0.000000 +v 4.781241 -2.671877 0.000000 +v 4.781241 -2.140627 0.000000 +v 1.062492 -1.343750 4.250000 +v -1.062508 -1.343750 4.250000 +v 1.062491 -3.468750 4.250000 +v -1.062509 -3.468750 4.250000 +v 1.062491 -3.468750 5.312500 +v 1.062492 -1.343750 5.312500 +v -1.062508 -1.343750 5.312500 +v -1.062509 -3.468750 5.312500 +v -4.250010 -5.593748 -4.250000 +v -4.781260 -5.593748 -4.250000 +v -4.781259 -3.468748 -4.250000 +v -4.250009 -3.468748 -4.250000 +v -4.250010 -5.593748 -3.718750 +v -4.781260 -5.593748 -3.718750 +v -4.781259 -3.468748 -3.718750 +v -4.250009 -3.468748 -3.718750 +v 4.249990 -5.593752 -4.250000 +v 4.781240 -5.593752 -4.250000 +v 4.781241 -3.468752 -4.250000 +v 4.249991 -3.468752 -4.250000 +v 4.249990 -5.593752 -3.718750 +v 4.781240 -5.593752 -3.718750 +v 4.781241 -3.468752 -3.718750 +v 4.249991 -3.468752 -3.718750 +vt 0.750000 0.296296 +vt 0.500000 0.000000 +vt 0.750000 0.000000 +vt 0.500000 0.888889 +vt 0.750000 0.592593 +vt 0.750000 0.888889 +vt 0.250000 0.296296 +vt 0.000000 0.592593 +vt 0.000000 0.296296 +vt 0.500000 0.296296 +vt 0.250000 0.592593 +vt 1.000000 0.296296 +vt 0.500000 0.592593 +vt 0.468750 0.037037 +vt 0.375000 0.000000 +vt 0.500000 0.000000 +vt 0.468750 0.148148 +vt 0.406250 0.037037 +vt 0.500000 0.148148 +vt 0.500000 0.037037 +vt 0.375000 0.037037 +vt 0.406250 0.148148 +vt 0.375000 0.148148 +vt 0.468750 0.185185 +vt 0.406250 0.185185 +vt 0.281250 0.592593 +vt 0.265625 0.629630 +vt 0.265625 0.592593 +vt 0.312500 0.018519 +vt 0.296875 0.092593 +vt 0.281250 0.018519 +vt 0.265625 0.092593 +vt 0.250000 0.018519 +vt 0.234375 0.092593 +vt 0.218750 0.018519 +vt 0.203125 0.092593 +vt 0.187500 0.018519 +vt 0.375000 0.018519 +vt 0.359375 0.092593 +vt 0.343750 0.018519 +vt 0.328125 0.092593 +vt 0.265625 0.648148 +vt 0.250000 0.629630 +vt 0.296875 0.629630 +vt 0.312500 0.592593 +vt 0.312500 0.629630 +vt 0.281250 0.629630 +vt 0.296875 0.592593 +vt 0.281250 0.592593 +vt 0.265625 0.629630 +vt 0.265625 0.592593 +vt 0.265625 0.648148 +vt 0.250000 0.629630 +vt 0.296875 0.629630 +vt 0.312500 0.592593 +vt 0.312500 0.629630 +vt 0.281250 0.629630 +vt 0.296875 0.592593 +vt 0.421875 0.240741 +vt 0.265625 0.277778 +vt 0.328125 0.240741 +vt 0.250000 0.203704 +vt 0.265625 0.222222 +vt 0.265625 0.259259 +vt 0.250000 0.296296 +vt 0.484375 0.277778 +vt 0.500000 0.296296 +vt 0.500000 0.277778 +vt 0.484375 0.259259 +vt 0.484375 0.222222 +vt 0.500000 0.185185 +vt 0.265625 0.203704 +vt 0.250000 0.185185 +vt 0.484375 0.203704 +vt 0.265625 0.240741 +vt 0.171875 0.074074 +vt 0.078125 -0.000000 +vt 0.171875 -0.000000 +vt 0.265625 0.240741 +vt 0.328125 0.222222 +vt 0.484375 0.222222 +vt 0.484375 0.240741 +vt 0.281250 0.259259 +vt 0.468750 0.222222 +vt 0.421875 0.222222 +vt 0.187500 -0.000000 +vt 0.062500 -0.000000 +vt 0.078125 0.074074 +vt 0.062500 0.092593 +vt 0.078125 0.092593 +vt 0.171875 0.092593 +vt 0.312500 0.111111 +vt 0.296875 0.185185 +vt 0.281250 0.111111 +vt 0.265625 0.185185 +vt 0.250000 0.111111 +vt 0.234375 0.185185 +vt 0.218750 0.111111 +vt 0.203125 0.185185 +vt 0.187500 0.111111 +vt 0.375000 0.111111 +vt 0.359375 0.185185 +vt 0.343750 0.111111 +vt 0.328125 0.185185 +vt 0.031250 0.962963 +vt 0.015625 0.981481 +vt 0.000000 0.981481 +vt 0.593750 0.925926 +vt 0.625000 0.981481 +vt 0.593750 0.962963 +vt 0.053247 0.640596 +vt 0.062359 0.666667 +vt 0.000142 0.666667 +vt 0.421875 0.851852 +vt 0.234375 0.888889 +vt 0.234375 0.851852 +vt 0.234375 0.833333 +vt 0.421875 0.796296 +vt 0.421875 0.833333 +vt 0.437500 0.888889 +vt 0.500000 0.851852 +vt 0.500000 0.888889 +vt 0.218750 0.833333 +vt 0.234375 0.796296 +vt 0.421875 0.777778 +vt 0.234375 0.777778 +vt 0.437500 0.851852 +vt 0.437500 0.833333 +vt 0.437500 0.777778 +vt 0.437500 0.796296 +vt 0.500000 0.833333 +vt 0.500000 0.796296 +vt 0.125000 0.814815 +vt 0.109375 0.888889 +vt 0.093750 0.814815 +vt 0.078125 0.888889 +vt 0.062500 0.814815 +vt 0.046875 0.888889 +vt 0.031250 0.814815 +vt 0.015625 0.888889 +vt -0.000000 0.814815 +vt 0.187500 0.814815 +vt 0.171875 0.888889 +vt 0.156250 0.814815 +vt 0.140625 0.888889 +vt 0.125000 0.777778 +vt 0.093750 0.777778 +vt 0.109375 0.703704 +vt 0.062500 0.777778 +vt 0.078125 0.703704 +vt 0.031250 0.777778 +vt 0.046875 0.703704 +vt -0.000000 0.777778 +vt 0.015625 0.703704 +vt 0.187500 0.777778 +vt 0.156250 0.777778 +vt 0.171875 0.703704 +vt 0.140625 0.703704 +vt 0.234375 0.203704 +vt 0.250000 0.185185 +vt 0.250000 0.203704 +vt 0.234375 0.277778 +vt 0.250000 0.277778 +vt 0.234375 0.296296 +vt 0.250000 0.296296 +vt 0.000142 0.666667 +vt 0.031250 0.629797 +vt 0.062359 0.666667 +vt 0.234375 0.185185 +vt 0.250000 0.203704 +vt 0.234375 0.203704 +vt 0.250000 0.277778 +vt 0.234375 0.277778 +vt 0.250000 0.296296 +vt 0.234375 0.296296 +vt 0.500000 0.759259 +vt 0.484375 0.740741 +vt 0.500000 0.740741 +vt 0.484375 0.759259 +vt 0.468750 0.740741 +vt 0.421875 0.759259 +vt 0.421875 0.740741 +vt 0.484375 0.722222 +vt 0.468750 0.777778 +vt 0.468750 0.759259 +vt 0.484375 0.740741 +vt 0.468750 0.759259 +vt 0.484375 0.759259 +vt 0.500000 0.759259 +vt 0.500000 0.740741 +vt 0.421875 0.722222 +vt 0.468750 0.722222 +vt 0.406250 0.759259 +vt 0.390625 0.740741 +vt 0.406250 0.740741 +vt 0.406250 0.722222 +vt 0.421875 0.777778 +vt 0.250000 0.740741 +vt 0.265625 0.759259 +vt 0.250000 0.759259 +vt 0.265625 0.722222 +vt 0.390625 0.722222 +vt 0.390625 0.777778 +vt 0.390625 0.759259 +vt 0.265625 0.740741 +vt 0.468750 0.740741 +vt 0.421875 0.759259 +vt 0.484375 0.722222 +vt 0.468750 0.777778 +vt 0.421875 0.722222 +vt 0.468750 0.722222 +vt 0.390625 0.740741 +vt 0.406250 0.759259 +vt 0.406250 0.740741 +vt 0.406250 0.722222 +vt 0.421875 0.740741 +vt 0.421875 0.777778 +vt 0.265625 0.759259 +vt 0.250000 0.740741 +vt 0.250000 0.759259 +vt 0.390625 0.722222 +vt 0.265625 0.740741 +vt 0.390625 0.777778 +vt 0.390625 0.759259 +vt 0.156250 0.092593 +vt 0.093750 0.166667 +vt 0.093750 0.092593 +vt 0.187500 0.166667 +vt 0.187500 0.092593 +vt 0.062500 0.092593 +vt 0.062500 0.166667 +vt 0.093750 0.203704 +vt 0.156250 0.166667 +vt 0.156250 0.203704 +vt 0.250000 0.185185 +vt 0.234375 0.203704 +vt 0.250000 0.203704 +vt 0.234375 0.277778 +vt 0.250000 0.277778 +vt 0.234375 0.296296 +vt 0.250000 0.296296 +vt 0.250000 0.203704 +vt 0.234375 0.185185 +vt 0.234375 0.203704 +vt 0.250000 0.277778 +vt 0.234375 0.277778 +vt 0.250000 0.296296 +vt 0.234375 0.296296 +vt 1.000000 0.592593 +vt 0.250000 0.648148 +vt 0.250000 0.592593 +vt 0.250000 0.648148 +vt 0.250000 0.592593 +vt 0.250000 0.277778 +vt 0.500000 0.203704 +vt 0.484375 0.240741 +vt 0.265625 0.222222 +vt 0.281250 0.222222 +vt 0.468750 0.259259 +vt 0.187500 0.092593 +vt -0.000000 0.907407 +vt 0.015625 0.907407 +vt 0.031250 0.925926 +vt 0.609375 0.907407 +vt 0.625000 0.907407 +vt 0.609375 0.981481 +vt 0.053247 0.692737 +vt 0.031250 0.703536 +vt 0.009253 0.692737 +vt 0.009253 0.640596 +vt 0.031250 0.629797 +vt 0.421875 0.888889 +vt 0.218750 0.796296 +vt 0.500000 0.777778 +vt 0.234375 0.185185 +vt 0.031250 0.703536 +vt 0.009253 0.692737 +vt 0.009253 0.640596 +vt 0.053247 0.640596 +vt 0.053247 0.692737 +vt 0.250000 0.185185 +vt 0.484375 0.777778 +vt 0.406250 0.777778 +vt 0.265625 0.777778 +vt 0.484375 0.777778 +vt 0.406250 0.777778 +vt 0.265625 0.722222 +vt 0.265625 0.777778 +vt 0.234375 0.185185 +vt 0.250000 0.185185 +vt 0.312500 0.000000 +vt 0.343750 0.000000 +vt 0.375000 0.000000 +vt 0.218750 0.000000 +vt 0.250000 0.000000 +vt 0.281250 0.000000 +vt 0.187500 0.000000 +vt 0.343750 0.092593 +vt 0.375000 0.092593 +vt 0.312500 0.092593 +vt 0.218750 0.092593 +vt 0.250000 0.092593 +vt 0.281250 0.092593 +vt 0.187500 0.092593 +vt 0.156250 0.907407 +vt 0.031250 0.888889 +vt 0.156250 0.888889 +vt 0.156250 0.925926 +vt 0.031250 0.907407 +vt 0.156250 0.962963 +vt 0.156250 0.981481 +vt 0.156250 1.000000 +vt 0.031250 0.981481 +vt 0.187500 0.981481 +vt 0.437500 0.962963 +vt 0.437500 0.981481 +vt 0.187500 0.925926 +vt 0.437500 0.907407 +vt 0.437500 0.925926 +vt 0.187500 0.888889 +vt 0.187500 0.907407 +vt 0.171875 0.907407 +vt 0.187500 0.962963 +vt 0.171875 0.981481 +vt 0.187500 1.000000 +vt 0.468750 0.981481 +vt 0.468750 0.962963 +vt 0.593750 0.907407 +vt 0.468750 0.925926 +vt 0.468750 0.907407 +vt 0.468750 1.000000 +vt 0.593750 0.981481 +vt 0.593750 1.000000 +vt 0.437500 1.000000 +vt 0.437500 0.888889 +vt 0.593750 0.888889 +vt 0.453125 0.907407 +vt 0.453125 0.981481 +vt 0.500000 0.703704 +vt 0.406250 0.685185 +vt 0.500000 0.685185 +vt 0.500000 0.611111 +vt 0.406250 0.629630 +vt 0.406250 0.611111 +vt 0.406250 0.666667 +vt 0.500000 0.666667 +vt 0.500000 0.592593 +vt 0.406250 0.592593 +vt 0.500000 0.629630 +vt 0.406250 0.648148 +vt 0.500000 0.648148 +vt 0.375000 0.629630 +vt 0.375000 0.648148 +vt 0.375000 0.685185 +vt 0.406250 0.703704 +vt 0.375000 0.611111 +vt 0.312500 0.666667 +vt 0.312500 0.648148 +vt 0.312500 0.703704 +vt 0.312500 0.685185 +vt 0.312500 0.611111 +vt 0.375000 0.666667 +vt 0.312500 0.592593 +vt 0.375000 0.592593 +vt 0.312500 0.629630 +vt 0.406250 0.685185 +vt 0.500000 0.703704 +vt 0.500000 0.685185 +vt 0.500000 0.611111 +vt 0.406250 0.629630 +vt 0.500000 0.629630 +vt 0.406250 0.666667 +vt 0.500000 0.666667 +vt 0.500000 0.592593 +vt 0.406250 0.611111 +vt 0.406250 0.648148 +vt 0.500000 0.648148 +vt 0.375000 0.629630 +vt 0.375000 0.648148 +vt 0.375000 0.666667 +vt 0.375000 0.685185 +vt 0.406250 0.703704 +vt 0.375000 0.703704 +vt 0.406250 0.592593 +vt 0.375000 0.611111 +vt 0.312500 0.666667 +vt 0.312500 0.703704 +vt 0.312500 0.611111 +vt 0.312500 0.685185 +vt 0.312500 0.592593 +vt 0.375000 0.592593 +vt 0.312500 0.629630 +vt 0.062500 0.592593 +vt 0.031250 0.611111 +vt 0.031250 0.592593 +vt 0.218750 0.592593 +vt 0.250000 0.611111 +vt 0.218750 0.611111 +vt 0.156250 0.592593 +vt 0.187500 0.611111 +vt 0.156250 0.611111 +vt 0.125000 0.592593 +vt 0.093750 0.611111 +vt 0.093750 0.592593 +vt 0.000000 0.611111 +vt 0.000000 0.592593 +vt 0.187500 0.592593 +vt 0.125000 0.611111 +vt 0.062500 0.611111 +vt 0.109375 0.629630 +vt 0.093750 0.629630 +vt 0.078125 0.629630 +vt 0.062500 0.629630 +vt 0.031250 0.629630 +vt 0.000000 0.629630 +vt 0.218750 0.629630 +vt 0.203125 0.629630 +vt 0.187500 0.629630 +vt 0.156250 0.629630 +vt 0.125000 0.629630 +vt 0.218750 0.611111 +vt 0.187500 0.592593 +vt 0.218750 0.592593 +vt 0.031250 0.611111 +vt 0.000000 0.592593 +vt 0.031250 0.592593 +vt 0.093750 0.611111 +vt 0.062500 0.592593 +vt 0.093750 0.592593 +vt 0.156250 0.592593 +vt 0.125000 0.611111 +vt 0.125000 0.592593 +vt 0.250000 0.592593 +vt 0.062500 0.611111 +vt 0.156250 0.611111 +vt 0.125000 0.629630 +vt 0.187500 0.611111 +vt 0.156250 0.629630 +vt 0.203125 0.629630 +vt 0.234375 0.629630 +vt 0.250000 0.611111 +vt 0.015625 0.629630 +vt 0.000000 0.611111 +vt 0.031250 0.629630 +vt 0.078125 0.629630 +vt 0.109375 0.629630 +vt 0.031250 1.000000 +vt 0.468750 0.888889 +vt 0.375000 0.703704 +vt 0.312500 0.648148 +vt 0.250000 0.592593 +vt 0.046875 0.629630 +vt 0.015625 0.629630 +vt 0.234375 0.629630 +vt 0.171875 0.629630 +vt 0.140625 0.629630 +vt 0.140625 0.629630 +vt 0.171875 0.629630 +vt 0.187500 0.629630 +vt 0.218750 0.629630 +vt 0.000000 0.629630 +vt 0.046875 0.629630 +vt 0.062500 0.629630 +vt 0.093750 0.629630 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 -0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn -0.5774 -0.5774 -0.5774 +vn 0.5774 -0.5774 -0.5774 +vn -0.2425 0.9701 0.0000 +vn 0.2425 0.9701 0.0000 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.8660 -0.5000 +vn -0.7071 -0.3536 -0.6124 +vn 0.0000 -0.5000 -0.8660 +vn 0.5547 0.8320 0.0000 +vn -0.5547 -0.8320 0.0000 +vn 0.0000 0.9923 0.1240 +vn 0.0000 -0.9923 -0.1240 +vn -0.5547 0.8321 0.0000 +vn 0.5547 -0.8321 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.4330 0.8727 0.2257 +vn 0.8756 0.3416 0.3416 +vn 0.3827 0.9239 0.0000 +vn 0.8756 -0.3416 0.3416 +vn 0.9239 0.3827 0.0000 +vn 0.4330 -0.8727 0.2257 +vn 0.9239 -0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.2257 -0.8727 0.4330 +vn -0.3416 -0.3416 0.8756 +vn -0.2257 -0.8727 0.4330 +vn 0.3416 0.3416 0.8756 +vn -0.2257 0.8727 0.4330 +vn -0.3416 0.3416 0.8756 +vn 0.2257 0.8727 0.4330 +vn 0.3416 -0.3416 0.8756 +vn -0.9239 -0.3827 0.0000 +vn -0.4330 -0.8727 0.2257 +vn -0.8756 -0.3416 0.3416 +vn -0.3827 0.9239 0.0000 +vn -0.8756 0.3416 0.3416 +vn -0.4330 0.8727 0.2257 +vn -0.3827 -0.9239 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.0000 0.9701 0.2425 +vn -0.8336 0.4856 -0.2635 +vn -0.8941 0.4345 0.1086 +vn 0.8941 0.4345 0.1086 +vn 0.8012 -0.5109 0.3116 +vn 0.7284 0.5401 0.4216 +vn -0.8355 -0.3995 -0.3772 +vn -0.8247 -0.5487 -0.1372 +vn -0.1198 0.9928 0.0048 +vn 0.8247 -0.5487 -0.1372 +vn -0.1074 -0.9653 -0.2379 +vn 0.0000 -0.9701 -0.2425 +vn 0.2976 -0.5032 0.8113 +vn -0.2784 -0.9546 -0.1059 +vn -0.2407 0.4970 -0.8337 +vn 0.4421 0.5410 0.7155 +vn -0.1863 -0.5590 -0.8079 +vn -0.3162 -0.9487 0.0000 +vn 0.3162 0.9487 -0.0000 +vn 0.1372 0.4117 -0.9009 +vn 0.1372 0.4117 0.9009 +vn -0.3906 -0.3847 -0.8363 +vn 0.0402 0.9917 -0.1222 +vn -0.1863 -0.5590 0.8079 +vn 0.8336 0.4856 -0.2635 +vn -0.8012 -0.5109 0.3116 +vn 0.8355 -0.3995 -0.3772 +vn -0.7284 0.5401 0.4216 +vn 0.1074 -0.9653 -0.2379 +vn -0.2976 -0.5032 0.8113 +vn 0.2784 -0.9546 -0.1059 +vn 0.3906 -0.3847 -0.8363 +vn 0.2407 0.4970 -0.8337 +vn 0.1198 0.9928 0.0048 +vn -0.0402 0.9917 -0.1222 +vn -0.4421 0.5410 0.7155 +vn 0.1863 -0.5590 -0.8079 +vn -0.3162 0.9487 -0.0000 +vn -0.1372 0.4117 0.9009 +vn -0.1372 0.4117 -0.9009 +vn 0.1863 -0.5590 0.8079 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 +vn -0.7071 -0.5000 -0.5000 +vn -0.7071 -0.7071 -0.0000 +vn -0.7071 0.5000 -0.5000 +vn -0.7071 0.7071 0.0000 +vn -0.7071 0.5000 0.5000 +vn -0.7071 0.0000 0.7071 +vn -0.7071 -0.5000 0.5000 +vn -0.5000 0.7500 -0.4330 +vn -0.5000 -0.7500 0.4330 +vn 0.5000 0.7500 -0.4330 +vn 0.5000 -0.7500 0.4330 +vn 0.7071 -0.5000 -0.5000 +vn 0.7071 -0.7071 -0.0000 +vn 0.7071 0.5000 -0.5000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 0.5000 0.5000 +vn 0.7071 -0.0000 0.7071 +vn 0.7071 -0.5000 0.5000 +vn 0.3162 -0.9487 -0.0000 +s off +f 359/655/127 358/656/127 357/657/127 +f 363/658/128 361/659/128 362/660/128 +f 358/661/129 362/662/129 357/663/129 +f 360/664/130 363/665/130 358/661/130 +f 357/666/131 361/659/131 359/655/131 +f 359/655/132 364/667/132 360/664/132 +f 371/668/127 366/669/127 365/670/127 +f 373/671/132 372/672/132 371/668/132 +f 367/673/133 371/668/133 365/674/133 +f 366/675/134 374/676/134 368/677/134 +f 369/678/135 374/676/135 373/671/135 +f 370/679/136 368/677/136 374/676/136 +f 367/673/137 369/678/137 373/671/137 +f 389/680/131 390/681/131 388/682/131 +f 382/683/132 387/684/132 383/685/132 +f 383/685/132 387/686/132 384/687/132 +f 384/687/132 387/688/132 385/689/132 +f 385/689/132 387/690/132 386/691/132 +f 386/692/132 387/693/132 381/694/132 +f 381/694/132 387/695/132 382/683/132 +f 391/696/132 394/697/132 390/681/132 +f 395/698/130 392/699/130 394/700/130 +f 394/697/127 388/682/127 390/681/127 +f 391/701/128 393/702/128 395/698/128 +f 397/703/131 398/704/131 396/705/131 +f 399/706/132 402/707/132 398/704/132 +f 403/708/130 400/709/130 402/710/130 +f 402/707/127 396/705/127 398/704/127 +f 399/711/128 401/712/128 403/708/128 +f 417/713/132 410/714/132 420/715/132 +f 405/716/134 414/717/134 415/718/134 +f 407/719/128 411/720/128 406/721/128 +f 406/722/133 412/723/133 413/724/133 +f 404/725/127 408/726/127 405/727/127 +f 413/724/132 408/726/132 409/728/132 +f 413/724/128 418/729/128 414/717/128 +f 431/730/132 428/731/132 429/732/132 +f 415/733/138 423/734/138 420/715/138 +f 417/713/139 421/735/139 412/736/139 +f 414/717/131 416/737/131 415/718/131 +f 412/723/130 419/738/130 413/724/130 +f 420/715/127 422/739/127 417/713/127 +f 424/740/131 431/730/131 429/732/131 +f 425/741/130 430/742/130 427/743/130 +f 427/744/135 431/730/135 426/745/135 +f 439/746/132 444/747/132 440/748/132 +f 440/748/132 444/749/132 441/750/132 +f 441/750/132 444/751/132 442/752/132 +f 442/752/132 444/753/132 443/754/132 +f 443/755/132 444/756/132 438/757/132 +f 438/757/132 444/758/132 439/746/132 +f 452/759/132 454/760/132 456/761/132 +f 473/762/132 476/763/132 474/764/132 +f 548/765/130 541/766/130 545/767/130 +f 551/768/131 550/769/131 549/770/131 +f 554/771/130 556/772/130 553/773/130 +f 549/770/140 553/773/140 551/768/140 +f 552/774/141 560/775/141 559/776/141 +f 549/777/141 555/778/141 554/771/141 +f 552/779/142 555/778/142 550/780/142 +f 551/781/140 553/773/140 558/782/140 +f 552/783/142 557/784/142 556/772/142 +f 553/773/143 557/784/143 558/782/143 +f 558/782/140 560/775/140 551/781/140 +f 557/784/144 562/785/144 558/782/144 +f 552/783/142 561/786/142 557/784/142 +f 570/787/144 575/788/144 571/789/144 +f 571/789/144 575/790/144 572/791/144 +f 572/791/144 575/792/144 573/793/144 +f 573/793/144 575/794/144 574/795/144 +f 574/796/144 575/797/144 569/798/144 +f 569/798/144 575/799/144 570/787/144 +f 564/800/141 565/801/141 576/802/141 +f 565/801/141 566/803/141 576/804/141 +f 566/803/141 567/805/141 576/806/141 +f 567/805/141 568/807/141 576/808/141 +f 568/809/141 563/810/141 576/811/141 +f 563/810/141 564/800/141 576/812/141 +f 583/813/127 580/814/127 579/815/127 +f 582/816/130 579/815/130 578/817/130 +f 581/818/128 578/817/128 577/819/128 +f 601/820/131 607/821/131 605/822/131 +f 612/823/127 615/824/127 611/825/127 +f 611/825/131 614/826/131 610/827/131 +f 610/827/128 613/828/128 609/829/128 +f 618/830/131 619/831/131 617/832/131 +f 620/833/132 623/834/132 619/831/132 +f 623/834/132 625/835/132 626/836/132 +f 623/834/127 617/837/127 619/831/127 +f 620/833/128 622/838/128 624/839/128 +f 639/840/132 644/841/132 640/842/132 +f 639/840/130 638/843/130 637/844/130 +f 623/834/145 627/845/145 621/846/145 +f 622/838/146 625/835/146 624/839/146 +f 629/847/130 631/848/130 630/849/130 +f 626/836/127 631/850/127 627/845/127 +f 628/851/128 629/847/128 625/835/128 +f 625/835/132 630/849/132 626/836/132 +f 634/852/129 635/853/129 633/854/129 +f 631/848/147 634/855/147 627/856/147 +f 628/857/148 635/853/148 632/858/148 +f 632/858/130 636/859/130 631/848/130 +f 643/860/132 645/861/132 644/841/132 +f 637/862/127 643/860/127 639/840/127 +f 642/863/128 640/842/128 644/841/128 +f 647/864/149 643/860/149 641/865/149 +f 645/861/150 642/863/150 644/841/150 +f 651/866/131 649/867/131 650/868/131 +f 651/869/127 646/870/127 647/864/127 +f 649/867/128 648/871/128 645/861/128 +f 646/870/132 649/867/132 645/861/132 +f 655/872/129 654/873/129 653/874/129 +f 647/875/147 656/876/147 651/866/147 +f 655/872/148 648/877/148 652/878/148 +f 656/876/131 652/878/131 651/866/131 +f 663/879/129 661/880/129 662/881/129 +f 660/882/130 663/879/130 658/883/130 +f 657/884/131 661/880/131 659/885/131 +f 659/886/128 664/887/128 660/888/128 +f 668/889/128 671/890/128 667/891/128 +f 667/891/131 670/892/131 666/893/131 +f 666/893/127 669/894/127 665/895/127 +f 679/896/128 676/897/128 675/898/128 +f 678/899/130 675/898/130 674/900/130 +f 677/901/127 674/900/127 673/902/127 +f 359/655/127 360/664/127 358/656/127 +f 363/658/128 364/667/128 361/659/128 +f 358/661/129 363/665/129 362/662/129 +f 360/664/130 364/667/130 363/665/130 +f 357/666/131 362/903/131 361/659/131 +f 359/655/132 361/659/132 364/667/132 +f 371/668/127 372/672/127 366/669/127 +f 373/671/132 374/676/132 372/672/132 +f 367/673/133 373/671/133 371/668/133 +f 366/675/134 372/672/134 374/676/134 +f 369/678/135 370/679/135 374/676/135 +f 389/680/131 391/701/131 390/681/131 +f 391/696/132 395/904/132 394/697/132 +f 395/698/130 393/702/130 392/699/130 +f 394/697/127 392/905/127 388/682/127 +f 391/701/128 389/680/128 393/702/128 +f 397/703/131 399/711/131 398/704/131 +f 399/706/132 403/906/132 402/707/132 +f 403/708/130 401/712/130 400/709/130 +f 402/707/127 400/907/127 396/705/127 +f 399/711/128 397/703/128 401/712/128 +f 417/713/132 412/723/132 411/720/132 +f 411/720/132 410/714/132 417/713/132 +f 410/714/132 415/718/132 420/715/132 +f 410/714/134 407/908/134 415/718/134 +f 407/908/134 405/716/134 415/718/134 +f 405/716/134 408/726/134 414/717/134 +f 407/719/128 410/714/128 411/720/128 +f 409/728/133 404/909/133 413/724/133 +f 404/909/133 406/722/133 413/724/133 +f 406/722/133 411/720/133 412/723/133 +f 404/725/127 409/728/127 408/726/127 +f 413/724/132 414/717/132 408/726/132 +f 413/724/128 419/910/128 418/729/128 +f 431/730/132 430/742/132 428/731/132 +f 415/733/138 416/911/138 423/734/138 +f 417/713/139 422/739/139 421/735/139 +f 414/717/131 418/912/131 416/737/131 +f 412/723/130 421/913/130 419/738/130 +f 420/715/127 423/734/127 422/739/127 +f 424/740/131 426/914/131 431/730/131 +f 425/741/130 428/731/130 430/742/130 +f 427/744/135 430/742/135 431/730/135 +f 456/761/132 446/915/132 452/759/132 +f 446/915/132 448/916/132 450/917/132 +f 452/759/132 446/915/132 450/917/132 +f 473/762/132 472/918/132 471/919/132 +f 471/919/132 476/763/132 473/762/132 +f 476/763/132 475/920/132 474/764/132 +f 541/766/130 542/921/130 545/767/130 +f 542/921/130 543/922/130 545/767/130 +f 543/922/130 544/923/130 545/767/130 +f 545/767/130 546/924/130 547/925/130 +f 547/925/130 548/765/130 545/767/130 +f 551/768/131 552/926/131 550/769/131 +f 554/771/130 555/778/130 556/772/130 +f 549/770/140 554/771/140 553/773/140 +f 552/774/141 551/781/141 560/775/141 +f 549/777/141 550/927/141 555/778/141 +f 552/779/142 556/772/142 555/778/142 +f 553/773/143 556/772/143 557/784/143 +f 558/782/140 562/785/140 560/775/140 +f 557/784/144 561/786/144 562/785/144 +f 552/783/142 559/928/142 561/786/142 +f 583/813/127 584/929/127 580/814/127 +f 582/816/130 583/813/130 579/815/130 +f 581/818/128 582/816/128 578/817/128 +f 603/930/131 602/931/131 601/820/131 +f 601/820/131 608/932/131 607/821/131 +f 607/821/131 606/933/131 605/822/131 +f 605/822/131 604/934/131 603/930/131 +f 603/930/131 601/820/131 605/822/131 +f 612/823/127 616/935/127 615/824/127 +f 611/825/131 615/824/131 614/826/131 +f 610/827/128 614/826/128 613/828/128 +f 618/830/131 620/833/131 619/831/131 +f 620/833/132 624/839/132 623/834/132 +f 623/834/132 624/839/132 625/835/132 +f 623/834/127 621/846/127 617/837/127 +f 620/833/128 618/936/128 622/838/128 +f 639/840/132 643/860/132 644/841/132 +f 639/840/130 640/842/130 638/843/130 +f 623/834/145 626/836/145 627/845/145 +f 622/838/146 628/851/146 625/835/146 +f 629/847/130 632/858/130 631/848/130 +f 626/836/127 630/849/127 631/850/127 +f 628/851/128 632/937/128 629/847/128 +f 625/835/132 629/847/132 630/849/132 +f 634/852/129 636/859/129 635/853/129 +f 631/848/147 636/859/147 634/855/147 +f 628/857/148 633/938/148 635/853/148 +f 632/858/130 635/853/130 636/859/130 +f 643/860/132 646/870/132 645/861/132 +f 637/862/127 641/865/127 643/860/127 +f 642/863/128 638/939/128 640/842/128 +f 647/864/149 646/870/149 643/860/149 +f 645/861/150 648/871/150 642/863/150 +f 651/866/131 652/878/131 649/867/131 +f 651/869/127 650/868/127 646/870/127 +f 649/867/128 652/940/128 648/871/128 +f 646/870/132 650/868/132 649/867/132 +f 655/872/129 656/876/129 654/873/129 +f 647/875/147 654/941/147 656/876/147 +f 655/872/148 653/942/148 648/877/148 +f 656/876/131 655/872/131 652/878/131 +f 663/879/129 664/887/129 661/880/129 +f 660/882/130 664/887/130 663/879/130 +f 657/884/131 662/881/131 661/880/131 +f 659/886/128 661/880/128 664/887/128 +f 668/889/128 672/943/128 671/890/128 +f 667/891/131 671/890/131 670/892/131 +f 666/893/127 670/892/127 669/894/127 +f 679/896/128 680/944/128 676/897/128 +f 678/899/130 679/896/130 675/898/130 +f 677/901/127 678/899/127 674/900/127 +s 1 +f 381/694/130 376/945/151 375/946/130 +f 386/692/152 375/946/130 380/947/152 +f 384/687/131 379/948/153 378/949/131 +f 382/683/151 377/950/154 376/945/151 +f 385/689/153 380/951/152 379/948/153 +f 383/685/154 378/949/131 377/950/154 +f 443/755/152 432/952/130 437/953/152 +f 438/757/130 433/954/151 432/952/130 +f 441/750/131 436/955/153 435/956/131 +f 439/746/151 434/957/154 433/954/151 +f 442/752/153 437/958/152 436/955/153 +f 440/748/154 435/956/131 434/957/154 +f 447/959/155 446/960/127 445/961/127 +f 449/962/156 448/963/157 447/959/155 +f 451/964/158 450/917/159 449/962/156 +f 453/965/160 452/759/161 451/964/158 +f 455/966/128 454/967/162 453/965/160 +f 460/968/163 464/969/164 465/970/165 +f 458/971/166 462/972/167 463/973/168 +f 445/974/127 457/975/169 447/976/155 +f 458/971/166 464/969/164 459/977/170 +f 453/978/160 460/968/163 455/979/128 +f 459/977/170 453/978/160 451/964/158 +f 458/971/166 451/964/158 449/962/156 +f 457/975/169 449/962/156 447/976/155 +f 474/764/171 470/980/172 469/981/173 +f 472/982/174 468/983/175 467/984/176 +f 466/985/128 475/986/177 476/987/128 +f 473/762/178 469/981/173 468/983/175 +f 466/988/128 460/968/163 465/970/165 +f 462/972/167 445/974/127 461/989/127 +f 467/984/176 471/990/127 472/982/174 +f 461/989/127 467/991/176 462/972/167 +f 467/991/176 463/973/168 462/972/167 +f 468/983/175 464/969/164 463/973/168 +f 469/981/173 465/970/165 464/969/164 +f 465/970/165 470/992/172 466/988/128 +f 480/993/179 487/994/180 481/995/181 +f 479/996/182 484/997/183 485/998/184 +f 481/995/181 488/999/185 482/1000/186 +f 480/1001/179 485/998/184 486/1002/187 +f 478/1003/188 483/1004/189 484/997/183 +f 482/1000/186 483/1004/189 477/1005/190 +f 490/1006/191 485/998/184 484/997/183 +f 489/1007/192 484/997/183 483/1004/189 +f 488/999/185 489/1007/192 483/1004/189 +f 493/1008/193 488/999/185 487/994/180 +f 486/1009/187 493/1008/193 487/994/180 +f 491/1010/194 486/1002/187 485/998/184 +f 489/1007/192 500/1011/195 495/1012/196 +f 493/1008/193 498/1013/197 499/1014/198 +f 490/1006/191 497/1015/199 491/1010/194 +f 494/1016/200 499/1014/198 500/1011/195 +f 491/1010/194 498/1017/197 492/1018/201 +f 489/1007/192 496/1019/202 490/1006/191 +f 511/1020/203 504/1021/179 505/1022/182 +f 503/1023/181 508/1024/204 502/1025/186 +f 512/1026/205 505/1022/182 506/1027/188 +f 504/1028/179 509/1029/206 503/1023/181 +f 502/1025/186 507/1030/207 501/1031/190 +f 507/1030/207 506/1027/188 501/1031/190 +f 509/1029/206 514/1032/208 508/1024/204 +f 507/1030/207 514/1032/208 513/1033/209 +f 507/1030/207 518/1034/210 512/1026/205 +f 512/1026/205 517/1035/211 511/1020/203 +f 510/1036/212 517/1035/211 516/1037/213 +f 510/1038/212 515/1039/214 509/1029/206 +f 513/1033/209 524/1040/215 518/1034/210 +f 517/1035/211 522/1041/216 516/1037/213 +f 521/1042/217 514/1032/208 515/1039/214 +f 518/1034/210 523/1043/218 517/1035/211 +f 522/1044/216 515/1039/214 516/1045/213 +f 520/1046/219 513/1033/209 514/1032/208 +f 525/1047/132 540/1048/220 532/1049/220 +f 530/1050/221 539/1051/127 538/1052/221 +f 528/1053/222 537/1054/129 536/1055/222 +f 527/1056/128 534/1057/135 526/1058/135 +f 532/1049/220 539/1059/127 531/1060/127 +f 530/1050/221 537/1054/129 529/1061/129 +f 527/1056/128 536/1055/222 535/1062/128 +f 526/1058/135 533/1063/132 525/1047/132 +f 534/1057/223 543/1064/224 542/1065/223 +f 533/1063/134 542/1066/223 541/1067/134 +f 533/1063/134 548/1068/225 540/1048/225 +f 540/1048/225 547/1069/226 539/1059/226 +f 539/1051/226 546/1070/227 538/1052/227 +f 537/1054/228 546/1071/227 545/1072/228 +f 537/1054/228 544/1073/229 536/1055/229 +f 536/1055/229 543/1074/224 535/1062/224 +f 568/809/230 569/798/130 563/810/130 +f 569/798/130 564/800/231 563/810/130 +f 572/791/131 567/805/232 566/803/131 +f 564/800/231 571/789/233 565/801/233 +f 567/805/232 574/795/230 568/807/230 +f 571/789/233 566/803/131 565/801/233 +f 600/1075/220 585/1076/132 592/1077/220 +f 598/1078/221 591/1079/127 590/1080/221 +f 596/1081/222 589/1082/129 588/1083/222 +f 586/1084/135 595/1085/128 587/1086/128 +f 591/1087/127 600/1075/220 592/1077/220 +f 597/1088/129 590/1080/221 589/1082/129 +f 595/1085/128 588/1083/222 587/1086/128 +f 585/1076/132 594/1089/135 586/1084/135 +f 594/1089/234 603/1090/235 595/1085/235 +f 593/1091/133 602/1092/234 594/1089/234 +f 608/1093/236 593/1091/133 600/1075/236 +f 607/1094/237 600/1075/236 599/1095/237 +f 606/1096/238 599/1097/237 598/1078/238 +f 597/1088/239 606/1098/238 598/1078/238 +f 604/1099/240 597/1088/239 596/1081/240 +f 603/1100/235 596/1081/240 595/1085/235 +f 381/694/130 382/683/151 376/945/151 +f 386/692/152 381/694/130 375/946/130 +f 384/687/131 385/689/153 379/948/153 +f 382/683/151 383/685/154 377/950/154 +f 385/689/153 386/691/152 380/951/152 +f 383/685/154 384/687/131 378/949/131 +f 443/755/152 438/757/130 432/952/130 +f 438/757/130 439/746/151 433/954/151 +f 441/750/131 442/752/153 436/955/153 +f 439/746/151 440/748/154 434/957/154 +f 442/752/153 443/754/152 437/958/152 +f 440/748/154 441/750/131 435/956/131 +f 447/959/155 448/963/157 446/960/127 +f 449/962/156 450/917/159 448/963/157 +f 451/964/158 452/759/161 450/917/159 +f 453/965/160 454/967/162 452/759/161 +f 455/966/128 456/1101/128 454/967/162 +f 460/968/163 459/977/170 464/969/164 +f 458/971/166 457/975/169 462/972/167 +f 458/971/166 463/973/168 464/969/164 +f 459/977/170 460/968/163 453/978/160 +f 458/971/166 459/977/170 451/964/158 +f 457/975/169 458/971/166 449/962/156 +f 474/764/171 475/986/177 470/980/172 +f 472/982/174 473/762/178 468/983/175 +f 466/985/128 470/980/172 475/986/177 +f 473/762/178 474/764/171 469/981/173 +f 466/988/128 455/979/128 460/968/163 +f 462/972/167 457/975/169 445/974/127 +f 467/984/176 461/1102/127 471/990/127 +f 467/991/176 468/983/175 463/973/168 +f 468/983/175 469/981/173 464/969/164 +f 469/981/173 470/992/172 465/970/165 +f 480/993/179 486/1009/187 487/994/180 +f 479/996/182 478/1003/188 484/997/183 +f 481/995/181 487/994/180 488/999/185 +f 480/1001/179 479/996/182 485/998/184 +f 478/1003/188 477/1005/190 483/1004/189 +f 482/1000/186 488/999/185 483/1004/189 +f 490/1006/191 491/1010/194 485/998/184 +f 489/1007/192 490/1006/191 484/997/183 +f 488/999/185 494/1016/200 489/1007/192 +f 493/1008/193 494/1016/200 488/999/185 +f 486/1009/187 492/1103/201 493/1008/193 +f 491/1010/194 492/1018/201 486/1002/187 +f 489/1007/192 494/1016/200 500/1011/195 +f 493/1008/193 492/1103/201 498/1013/197 +f 490/1006/191 496/1019/202 497/1015/199 +f 494/1016/200 493/1008/193 499/1014/198 +f 491/1010/194 497/1015/199 498/1017/197 +f 489/1007/192 495/1012/196 496/1019/202 +f 511/1020/203 510/1036/212 504/1021/179 +f 503/1023/181 509/1029/206 508/1024/204 +f 512/1026/205 511/1020/203 505/1022/182 +f 504/1028/179 510/1038/212 509/1029/206 +f 502/1025/186 508/1024/204 507/1030/207 +f 507/1030/207 512/1026/205 506/1027/188 +f 509/1029/206 515/1039/214 514/1032/208 +f 507/1030/207 508/1024/204 514/1032/208 +f 507/1030/207 513/1033/209 518/1034/210 +f 512/1026/205 518/1034/210 517/1035/211 +f 510/1036/212 511/1020/203 517/1035/211 +f 510/1038/212 516/1045/213 515/1039/214 +f 513/1033/209 519/1104/241 524/1040/215 +f 517/1035/211 523/1043/218 522/1041/216 +f 521/1042/217 520/1046/219 514/1032/208 +f 518/1034/210 524/1040/215 523/1043/218 +f 522/1044/216 521/1042/217 515/1039/214 +f 520/1046/219 519/1104/241 513/1033/209 +f 525/1047/132 533/1063/132 540/1048/220 +f 530/1050/221 531/1105/127 539/1051/127 +f 528/1053/222 529/1061/129 537/1054/129 +f 527/1056/128 535/1062/128 534/1057/135 +f 532/1049/220 540/1048/220 539/1059/127 +f 530/1050/221 538/1052/221 537/1054/129 +f 527/1056/128 528/1053/222 536/1055/222 +f 526/1058/135 534/1057/135 533/1063/132 +f 534/1057/223 535/1062/224 543/1064/224 +f 533/1063/134 534/1057/223 542/1066/223 +f 533/1063/134 541/1106/134 548/1068/225 +f 540/1048/225 548/1107/225 547/1069/226 +f 539/1051/226 547/1108/226 546/1070/227 +f 537/1054/228 538/1052/227 546/1071/227 +f 537/1054/228 545/1109/228 544/1073/229 +f 536/1055/229 544/1110/229 543/1074/224 +f 568/809/230 574/796/230 569/798/130 +f 569/798/130 570/787/231 564/800/231 +f 572/791/131 573/793/232 567/805/232 +f 564/800/231 570/787/231 571/789/233 +f 567/805/232 573/793/232 574/795/230 +f 571/789/233 572/791/131 566/803/131 +f 600/1075/220 593/1091/132 585/1076/132 +f 598/1078/221 599/1097/127 591/1079/127 +f 596/1081/222 597/1088/129 589/1082/129 +f 586/1084/135 594/1089/135 595/1085/128 +f 591/1087/127 599/1095/127 600/1075/220 +f 597/1088/129 598/1078/221 590/1080/221 +f 595/1085/128 596/1081/222 588/1083/222 +f 585/1076/132 593/1091/132 594/1089/135 +f 594/1089/234 602/1111/234 603/1090/235 +f 593/1091/133 601/1112/133 602/1092/234 +f 608/1093/236 601/1113/133 593/1091/133 +f 607/1094/237 608/1114/236 600/1075/236 +f 606/1096/238 607/1115/237 599/1097/237 +f 597/1088/239 605/1116/239 606/1098/238 +f 604/1099/240 605/1117/239 597/1088/239 +f 603/1100/235 604/1118/240 596/1081/240 diff --git a/src/main/resources/assets/hbm/textures/armor/t51_arm.png b/src/main/resources/assets/hbm/textures/armor/t51_arm.png index fa6f976194e7eeb13ea83fb16c9524dcca1cbbb4..8e0fa8011f212858d6750238e936ae8153034668 100644 GIT binary patch delta 973 zcmV;;12X*f1M&xuGk*iANkl1C~Nn9f2|TL4G~qNY<&GxFm_!Rgb+B6lhuynaNd-K9ZG3wk$~mJ zR3#2VZQ~%+Hh&I6ZDVhQ?&r=_Mzm-kU4NB0Ro{)I#5CJhq2KQd+k+s0@B3@j4-}0r zO!M09wsDaSmL!R=^m;vxXCgAs;e_7Z-8Ed-g-H>i)9D~d5=^I4+~410I-PQ2JDmo}K~#9v&Vt-hXg7+~~`WBRY}!v4n}UD)|NE z^Ds#g0Ki}{z+^JPU@*wqwuLmq_dE}+Rx8UjTdfvWs}*LmnbcUCrT~DGlM`HAT!2!F z#bP1ks$;!L-hcCu^_Om;%%gd4>O5K{q(X}#bsnu6N{<2`ue@%LO6Ta))6*_>Xdx6Ti<5PN z6j#~x^|et3b#rsW^}D>htTbKZJbHC?rMy%5e`DP;fO#07-iwRznop>^_rf=6|z-J_d7UA$8NDH)AMy5}1w+S}V(>3wP5 zV>)C)JT~x#!>c})!VLi8`0uF*kH-r)hy~K00000NkvXXu0mjfP%__C delta 461 zcmV;;0W$vb2lfMyGk*cCNklb>!3`IW+9j2%8+95aS&?{KJLhq0vYc8lR z6<|A3M9P#60(?slTV%dI1xio|N_=5XrRNVUq>)FIq~`}}Jg|@?=0h$?hbNL~VwVY( zqE>pTLlcN3F_$f5_#WlOQJ4I3W6Die>ge5}pX>25Dy&u43eN=J| z25OEf@~(fD-hb6DCDeo-ZRo8$X0}ils*M?;)ZOr3GL7BUUXyc$pS0a(wx!o{cK~MA zs2QO&f1_FM_|r}le;H#KdFZoz6>7#&7pjd5)y9m_aAxb_002J-1^@s6sQooP00004b3#c}2nYxW zd_@m+W9LSSV2dP*GjsU@%Z!Wnoxb zv;q$a$}Ni!l1t9>yn;0mhjOyk)*h}gD<`X5E~~DxFsv*~04vK9z{;`&u(B)xtSn0a zE6WnViYx&rCo2d7IF18KDOdh_y^hVz%{gnu2jNw`Y^bGPuY*#G{XM?-)IT3aGBPM4 zVj)xj3$e&V4j4(A*5t}>Stfux((;1oEK68n-H;H1a=DC3r80I6heKRlU19gpI{^1Y zF(M{G)0)t$-4VH<7ngDq&+|1K)l7Wx@g}rKr_vh3J!~cjP9k*XxyJ$FDHF7iWYqqKZIT$GrM7 zIpwoq8gas|udfRuDhu)Pw$*BJ$ry$a$u69%IM&zKmDLplfv}7eSt4DrUatdq7yZ|? zCcgRl^QkiF8S}0Te%+=$AB{%bWib?HSv<24rFX7_WtrFyUt$Zuzs)Z)^KO~X0P`jK zrB4Ac*MUm=TMT)~lJYz94wzqk@)`i}*1m?T9c1R&u>QhFjk|97`>T(0>6f;y!^6Xn zjafT8J6vU4US0y2^O%*@4Rl=(Sy!4y6acu|0p7kRjCt^r%FLsm@@^>W5zq3<4?diq z4htQ#cu}j>@Q3*s0AP1_x`X-Vs*X42olH?<6~ludYd9Q6dxyi}bj#w+mj@4qEEVW< zI-%!zI6Xbh?53m92-AWBSx(d-4r^JZP~ zynujH${HPCa!^XgmLTagHj5Pzr2vo_Vs;#7%!1qPcIdk9RM%pbK51E@ZrErv68|Zs zW2a)$X@n5iwk=YPGKe0m6Cx{40t;Pa9U-!9dtwNr=#zilZa3W8+KQ|sU2nJB<+5hh z9wvW$d^}c{a5r2udc9uh=;&xn7t>6JsGCi`7(b8P$;n9x;3R8V4$m?@vaEA37~tuX z$FM9D{qrHW1@p);e=B!46akxAiX#2y<|Z@Uvds4}Fcbar!OZaYH z>G_{|H*nr}rDQEbgJteQWU;X)ugo$uSmw?>W_g|mLP##c*nqqY4VJkJ4e+vGIV?ki zW$uMU0*Zu;m;c+ZKZY`deE-8wQ|qn(v-kZC!x+nxUU>4P^VA~)S<9J)3c%OB48ur- zXc~y2?kqn^77zEUqXl3^mH<{{2|)S55M9^9 ztleprR`jzXb?5fpvu49dr-#|Dbb2<-yE~K@XJ==Hk|kwXqOmQJquI*{ZnCocq-ib! iv%>iC#-fips>XjohWdWZdsrg?0000Wb(X~KN+3wh!;<$$R+C9Hn63Uet z6@)lO2};A@!_RlZKl=L&_f6k=x76~v@cFjQXH>dlnJd59?dkInvogNXx@o=P@||@v zH#6T|dSlW|mL?B{id|bzN&GZfEt98%MfQzj-)PTnxjL!kpCi9|pp%-{8Q^^5nP z{^?j3BlknE?6~vEQc?#82G2 zlc!sB=jZ$FIKva!UNmP6B5n=igu|9cZYnuU2WA5X MPgg&ebxsLQ0Aj!JzyJUM diff --git a/src/main/resources/assets/hbm/textures/armor/t51_helmet.png b/src/main/resources/assets/hbm/textures/armor/t51_helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..4eca14ea6969140f3bcb55ade7ab9709be0d7090 GIT binary patch literal 996 zcmV~{mXw}e0J%(V%x%hlO--WY9pA=9LJd{i|V5&Dn0iYZqvV~WN@tEtlRBoW<8H$1_gCg1IgJ;Z)d$-Io1}00_6jU?M7&Ave*+5KgXhi~d90$NOcw+?U z7{@#C-jg+U_l|g|_3b0_;rWAP#@~L9@$uqeLSoVEUteFFC*btY+eciV=}59oFDv`T z2zccEo~h_|yIK#~SI=6^U%7?w^a4fxzWyvG0Dv(2rU-C=$s^6=V@(xhf;UQlZSWf) zAP?Rs0lx2-I@be0yWQ5FiE8E-dJa%M;vO6va3uUtoy z{9$G|9AbZe9{_N8cnAP!wOYAlN@h4n#a00DZ}b7e6~O=8q;u?)$>MG51B3)z zUS4L_HyRB9(@e|Cfc#ioDSbc;5do@uK%StIKL-F7^Z}vAx66>rb=*72ArXcH0d7X>*bb>MA`o}LX@izv#A~1A{!ZHKvdP~bVw8SPsK(SZ^0L6YXINfS1bUe7#DdMWl_av>h*ek^hRQg zi#(}QW`Fc^>f+iE187SNN(`Uvb>gcATb_#>sna~D*Xv0$H9r>5h;UbBFb{$1Q5Fne)0yv&P zxy$@-H8zlLGl~iY{2xqp_iRe5K&IU>o7(MminpWXaw!$yyN$KmZENR{9E#emqbQfl r#U_f61fp)&MTz173FwsVx^w9ZK4Y^xxee2200000NkvXXu0mjfn?{cV delta 338 zcmV-Y0j>Vi2K)k$Gk*ayNkl|E6bqT@>J#?pTz&7roiUeth zKgB^-m3ITV;q@mtf#?EcA(4dysST|~j{c^J&@UnhQ=u~=iJOIpC1wf9LJ}W(O@5CD z;`Oz=gu0Lhw1y@+|MsA`OQ;KJnDrqZh_z0g_nZ>$5;7IyfqxiDp+=L0&WJTV4<)J6 z+LC*Dy;X%$LyXw-g@|aT?_~DUim&W?+z~p{nWu_aQEJ@EZGm%+5o|Q8fZ@w7Z15kcK-UXfI=6!6M@zW4TMn{4*#Xyr1JP kA$LM%i`oiz33VZjH#7`X1uy`%?EnA(07*qoM6N<$f^STm>;M1& From dd0a604aa68e09f570fe8470c8ad3d1de71b167a Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 22 Sep 2025 17:14:28 +1000 Subject: [PATCH 06/10] show current tool area ability next to crosshair, to prevent accidentally breaking yo shit --- .../com/hbm/items/tool/ItemToolAbility.java | 92 +++++++++++++----- .../textures/gui/tool/gui_tool_ability.png | Bin 4552 -> 4454 bytes 2 files changed, 69 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index 589938c88..41a3a6590 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -4,29 +4,35 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Comparator; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.Random; import java.util.Set; +import org.lwjgl.opengl.GL11; + import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; -import com.hbm.inventory.gui.GUIScreenToolAbility; -import com.hbm.items.IItemControlReceiver; -import com.hbm.items.IKeybindReceiver; -import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.blocks.ModBlocks; +import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.handler.ability.AvailableAbilities; import com.hbm.handler.ability.IBaseAbility; import com.hbm.handler.ability.IToolAreaAbility; import com.hbm.handler.ability.IToolHarvestAbility; import com.hbm.handler.ability.ToolPreset; +import com.hbm.interfaces.IItemHUD; +import com.hbm.inventory.gui.GUIScreenToolAbility; +import com.hbm.items.IItemControlReceiver; +import com.hbm.items.IKeybindReceiver; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.tileentity.IGUIProvider; +import com.hbm.util.Tuple.Pair; import api.hbm.item.IDepthRockTool; import cpw.mods.fml.relauncher.ReflectionHelper; @@ -34,6 +40,10 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.GuiIngame; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.EntityLivingBase; @@ -53,12 +63,14 @@ import net.minecraft.network.play.server.S23PacketBlockChange; import net.minecraft.stats.StatList; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.IShearable; import net.minecraftforge.event.world.BlockEvent; -public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIProvider, IItemControlReceiver, IKeybindReceiver { - +public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIProvider, IItemControlReceiver, IKeybindReceiver, IItemHUD { + protected boolean isShears = false; protected EnumToolType toolType; protected EnumRarity rarity = EnumRarity.common; @@ -69,7 +81,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro protected boolean rockBreaker = false; public static enum EnumToolType { - + PICKAXE( Sets.newHashSet(new Material[] { Material.iron, Material.anvil, Material.rock, Material.glass }), Sets.newHashSet(new Block[] { Blocks.cobblestone, Blocks.double_stone_slab, Blocks.stone_slab, Blocks.stone, Blocks.sandstone, Blocks.mossy_cobblestone, Blocks.iron_ore, Blocks.iron_block, Blocks.coal_ore, Blocks.gold_block, Blocks.gold_ore, Blocks.diamond_ore, Blocks.diamond_block, Blocks.ice, Blocks.netherrack, Blocks.lapis_ore, Blocks.lapis_block, Blocks.redstone_ore, Blocks.lit_redstone_ore, Blocks.rail, Blocks.detector_rail, Blocks.golden_rail, Blocks.activator_rail }) @@ -98,7 +110,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro public Set materials = new HashSet(); public Set blocks = new HashSet(); } - + public ItemToolAbility setShears() { this.isShears = true; return this; @@ -109,7 +121,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro this.damage = damage; this.movement = movement; this.toolType = type; - + // hacky workaround, might be good to rethink this entire system if(type == EnumToolType.MINER) { this.setHarvestLevel("pickaxe", material.getHarvestLevel()); @@ -163,15 +175,15 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro World world = player.worldObj; Block block = world.getBlock(x, y, z); - - /* + + /* * The original implementation of this always returned FALSE which uses the vanilla block break code. * This one now returns TRUE when an ability applies and instead relies on breakExtraBlock, which has the minor * issue of only running on the sever, while the client uses the vanilla implementation. breakExtraBlock was only * meant to be used for AoE or vein miner and not for the block that's being mined, hence break EXTRA block. * The consequence was that the server would fail to break keyholes since breakExtraBlock is supposed to exclude * them, while the client happily removes the block, causing a desync. - * + * * Since keyholes aren't processable and exempt from silk touch anyway, we just default to the vanilla implementation in every case. */ if(block == ModBlocks.stone_keyhole || block == ModBlocks.stone_keyhole_meta) return false; @@ -187,7 +199,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro preset.harvestAbility.preHarvestAll(preset.harvestAbilityLevel, world, player); boolean skipRef = preset.areaAbility.onDig(preset.areaAbilityLevel, world, x, y, z, player, this); - + if(!skipRef) { breakExtraBlock(world, x, y, z, player, x, y, z); } @@ -291,7 +303,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro Block block = world.getBlock(x, y, z); int meta = world.getBlockMetadata(x, y, z); - + if(!(canHarvestBlock(block, stack) || canShearBlock(block, stack, world, x, y, z)) || (block.getBlockHardness(world, x, y, z) == -1.0F && block.getPlayerRelativeBlockHardness(player, world, x, y, z) == 0.0F) || @@ -302,8 +314,8 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro float strength = ForgeHooks.blockStrength(block, player, world, x, y, z); if( - !ForgeHooks.canHarvestBlock(block, player, meta) || - refStrength / strength > 10f || + !ForgeHooks.canHarvestBlock(block, player, meta) || + refStrength / strength > 10f || refBlock.getPlayerRelativeBlockHardness(player, world, refX, refY, refZ) < 0 ) return; @@ -320,7 +332,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro /** Assumes a canShearBlock check has passed, will most likely crash otherwise! */ public static void shearBlock(World world, int x, int y, int z, Block block, EntityPlayer player) { - + ItemStack held = player.getHeldItem(); IShearable target = (IShearable) block; @@ -369,7 +381,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro player.destroyCurrentEquippedItem(); } } - + if(removedByPlayer && canHarvest) { try { blockCaptureDrops.invoke(block, true); @@ -384,7 +396,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro } catch (InvocationTargetException e) { // Might be possible? Not in practice, though MainRegistry.logger.error("Failed to capture drops for block " + block, e); - } + } } } @@ -441,9 +453,9 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro NBTTagList nbtPresets = nbt.getTagList("abilityPresets", 10); int numPresets = Math.min(nbtPresets.tagCount(), 99); - + presets = new ArrayList(numPresets); - + for(int i = 0; i < numPresets; i++) { NBTTagCompound nbtPreset = nbtPresets.getCompoundTagAt(i); ToolPreset preset = new ToolPreset(); @@ -544,12 +556,12 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro @Override public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean state) { - + if(keybind == EnumKeybind.ABILITY_CYCLE && state) { World world = player.worldObj; if(!canOperate(stack)) return; - + Configuration config = getConfiguration(stack); if(config.presets.size() < 2 || world.isRemote) return; @@ -569,4 +581,38 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro public void handleKeybindClient(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean state) { if(state) player.openGui(MainRegistry.instance, 0, player.worldObj, 0, 0, 0); } + + private static final Map> abilityGui = new HashMap<>(); + + static { + abilityGui.put(IToolAreaAbility.RECURSION, new Pair(0, 138)); + abilityGui.put(IToolAreaAbility.HAMMER, new Pair(16, 138)); + abilityGui.put(IToolAreaAbility.HAMMER_FLAT, new Pair(32, 138)); + abilityGui.put(IToolAreaAbility.EXPLOSION, new Pair(48, 138)); + } + + @Override + public void renderHUD(Pre event, ElementType type, EntityPlayer player, ItemStack stack) { + if(type != ElementType.CROSSHAIRS) return; + + Configuration config = getConfiguration(stack); + ToolPreset preset = config.getActivePreset(); + Pair uv = abilityGui.get(preset.areaAbility); + + if(uv == null) return; + + GuiIngame gui = Minecraft.getMinecraft().ingameGUI; + int size = 16; + + GL11.glPushMatrix(); + Minecraft.getMinecraft().renderEngine.bindTexture(GUIScreenToolAbility.texture); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR, 1, 0); + gui.drawTexturedModalRect(event.resolution.getScaledWidth() / 2 - size - 8, event.resolution.getScaledHeight() / 2 + 8, uv.key, uv.value, size, size); + OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); + } + } diff --git a/src/main/resources/assets/hbm/textures/gui/tool/gui_tool_ability.png b/src/main/resources/assets/hbm/textures/gui/tool/gui_tool_ability.png index fc0a54e7f336512f8e6457d430a75e33e67d89a4..877b3bdd3ee07e05aa2d7c087b33b0e222d44063 100644 GIT binary patch literal 4454 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 From c8fe3cc09520e1b2db6ffdc3fe82a80d4f32fff2 Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 22 Sep 2025 17:33:35 +1000 Subject: [PATCH 07/10] add client config to adjust tool hud indicator position --- src/main/java/com/hbm/config/ClientConfig.java | 4 ++++ src/main/java/com/hbm/items/tool/ItemToolAbility.java | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/config/ClientConfig.java b/src/main/java/com/hbm/config/ClientConfig.java index e1e8dd407..54e119fd1 100644 --- a/src/main/java/com/hbm/config/ClientConfig.java +++ b/src/main/java/com/hbm/config/ClientConfig.java @@ -35,6 +35,8 @@ public class ClientConfig extends RunningConfig { public static ConfigWrapper RENDER_REBAR_SIMPLE = new ConfigWrapper(false); public static ConfigWrapper RENDER_HELIOSTAT_BEAM_LIMIT = new ConfigWrapper(250); public static ConfigWrapper RENDER_REBAR_LIMIT = new ConfigWrapper(250); + public static ConfigWrapper TOOL_HUD_INDICATOR_X = new ConfigWrapper(0); + public static ConfigWrapper TOOL_HUD_INDICATOR_Y = new ConfigWrapper(0); private static void initDefaults() { configMap.put("GEIGER_OFFSET_HORIZONTAL", GEIGER_OFFSET_HORIZONTAL); @@ -59,6 +61,8 @@ public class ClientConfig extends RunningConfig { configMap.put("RENDER_REBAR_SIMPLE", RENDER_REBAR_SIMPLE); configMap.put("RENDER_HELIOSTAT_BEAM_LIMIT", RENDER_HELIOSTAT_BEAM_LIMIT); configMap.put("RENDER_REBAR_LIMIT", RENDER_REBAR_LIMIT); + configMap.put("TOOL_HUD_INDICATORE_X", TOOL_HUD_INDICATOR_X); + configMap.put("TOOL_HUD_INDICATORE_Y", TOOL_HUD_INDICATOR_Y); } /** Initializes defaults, then reads the config file if it exists, then writes the config file. */ diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index 41a3a6590..cca7f351b 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -18,6 +18,7 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; import com.hbm.blocks.ModBlocks; +import com.hbm.config.ClientConfig; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.handler.ability.AvailableAbilities; import com.hbm.handler.ability.IBaseAbility; @@ -603,12 +604,14 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro GuiIngame gui = Minecraft.getMinecraft().ingameGUI; int size = 16; + int ox = ClientConfig.TOOL_HUD_INDICATOR_X.get(); + int oy = ClientConfig.TOOL_HUD_INDICATOR_Y.get(); GL11.glPushMatrix(); Minecraft.getMinecraft().renderEngine.bindTexture(GUIScreenToolAbility.texture); GL11.glEnable(GL11.GL_BLEND); OpenGlHelper.glBlendFunc(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR, 1, 0); - gui.drawTexturedModalRect(event.resolution.getScaledWidth() / 2 - size - 8, event.resolution.getScaledHeight() / 2 + 8, uv.key, uv.value, size, size); + gui.drawTexturedModalRect(event.resolution.getScaledWidth() / 2 - size - 8 + ox, event.resolution.getScaledHeight() / 2 + 8 + oy, uv.key, uv.value, size, size); OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); GL11.glDisable(GL11.GL_BLEND); GL11.glPopMatrix(); From f0820947409c665201f41a46724679f6e2442f26 Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 22 Sep 2025 19:16:15 +1000 Subject: [PATCH 08/10] big dumbass momento --- src/main/java/com/hbm/config/ClientConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/config/ClientConfig.java b/src/main/java/com/hbm/config/ClientConfig.java index 54e119fd1..855b4a88a 100644 --- a/src/main/java/com/hbm/config/ClientConfig.java +++ b/src/main/java/com/hbm/config/ClientConfig.java @@ -61,8 +61,8 @@ public class ClientConfig extends RunningConfig { configMap.put("RENDER_REBAR_SIMPLE", RENDER_REBAR_SIMPLE); configMap.put("RENDER_HELIOSTAT_BEAM_LIMIT", RENDER_HELIOSTAT_BEAM_LIMIT); configMap.put("RENDER_REBAR_LIMIT", RENDER_REBAR_LIMIT); - configMap.put("TOOL_HUD_INDICATORE_X", TOOL_HUD_INDICATOR_X); - configMap.put("TOOL_HUD_INDICATORE_Y", TOOL_HUD_INDICATOR_Y); + configMap.put("TOOL_HUD_INDICATOR_X", TOOL_HUD_INDICATOR_X); + configMap.put("TOOL_HUD_INDICATOR_Y", TOOL_HUD_INDICATOR_Y); } /** Initializes defaults, then reads the config file if it exists, then writes the config file. */ From c9155b55ba41f7efb8b8939800f0945861b1a895 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 22 Sep 2025 11:32:20 +0200 Subject: [PATCH 09/10] maybe i should push before something breaks completely --- changelog | 8 +++++++- .../hbm/entity/train/EntityRailCarElectric.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 6 ------ .../com/hbm/items/special/ItemStarterKit.java | 17 ----------------- src/main/java/com/hbm/lib/Library.java | 2 -- src/main/java/com/hbm/main/MainRegistry.java | 2 ++ 6 files changed, 10 insertions(+), 27 deletions(-) diff --git a/changelog b/changelog index e636a3177..8cdfb58d0 100644 --- a/changelog +++ b/changelog @@ -11,7 +11,13 @@ * Gibbing NPCs now also spawns bones, if supported by the skeletonizer * Gibbed bones only have a 50% chance of spawning and come with a unique red texture * Gibbed bones have a way shorter lifetime and higher gravity to match the gib particles +* Updated the factory structure +* NBT based structures now have a config for the spawn weight, unlike the old structure configs, higher numbers make structures more frequent +* Mobs are no longer registered in the vanilla namespace +* Drills no longer clip through depth rock, depth rock now has to be cleared before bedrock ore becomes accessible +* When an area modifier is selected on a tool, an icon will now render next to the crosshair to make it obvious that the modifier is active ## Fixed * Fixed wood burner only being able to create one ash pile per item burned, even when that item yields more, creating a backlog in the internal ash value -* Fixed some QMAW link icons not having the correct block lighting applied \ No newline at end of file +* Fixed some QMAW link icons not having the correct block lighting applied +* Fixed a rare crash caused by RBMK neutron calculations happening in unloaded chunks \ No newline at end of file diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java b/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java index bf794147c..5e6847d61 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java @@ -60,7 +60,7 @@ public abstract class EntityRailCarElectric extends EntityRailCarRidable { this.setPower(this.getPower() + powerTransfered); } } else if(stack != null) { - if(stack.getItem() == ModItems.battery_creative || stack.getItem() == ModItems.fusion_core_infinite) { + if(stack.getItem() == ModItems.battery_creative) { this.setPower(this.getMaxPower()); } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 1a6182ca8..e7b2d800a 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1666,7 +1666,6 @@ public class ModItems { public static Item battery_potatos; public static Item hev_battery; public static Item fusion_core; - public static Item fusion_core_infinite; public static Item energy_core; public static Item fuse; public static Item redcoil_capacitor; @@ -2111,7 +2110,6 @@ public class ModItems { public static Item fleija_kit; public static Item prototype_kit; public static Item missile_kit; - @Deprecated public static Item t45_kit; public static Item euphemium_kit; public static Item solinium_kit; public static Item hazmat_kit; @@ -3934,7 +3932,6 @@ public class ModItems { battery_potatos = new ItemPotatos(500000, 0, 100).setUnlocalizedName("battery_potatos").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_potatos"); hev_battery = new ItemFusionCore(150000).setUnlocalizedName("hev_battery").setMaxStackSize(4).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":hev_battery"); fusion_core = new ItemFusionCore(2500000).setUnlocalizedName("fusion_core").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fusion_core"); - fusion_core_infinite = new Item().setUnlocalizedName("fusion_core_infinite").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fusion_core_infinite"); energy_core = new ItemBattery(10000000, 0, 1000).setUnlocalizedName("energy_core").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":energy_core"); fuse = new ItemCustomLore().setUnlocalizedName("fuse").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fuse"); redcoil_capacitor = new ItemCapacitor(10).setUnlocalizedName("redcoil_capacitor").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":redcoil_capacitor"); @@ -4031,7 +4028,6 @@ public class ModItems { fleija_kit = new ItemStarterKit().setUnlocalizedName("fleija_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":fleija_kit"); prototype_kit = new ItemStarterKit().setUnlocalizedName("prototype_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":prototype_kit"); missile_kit = new ItemStarterKit().setUnlocalizedName("missile_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_kit"); - t45_kit = new ItemStarterKit().setUnlocalizedName("t45_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":t45_kit"); euphemium_kit = new ItemStarterKit().setUnlocalizedName("euphemium_kit").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":code"); solinium_kit = new ItemStarterKit().setUnlocalizedName("solinium_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":solinium_kit"); hazmat_kit = new ItemStarterKit().setUnlocalizedName("hazmat_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":hazmat_kit"); @@ -5760,7 +5756,6 @@ public class ModItems { GameRegistry.registerItem(hev_battery, hev_battery.getUnlocalizedName()); GameRegistry.registerItem(fusion_core, fusion_core.getUnlocalizedName()); GameRegistry.registerItem(energy_core, energy_core.getUnlocalizedName()); - GameRegistry.registerItem(fusion_core_infinite, fusion_core_infinite.getUnlocalizedName()); //Folders GameRegistry.registerItem(blueprints, blueprints.getUnlocalizedName()); @@ -7101,7 +7096,6 @@ public class ModItems { GameRegistry.registerItem(custom_kit, custom_kit.getUnlocalizedName()); GameRegistry.registerItem(missile_kit, missile_kit.getUnlocalizedName()); GameRegistry.registerItem(grenade_kit, grenade_kit.getUnlocalizedName()); - GameRegistry.registerItem(t45_kit, t45_kit.getUnlocalizedName()); GameRegistry.registerItem(hazmat_kit, hazmat_kit.getUnlocalizedName()); GameRegistry.registerItem(hazmat_red_kit, hazmat_red_kit.getUnlocalizedName()); GameRegistry.registerItem(hazmat_grey_kit, hazmat_grey_kit.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/special/ItemStarterKit.java b/src/main/java/com/hbm/items/special/ItemStarterKit.java index ba8bf97b4..6d7af36a9 100644 --- a/src/main/java/com/hbm/items/special/ItemStarterKit.java +++ b/src/main/java/com/hbm/items/special/ItemStarterKit.java @@ -7,7 +7,6 @@ import com.hbm.interfaces.Spaghetti; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemBattery; import com.hbm.items.machine.ItemBreedingRod.BreedingRodType; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; @@ -407,21 +406,6 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_emp, 1)); } - if(this == ModItems.t45_kit) - { - player.inventory.addItemStackToInventory(new ItemStack(ModItems.t45_helmet, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.t45_plate, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.t45_legs, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.t45_boots, 1)); - player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); - player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); - player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); - player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); - player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); - player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); - player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); - } - if(this == ModItems.stealth_boy) { player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 30 * 20, 1, true)); @@ -470,7 +454,6 @@ public class ItemStarterKit extends Item { this == ModItems.prototype_kit || this == ModItems.fleija_kit || this == ModItems.solinium_kit || - this == ModItems.t45_kit || this == ModItems.grenade_kit || this == ModItems.missile_kit || this == ModItems.multi_kit) { diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index e0d5217cb..5512310a8 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -237,7 +237,6 @@ public class Library { if(power > maxPower) return maxPower; if(slots[index] != null && slots[index].getItem() == ModItems.battery_creative) return 0; - if(slots[index] != null && slots[index].getItem() == ModItems.fusion_core_infinite) return 0; if(slots[index] != null && slots[index].getItem() instanceof IBatteryItem) { @@ -259,7 +258,6 @@ public class Library { public static long chargeTEFromItems(ItemStack[] slots, int index, long power, long maxPower) { if(slots[index] != null && slots[index].getItem() == ModItems.battery_creative) return maxPower; - if(slots[index] != null && slots[index].getItem() == ModItems.fusion_core_infinite) return maxPower; if(slots[index] != null && slots[index].getItem() instanceof IBatteryItem) { diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 9f5366d6c..8d0b9d544 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1428,6 +1428,8 @@ public class MainRegistry { ignoreMappings.add("hbm:item.mp_f_20"); ignoreMappings.add("hbm:item.mp_thruster_10_kerosene_tec"); ignoreMappings.add("hbm:item.mp_thruster_15_kerosene_tec"); + ignoreMappings.add("hbm:item.t45_kit"); + ignoreMappings.add("hbm:item.fusion_core_infinite"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); From f389a25decf04eb6fa26b47b7803cf3c1bee5137 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 22 Sep 2025 16:49:43 +0200 Subject: [PATCH 10/10] just fucking 3D everything i don't care anymore --- src/main/java/com/hbm/items/ModItems.java | 8 +- .../java/com/hbm/items/armor/ArmorAJR.java | 21 ++++- .../java/com/hbm/items/armor/ArmorAJRO.java | 21 ++++- .../java/com/hbm/items/armor/ArmorBJ.java | 76 +++++++++++++----- .../com/hbm/items/armor/ArmorBismuth.java | 32 +++++++- .../java/com/hbm/items/armor/ArmorDNT.java | 28 ++++++- .../java/com/hbm/items/armor/ArmorDesh.java | 21 ++++- .../java/com/hbm/items/armor/ArmorDiesel.java | 27 ++++++- .../com/hbm/items/armor/ArmorDigamma.java | 29 ++++++- .../com/hbm/items/armor/ArmorEnvsuit.java | 39 ++++++++- .../java/com/hbm/items/armor/ArmorFSB.java | 64 +++++++++++++++ .../java/com/hbm/items/armor/ArmorHEV.java | 20 ++++- .../java/com/hbm/items/armor/ArmorRPA.java | 24 +++++- .../java/com/hbm/items/armor/ArmorT51.java | 21 ++++- .../java/com/hbm/items/armor/ArmorTaurun.java | 27 ++++++- .../hbm/items/armor/ArmorTrenchmaster.java | 27 ++++++- src/main/java/com/hbm/main/ClientProxy.java | 12 +++ .../hbm/render/model/ModelArmorDigamma.java | 4 +- .../assets/hbm/textures/items/armor.png | Bin 0 -> 264 bytes 19 files changed, 461 insertions(+), 40 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/armor.png diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index e7b2d800a..db58f2379 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4264,10 +4264,10 @@ public class ModItems { .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0)) .setStep("hbm:step.metal").setJump("hbm:step.iron_jump").setFall("hbm:step.iron_land") .hides(EnumPlayerPart.HAT) - .setUnlocalizedName("t51_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t51_helmet"); - t51_plate = new ArmorT51(aMatT51, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t51_plate"); - t51_legs = new ArmorT51(aMatT51, 2, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t51_legs"); - t51_boots = new ArmorT51(aMatT51, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_boots").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t51_boots"); + .setUnlocalizedName("t51_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":armor"); + t51_plate = new ArmorT51(aMatT51, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":armor"); + t51_legs = new ArmorT51(aMatT51, 2, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":armor"); + t51_boots = new ArmorT51(aMatT51, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_boots").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":armor"); ArmorMaterial aMatDesh = EnumHelper.addArmorMaterial("HBM_DESH", 150, new int[] { 3, 8, 6, 3 }, 0); aMatDesh.customCraftingMaterial = ModItems.ingot_desh; diff --git a/src/main/java/com/hbm/items/armor/ArmorAJR.java b/src/main/java/com/hbm/items/armor/ArmorAJR.java index ae4af265a..14d380de3 100644 --- a/src/main/java/com/hbm/items/armor/ArmorAJR.java +++ b/src/main/java/com/hbm/items/armor/ArmorAJR.java @@ -1,14 +1,19 @@ package com.hbm.items.armor; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorAJR; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorAJR extends ArmorFSBPowered { +public class ArmorAJR extends ArmorFSBPowered implements IItemRendererProvider { public ArmorAJR(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -30,4 +35,18 @@ public class ArmorAJR extends ArmorFSBPowered { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_ajr, armorType, + ResourceManager.ajr_helmet, ResourceManager.ajr_chest, ResourceManager.ajr_arm, ResourceManager.ajr_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorAJRO.java b/src/main/java/com/hbm/items/armor/ArmorAJRO.java index a3425fdc3..1c9e1afec 100644 --- a/src/main/java/com/hbm/items/armor/ArmorAJRO.java +++ b/src/main/java/com/hbm/items/armor/ArmorAJRO.java @@ -1,14 +1,19 @@ package com.hbm.items.armor; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorAJRO; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorAJRO extends ArmorFSBPowered { +public class ArmorAJRO extends ArmorFSBPowered implements IItemRendererProvider { public ArmorAJRO(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -30,4 +35,18 @@ public class ArmorAJRO extends ArmorFSBPowered { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_ajr, armorType, + ResourceManager.ajro_helmet, ResourceManager.ajro_chest, ResourceManager.ajro_arm, ResourceManager.ajro_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorBJ.java b/src/main/java/com/hbm/items/armor/ArmorBJ.java index 5c2cc6353..a5fcc3be3 100644 --- a/src/main/java/com/hbm/items/armor/ArmorBJ.java +++ b/src/main/java/com/hbm/items/armor/ArmorBJ.java @@ -1,18 +1,26 @@ package com.hbm.items.armor; +import org.lwjgl.opengl.GL11; + import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorBJ; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; +import net.minecraftforge.client.IItemRenderer; -public class ArmorBJ extends ArmorFSBPowered { +public class ArmorBJ extends ArmorFSBPowered implements IItemRendererProvider { public ArmorBJ(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -24,31 +32,57 @@ public class ArmorBJ extends ArmorFSBPowered { @Override @SideOnly(Side.CLIENT) public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { - + if(models == null) { models = new ModelArmorBJ[4]; - + for(int i = 0; i < 4; i++) models[i] = new ModelArmorBJ(i); } - + return models[armorSlot]; } - - public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { - - super.onArmorTick(world, player, itemStack); - - if(this == ModItems.bj_helmet && ArmorFSB.hasFSBArmorIgnoreCharge(player) && !ArmorFSB.hasFSBArmor(player)) { - - ItemStack helmet = player.inventory.armorInventory[3]; - - if(!player.inventory.addItemStackToInventory(helmet)) - player.dropPlayerItemWithRandomChoice(helmet, false); - - player.inventory.armorInventory[3] = null; - - player.attackEntityFrom(ModDamageSource.lunar, 1000); - } - } + + public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { + + super.onArmorTick(world, player, itemStack); + + if(this == ModItems.bj_helmet && ArmorFSB.hasFSBArmorIgnoreCharge(player) && !ArmorFSB.hasFSBArmor(player)) { + + ItemStack helmet = player.inventory.armorInventory[3]; + + if(!player.inventory.addItemStackToInventory(helmet)) + player.dropPlayerItemWithRandomChoice(helmet, false); + + player.inventory.armorInventory[3] = null; + + player.attackEntityFrom(ModDamageSource.lunar, 1000); + } + } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + if(armorType == 1) { + if(ArmorBJ.this == ModItems.bj_plate_jetpack) { + GL11.glScaled(0.6875, 0.6875, 0.6875); + } else { + GL11.glScaled(0.875, 0.875, 0.875); + } + } + renderStandard(ResourceManager.armor_bj, armorType, + ResourceManager.bj_eyepatch, ResourceManager.bj_chest, ResourceManager.bj_arm, ResourceManager.bj_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftFoot", "RightFoot"); + if(ArmorBJ.this == ModItems.bj_plate_jetpack) { + GL11.glTranslated(0, 0, -0.1); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.bj_jetpack); + ResourceManager.armor_bj.renderPart("Jetpack"); + } + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorBismuth.java b/src/main/java/com/hbm/items/armor/ArmorBismuth.java index 6906ab0a9..d0fd6e593 100644 --- a/src/main/java/com/hbm/items/armor/ArmorBismuth.java +++ b/src/main/java/com/hbm/items/armor/ArmorBismuth.java @@ -1,13 +1,21 @@ package com.hbm.items.armor; +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorBismuth; +import com.hbm.render.tileentity.IItemRendererProvider; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorBismuth extends ArmorFSB { +public class ArmorBismuth extends ArmorFSB implements IItemRendererProvider { public ArmorBismuth(ArmorMaterial material, int slot, String texture) { super(material, slot, texture); @@ -30,4 +38,26 @@ public class ArmorBismuth extends ArmorFSB { return models[armorSlot]; } + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + if(armorType == 0) { + GL11.glTranslated(0, -0.5, 0); + GL11.glScaled(0.625, 0.625, 0.625); + } + if(armorType == 1) { + GL11.glScaled(0.875, 0.875, 0.875); + } + GL11.glDisable(GL11.GL_CULL_FACE); + renderStandard(ResourceManager.armor_bismuth, armorType, + ResourceManager.armor_bismuth_tex, ResourceManager.armor_bismuth_tex, ResourceManager.armor_bismuth_tex, ResourceManager.armor_bismuth_tex, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftFoot", "RightFoot"); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorDNT.java b/src/main/java/com/hbm/items/armor/ArmorDNT.java index 73617c0be..a188b05a7 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDNT.java +++ b/src/main/java/com/hbm/items/armor/ArmorDNT.java @@ -3,12 +3,17 @@ package com.hbm.items.armor; import java.util.List; import java.util.UUID; +import org.lwjgl.opengl.GL11; + import com.google.common.collect.Multimap; import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.threading.PacketThreading; import com.hbm.items.ModItems; +import com.hbm.main.ResourceManager; import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorDNT; +import com.hbm.render.tileentity.IItemRendererProvider; import com.hbm.util.ArmorUtil; import com.hbm.util.BobMathUtil; import com.hbm.util.i18n.I18nUtil; @@ -21,16 +26,18 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; +import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; -public class ArmorDNT extends ArmorFSBPowered { +public class ArmorDNT extends ArmorFSBPowered implements IItemRendererProvider { public ArmorDNT(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -190,4 +197,23 @@ public class ArmorDNT extends ArmorFSBPowered { list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.fastFall")); list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.sprintBoost")); } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + if(armorType == 0) { + GL11.glTranslated(0, -1, 0); + } + setupRenderInv(); + } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_dnt, armorType, + ResourceManager.dnt_helmet, ResourceManager.dnt_chest, ResourceManager.dnt_arm, ResourceManager.dnt_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorDesh.java b/src/main/java/com/hbm/items/armor/ArmorDesh.java index c7ec38d1f..72abf9ad1 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDesh.java +++ b/src/main/java/com/hbm/items/armor/ArmorDesh.java @@ -4,7 +4,10 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.inventory.fluid.FluidType; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorDesh; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -12,9 +15,11 @@ import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorDesh extends ArmorFSBFueled { +public class ArmorDesh extends ArmorFSBFueled implements IItemRendererProvider { public ArmorDesh(ArmorMaterial material, int slot, String texture, FluidType fuelType, int maxFuel, int fillRate, int consumption, int drain) { super(material, slot, texture, fuelType, maxFuel, fillRate, consumption, drain); @@ -44,4 +49,18 @@ public class ArmorDesh extends ArmorFSBFueled { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_steamsuit, armorType, + ResourceManager.steamsuit_helmet, ResourceManager.steamsuit_chest, ResourceManager.steamsuit_arm, ResourceManager.steamsuit_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorDiesel.java b/src/main/java/com/hbm/items/armor/ArmorDiesel.java index da8a6b3f8..e93ceb108 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDiesel.java +++ b/src/main/java/com/hbm/items/armor/ArmorDiesel.java @@ -1,5 +1,7 @@ package com.hbm.items.armor; +import org.lwjgl.opengl.GL11; + import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; @@ -7,8 +9,11 @@ import com.hbm.handler.threading.PacketThreading; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; +import com.hbm.main.ResourceManager; import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorDiesel; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -18,11 +23,13 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.client.IItemRenderer; -public class ArmorDiesel extends ArmorFSBFueled { +public class ArmorDiesel extends ArmorFSBFueled implements IItemRendererProvider { public ArmorDiesel(ArmorMaterial material, int slot, String texture, FluidType fuelType, int maxFuel, int fillRate, int consumption, int drain) { super(material, slot, texture, fuelType, maxFuel, fillRate, consumption, drain); @@ -69,4 +76,22 @@ public class ArmorDiesel extends ArmorFSBFueled { public boolean acceptsFluid(FluidType type, ItemStack stack) { return type == Fluids.DIESEL || type == Fluids.DIESEL_CRACK; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + if(armorType == 0) { + GL11.glTranslated(0, 0.5, 0); + GL11.glScaled(0.875, 0.875, 0.875); + } + renderStandard(ResourceManager.armor_dieselsuit, armorType, + ResourceManager.dieselsuit_helmet, ResourceManager.dieselsuit_chest, ResourceManager.dieselsuit_arm, ResourceManager.dieselsuit_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorDigamma.java b/src/main/java/com/hbm/items/armor/ArmorDigamma.java index 89ad09e1d..2f6c460f4 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDigamma.java +++ b/src/main/java/com/hbm/items/armor/ArmorDigamma.java @@ -1,14 +1,21 @@ package com.hbm.items.armor; +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorDigamma; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorDigamma extends ArmorFSBPowered { +public class ArmorDigamma extends ArmorFSBPowered implements IItemRendererProvider { public ArmorDigamma(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -30,4 +37,24 @@ public class ArmorDigamma extends ArmorFSBPowered { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + if(armorType == 0) { + GL11.glScaled(0.875, 0.875, 0.875); + GL11.glTranslated(0, -2, 0); + } + setupRenderInv(); + } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_fau, armorType, + ResourceManager.fau_helmet, ResourceManager.fau_chest, ResourceManager.fau_arm, ResourceManager.fau_leg, + "Head", "Body,Cassette", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java b/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java index 940955329..897ec96d9 100644 --- a/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java +++ b/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java @@ -3,23 +3,32 @@ package com.hbm.items.armor; import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorEnvsuit; +import com.hbm.render.tileentity.IItemRendererProvider; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.Vec3; import net.minecraft.world.World; +import net.minecraftforge.client.IItemRenderer; import java.util.UUID; -public class ArmorEnvsuit extends ArmorFSBPowered { +import org.lwjgl.opengl.GL11; + +public class ArmorEnvsuit extends ArmorFSBPowered implements IItemRendererProvider { public ArmorEnvsuit(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -91,4 +100,32 @@ public class ArmorEnvsuit extends ArmorFSBPowered { } } } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + if(armorType == 0) { + GL11.glScaled(0.3125, 0.3125, 0.3125); + GL11.glTranslated(0, 1, 0); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.envsuit_helmet); + ResourceManager.armor_envsuit.renderPart("Helmet"); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glColor3f(1F, 1F, 0.8F); + ResourceManager.armor_envsuit.renderPart("Lamps"); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_LIGHTING); + } else { + renderStandard(ResourceManager.armor_envsuit, armorType, + ResourceManager.envsuit_helmet, ResourceManager.envsuit_chest, ResourceManager.envsuit_arm, ResourceManager.envsuit_leg, + "Helmet,Lamps", "Chest", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftFoot", "RightFoot"); + } + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorFSB.java b/src/main/java/com/hbm/items/armor/ArmorFSB.java index 2253f207c..84969c63b 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSB.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSB.java @@ -10,7 +10,9 @@ import org.lwjgl.opengl.GL11; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.radiation.ChunkRadiationManager; +import com.hbm.interfaces.NotableComments; import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; import com.hbm.util.ContaminationUtil; import com.hbm.util.ShadyUtil; import com.hbm.util.i18n.I18nUtil; @@ -39,10 +41,12 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.client.model.IModelCustom; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; //Armor with full set bonus +@NotableComments public class ArmorFSB extends ItemArmor implements IArmorDisableModel { private String texture = ""; @@ -63,6 +67,7 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { public ArmorFSB(ArmorMaterial material, int slot, String texture) { super(material, 0, slot); this.texture = texture; + this.setTextureName(RefStrings.MODID + ":armor"); } public ArmorFSB addEffect(PotionEffect effect) { @@ -428,4 +433,63 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { public void handleAttack(LivingAttackEvent event) { } public void handleHurt(LivingHurtEvent event) { } + + public static void setupRenderInv() { + GL11.glTranslated(0, -1.5, 0); + GL11.glScaled(3.25, 3.25, 3.25); + GL11.glRotated(180, 1, 0, 0); + GL11.glRotated(-135, 0, 1, 0); + GL11.glRotated(-20, 1, 0, 0); + } + + public static void setupRenderNonInv() { + GL11.glRotated(180, 1, 0, 0); + GL11.glScaled(0.75, 0.75, 0.75); + GL11.glRotated(-90, 0, 1, 0); + } + + // if it's the same vomit every time, why not make a method that does it for us? + public static void renderStandard(IModelCustom model, int armorType, + ResourceLocation helmetTex, ResourceLocation chestTex, ResourceLocation armTex, ResourceLocation legTex, + String helmet, String chest, String leftArm, String rightArm, String leftLeg, String rightLeg, String leftBoot, String rightBoot) { + + GL11.glShadeModel(GL11.GL_SMOOTH); + if(armorType == 0) { + GL11.glScaled(0.3125, 0.3125, 0.3125); + GL11.glTranslated(0, 1, 0); + Minecraft.getMinecraft().getTextureManager().bindTexture(helmetTex); + for(String s : helmet.split(",")) model.renderPart(s); + } + if(armorType == 1) { + GL11.glScaled(0.225, 0.225, 0.225); + GL11.glTranslated(0, -10, 0); + Minecraft.getMinecraft().getTextureManager().bindTexture(chestTex); + for(String s : chest.split(",")) model.renderPart(s); + GL11.glTranslated(0, 0, 0.1); + Minecraft.getMinecraft().getTextureManager().bindTexture(armTex); + for(String s : leftArm.split(",")) model.renderPart(s); + for(String s : rightArm.split(",")) model.renderPart(s); + } + if(armorType == 2) { + GL11.glScaled(0.25, 0.25, 0.25); + GL11.glTranslated(0, -20, 0); + Minecraft.getMinecraft().getTextureManager().bindTexture(legTex); + GL11.glDisable(GL11.GL_CULL_FACE); + for(String s : leftLeg.split(",")) model.renderPart(s); + GL11.glTranslated(0, 0, 0.1); + for(String s : rightLeg.split(",")) model.renderPart(s); + GL11.glEnable(GL11.GL_CULL_FACE); + } + if(armorType == 3) { + GL11.glScaled(0.25, 0.25, 0.25); + GL11.glTranslated(0, -22, 0); + Minecraft.getMinecraft().getTextureManager().bindTexture(legTex); + GL11.glDisable(GL11.GL_CULL_FACE); + for(String s : leftBoot.split(",")) model.renderPart(s); + GL11.glTranslated(0, 0, 0.1); + for(String s : rightBoot.split(",")) model.renderPart(s); + GL11.glEnable(GL11.GL_CULL_FACE); + } + GL11.glShadeModel(GL11.GL_FLAT); + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorHEV.java b/src/main/java/com/hbm/items/armor/ArmorHEV.java index 5aa336fa9..f3c4e6677 100644 --- a/src/main/java/com/hbm/items/armor/ArmorHEV.java +++ b/src/main/java/com/hbm/items/armor/ArmorHEV.java @@ -4,7 +4,10 @@ import org.lwjgl.opengl.GL11; import com.hbm.extprop.HbmLivingProps; import com.hbm.items.ModItems; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorHEV; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -15,11 +18,13 @@ import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; -public class ArmorHEV extends ArmorFSBPowered { +public class ArmorHEV extends ArmorFSBPowered implements IItemRendererProvider { public ArmorHEV(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -175,4 +180,17 @@ public class ArmorHEV extends ArmorFSBPowered { Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); } + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_hev, armorType, + ResourceManager.hev_helmet, ResourceManager.hev_chest, ResourceManager.hev_arm, ResourceManager.hev_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftFoot", "RightFoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorRPA.java b/src/main/java/com/hbm/items/armor/ArmorRPA.java index dd7791918..718f62f2d 100644 --- a/src/main/java/com/hbm/items/armor/ArmorRPA.java +++ b/src/main/java/com/hbm/items/armor/ArmorRPA.java @@ -1,14 +1,21 @@ package com.hbm.items.armor; +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorRPA; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorRPA extends ArmorFSBPowered { +public class ArmorRPA extends ArmorFSBPowered implements IItemRendererProvider { public ArmorRPA(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -30,4 +37,19 @@ public class ArmorRPA extends ArmorFSBPowered { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + if(armorType == 1) GL11.glTranslated(0, 0.25, 0); + renderStandard(ResourceManager.armor_remnant, armorType, + ResourceManager.rpa_helmet, ResourceManager.rpa_chest, ResourceManager.rpa_arm, ResourceManager.rpa_leg, + "Head", "Body,Fan,Glow", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorT51.java b/src/main/java/com/hbm/items/armor/ArmorT51.java index 26150198b..8130c458c 100644 --- a/src/main/java/com/hbm/items/armor/ArmorT51.java +++ b/src/main/java/com/hbm/items/armor/ArmorT51.java @@ -1,14 +1,19 @@ package com.hbm.items.armor; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorT51; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorT51 extends ArmorFSBPowered { +public class ArmorT51 extends ArmorFSBPowered implements IItemRendererProvider { public ArmorT51(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -30,4 +35,18 @@ public class ArmorT51 extends ArmorFSBPowered { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_t51, armorType, + ResourceManager.t51_helmet, ResourceManager.t51_chest, ResourceManager.t51_arm, ResourceManager.t51_leg, + "Helmet", "Chest", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorTaurun.java b/src/main/java/com/hbm/items/armor/ArmorTaurun.java index d927935b4..d402a6c82 100644 --- a/src/main/java/com/hbm/items/armor/ArmorTaurun.java +++ b/src/main/java/com/hbm/items/armor/ArmorTaurun.java @@ -1,14 +1,21 @@ package com.hbm.items.armor; +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorTaurun; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorTaurun extends ArmorFSB { +public class ArmorTaurun extends ArmorFSB implements IItemRendererProvider { public ArmorTaurun(ArmorMaterial material, int slot, String texture) { super(material, slot, texture); @@ -31,4 +38,22 @@ public class ArmorTaurun extends ArmorFSB { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + if(armorType == 0) GL11.glTranslated(0, 1, 0); + if(armorType == 1) GL11.glTranslated(0, 1.5, 0); + setupRenderInv(); + } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_taurun, armorType, + ResourceManager.taurun_helmet, ResourceManager.taurun_chest, ResourceManager.taurun_arm, ResourceManager.taurun_leg, + "Helmet", "Chest", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java index c716e18e9..0b1660f20 100644 --- a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java +++ b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java @@ -2,10 +2,15 @@ package com.hbm.items.armor; import java.util.List; +import org.lwjgl.opengl.GL11; + import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorTrenchmaster; +import com.hbm.render.tileentity.IItemRendererProvider; import com.hbm.util.i18n.I18nUtil; import cpw.mods.fml.relauncher.Side; @@ -13,12 +18,14 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; -public class ArmorTrenchmaster extends ArmorFSB { +public class ArmorTrenchmaster extends ArmorFSB implements IItemRendererProvider { public ArmorTrenchmaster(ArmorMaterial material, int slot, String texture) { super(material, slot, texture); @@ -102,4 +109,22 @@ public class ArmorTrenchmaster extends ArmorFSB { } return false; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + if(armorType == 0) GL11.glTranslated(0, 1, 0); + if(armorType == 1) GL11.glTranslated(0, 1.5, 0); + setupRenderInv(); + } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_trenchmaster, armorType, + ResourceManager.trenchmaster_helmet, ResourceManager.trenchmaster_chest, ResourceManager.trenchmaster_arm, ResourceManager.trenchmaster_leg, + "Helmet,Light", "Chest", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index a1c226305..a876e05cb 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -449,6 +449,18 @@ public class ClientProxy extends ServerProxy { } } } + + // same crap but for items directly because why invent a new solution when this shit works just fine + Iterator itItems = Item.itemRegistry.iterator(); + while(itItems.hasNext()) { + Object o = itItems.next(); + if(o instanceof IItemRendererProvider) { + IItemRendererProvider prov = (IItemRendererProvider) o; + for(Item item : prov.getItemsForRenderer()) { + MinecraftForgeClient.registerItemRenderer(item, prov.getRenderer()); + } + } + } //universal JSON translated items double[] rtp = new double[] {0, 180, -90}; diff --git a/src/main/java/com/hbm/render/model/ModelArmorDigamma.java b/src/main/java/com/hbm/render/model/ModelArmorDigamma.java index d0abc19c5..663e4df1d 100644 --- a/src/main/java/com/hbm/render/model/ModelArmorDigamma.java +++ b/src/main/java/com/hbm/render/model/ModelArmorDigamma.java @@ -43,8 +43,8 @@ public class ModelArmorDigamma extends ModelArmorBase { if(this.type == 1) { bindTexture(ResourceManager.fau_chest); this.body.render(scaleFactor); - GL11.glEnable(GL11.GL_BLEND); - OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); bindTexture(ResourceManager.fau_cassette); this.cassette.render(scaleFactor); bindTexture(ResourceManager.fau_arm); diff --git a/src/main/resources/assets/hbm/textures/items/armor.png b/src/main/resources/assets/hbm/textures/items/armor.png new file mode 100644 index 0000000000000000000000000000000000000000..e8b4521b3ce3fa586d4c5d0244de39370c4e3b6d GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf{m>o5$h(92U7-=zoQXx3Z1dtzyy44c{4=*> zg-~Fv)qjI0b6yw9%#D0*`P|FpYW4khVWvx_SS4s4tkl7|w?E=NomKHQ6pu35|`Fmc^cpYPYL z8@A2JymOc3OwVS6g5Ryn8w2xXD&D`|_kLOBo%<{rM`rauod1Hg)iZDTm;SN@pjQ|? MUHx3vIVCg!0J=SE)Bpeg literal 0 HcmV?d00001