From 653e428462f6c02ff8e5f2397218c065375c744f Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 31 Mar 2026 10:44:36 +0200 Subject: [PATCH] the Q in NTM stands for QoL --- changelog | 7 ++++- .../container/ContainerMachinePress.java | 24 +++++++++++++----- .../hbm/inventory/gui/GUIMachinePress.java | 6 ++--- .../inventory/recipes/anvil/AnvilRecipes.java | 1 + .../java/com/hbm/items/machine/ItemMold.java | 2 +- .../weapon/sedna/factory/XFactoryFlamer.java | 8 +++--- .../java/com/hbm/main/ModEventHandler.java | 24 ++++++++++++------ .../machine/TileEntityMachinePress.java | 7 ++--- .../assets/hbm/textures/gui/gui_press.png | Bin 2102 -> 2279 bytes .../hbm/textures/items/mold_plates_cast.png | Bin 0 -> 436 bytes 10 files changed, 50 insertions(+), 29 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/mold_plates_cast.png diff --git a/changelog b/changelog index a4915ee4b..e40090aec 100644 --- a/changelog +++ b/changelog @@ -7,6 +7,11 @@ * The ZIRNOX now outputs its heat and pressure * The CCGT can output the turbine setting in percent, the turbine's RPM and the produced energy * The fusion reactor plasma vessel can output its output plasma energy and fuel consumption in percent +* Cast plate foundry molds now have a triple variant +* Zombies now have a chance to drop copper, aluminium and titanium ingots (1:200 each) +* The burner press now has nine additional storage slots for things like stamps and reserve fuel ## Fixed -* Fixed euphemium compound plate recipe not yielding four items as it should in the plasma forge \ No newline at end of file +* Fixed euphemium compound plate recipe not yielding four items as it should in the plasma forge +* Fixed NTM rare item drops ignoring the mob loot gamerule +* Fixed flamethrowers not properly igniting entities on direct hit, only via lingering fire \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachinePress.java b/src/main/java/com/hbm/inventory/container/ContainerMachinePress.java index e21c0e963..8fda99d52 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachinePress.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachinePress.java @@ -26,15 +26,19 @@ public class ContainerMachinePress extends Container { this.addSlotToContainer(new Slot(tedf, 2, 80, 53)); // Output this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 3, 140, 35)); + // Extra Storage + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(tedf, 4 + i, 8 + i * 18, 84)); + } for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 120 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 178)); } } @@ -47,23 +51,29 @@ public class ContainerMachinePress extends Container { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - if(par2 <= 3) { - if(!this.mergeItemStack(var5, 4, this.inventorySlots.size(), true)) { + if(par2 <= 12) { + if(!this.mergeItemStack(var5, 13, this.inventorySlots.size(), true)) { return null; } } else { if(TileEntityFurnace.isItemFuel(var3)) { if(!this.mergeItemStack(var5, 0, 1, false)) { - return null; + if(!this.mergeItemStack(var5, 4, 13, false)) { + return null; + } } } else if(var3.getItem() instanceof ItemStamp) { if(!this.mergeItemStack(var5, 1, 2, false)) { - return null; + if(!this.mergeItemStack(var5, 4, 13, false)) { + return null; + } } } else { if(!this.mergeItemStack(var5, 2, 3, false)) { - return null; + if(!this.mergeItemStack(var5, 4, 13, false)) { + return null; + } } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachinePress.java b/src/main/java/com/hbm/inventory/gui/GUIMachinePress.java index 63e98642b..bf5f5e39f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachinePress.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachinePress.java @@ -22,7 +22,7 @@ public class GUIMachinePress extends GuiInfoContainer { press = tedf; this.xSize = 176; - this.ySize = 166; + this.ySize = 202; } @Override @@ -48,11 +48,11 @@ public class GUIMachinePress extends GuiInfoContainer { drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); if(press.burnTime >= 20) { - this.drawTexturedModalRect(guiLeft + 27, guiTop + 36, 176, 0, 14, 14); + this.drawTexturedModalRect(guiLeft + 27, guiTop + 36, 0, 202, 14, 14); } int k = (int) (press.renderPress * 16 / press.maxPress); - this.drawTexturedModalRect(guiLeft + 79, guiTop + 35, 194, 0, 18, k); + this.drawTexturedModalRect(guiLeft + 79, guiTop + 35, 14, 202, 18, k); double i = (double) press.speed / (double) press.maxSpeed; GaugeUtil.drawSmoothGauge(guiLeft + 34, guiTop + 25, this.zLevel, i, 5, 2, 1, 0x7f0000); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 76586839d..e3bb7c440 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -100,6 +100,7 @@ public class AnvilRecipes extends SerializableRecipe { smithingRecipes.add(new AnvilSmithingMold(2, new OreDictStack(IRON.ingot()), new OreDictStack("ingot"))); smithingRecipes.add(new AnvilSmithingMold(3, new OreDictStack(IRON.plate()), new OreDictStack("plate"))); smithingRecipes.add(new AnvilSmithingMold(19, new OreDictStack(IRON.plateCast()), new OreDictStack("plateTriple"))); + smithingRecipes.add(new AnvilSmithingMold(13, new OreDictStack(IRON.plateCast(), 3), new OreDictStack("plateTriple", 3))); smithingRecipes.add(new AnvilSmithingMold(4, new OreDictStack(CU.wireFine()), new OreDictStack("wireFine"))); smithingRecipes.add(new AnvilSmithingMold(5, new ComparableStack(ModItems.blade_titanium), new ItemStack[] { new ItemStack(ModItems.blade_titanium), diff --git a/src/main/java/com/hbm/items/machine/ItemMold.java b/src/main/java/com/hbm/items/machine/ItemMold.java index b9b9cc43c..a98d5d54d 100644 --- a/src/main/java/com/hbm/items/machine/ItemMold.java +++ b/src/main/java/com/hbm/items/machine/ItemMold.java @@ -73,9 +73,9 @@ public class ItemMold extends Item { registerMold(new MoldShape( 10, L, "ingots", MaterialShapes.INGOT, 9)); registerMold(new MoldShape( 11, L, "plates", MaterialShapes.PLATE, 9)); + registerMold(new MoldShape( 13, L, "plates_cast", MaterialShapes.CASTPLATE, 3)); registerMold(new MoldShape( 21, L, "wires_dense", MaterialShapes.DENSEWIRE, 9)); registerMold(new MoldBlock( 12, L, "block", MaterialShapes.BLOCK)); - //registerMold(new MoldSingle( 13, L, "pipes", new ItemStack(ModItems.pipes_steel), Mats.MAT_STEEL, MaterialShapes.BLOCK.q(3))); registerMold(new MoldMulti( 16, S, "c9", MaterialShapes.PLATE.q(1, 4), Mats.MAT_GUNMETAL, DictFrame.fromOne(ModItems.casing, EnumCasingType.SMALL), diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java index 556b270fb..b3e7e17dc 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java @@ -113,13 +113,13 @@ public class XFactoryFlamer { public static void init() { flame_diesel = new BulletConfig().setItem(EnumAmmo.FLAME_DIESEL).setCasing(new ItemStack(ModItems.plate_steel, 2), 500).setupDamageClass(DamageClass.FIRE).setLife(100).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) - .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_DIESEL); + .setOnImpact(LAMBDA_IGNITE_FIRE).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_DIESEL); flame_gas = new BulletConfig().setItem(EnumAmmo.FLAME_GAS).setCasing(new ItemStack(ModItems.plate_steel, 2), 500).setupDamageClass(DamageClass.FIRE).setLife(10).setSpread(0.05F).setVel(1F).setGrav(0.0D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) - .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_GAS); + .setOnImpact(LAMBDA_IGNITE_FIRE).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_GAS); flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setCasing(new ItemStack(ModItems.plate_steel, 2), 500).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) - .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM); + .setOnImpact(LAMBDA_IGNITE_FIRE).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM); flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setCasing(new ItemStack(ModItems.plate_steel, 2), 500).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) - .setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE); + .setOnImpact(LAMBDA_IGNITE_BALEFIRE).setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE); flame_nograv = flame_diesel.clone().setGrav(0); flame_nograv_bf = flame_balefire.clone().setGrav(0).setLife(100); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index b1c0cfb04..524a2d08e 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -311,32 +311,40 @@ public class ModEventHandler { } } - if(!event.entityLiving.worldObj.isRemote) { + if(!event.entityLiving.worldObj.isRemote && event.entityLiving.worldObj.getGameRules().getGameRuleBooleanValue("doMobLoot")) { if(event.source instanceof EntityDamageSource && ((EntityDamageSource)event.source).getEntity() instanceof EntityPlayer && !(((EntityDamageSource)event.source).getEntity() instanceof FakePlayer)) { - if(event.entityLiving instanceof EntitySpider && event.entityLiving.getRNG().nextInt(500) == 0) { + Random rng = event.entityLiving.getRNG(); + + if(event.entityLiving instanceof EntitySpider && rng.nextInt(500) == 0) { event.entityLiving.dropItem(ModItems.spider_milk, 1); } - if(event.entityLiving instanceof EntityCaveSpider && event.entityLiving.getRNG().nextInt(100) == 0) { + if(event.entityLiving instanceof EntityCaveSpider && rng.nextInt(100) == 0) { event.entityLiving.dropItem(ModItems.serum, 1); } - if(event.entityLiving instanceof EntityAnimal && event.entityLiving.getRNG().nextInt(500) == 0) { + if(event.entityLiving instanceof EntityAnimal && rng.nextInt(500) == 0) { event.entityLiving.dropItem(ModItems.bandaid, 1); } if(event.entityLiving instanceof IMob) { - if(event.entityLiving.getRNG().nextInt(1000) == 0) event.entityLiving.dropItem(ModItems.heart_piece, 1); - if(event.entityLiving.getRNG().nextInt(250) == 0) event.entityLiving.dropItem(ModItems.key_red_cracked, 1); - if(event.entityLiving.getRNG().nextInt(250) == 0) event.entityLiving.dropItem(ModItems.launch_code_piece, 1); + if(rng.nextInt(1000) == 0) event.entityLiving.dropItem(ModItems.heart_piece, 1); + if(rng.nextInt(250) == 0) event.entityLiving.dropItem(ModItems.key_red_cracked, 1); + if(rng.nextInt(250) == 0) event.entityLiving.dropItem(ModItems.launch_code_piece, 1); } - if(event.entityLiving instanceof EntityCyberCrab && event.entityLiving.getRNG().nextInt(500) == 0) { + if(event.entityLiving instanceof EntityCyberCrab && rng.nextInt(500) == 0) { event.entityLiving.dropItem(ModItems.wd40, 1); } + + if(event.entityLiving instanceof EntityZombie) { + if(rng.nextInt(200) == 0) event.entityLiving.dropItem(ModItems.ingot_copper, 1); + if(rng.nextInt(200) == 0) event.entityLiving.dropItem(ModItems.ingot_aluminium, 1); + if(rng.nextInt(200) == 0) event.entityLiving.dropItem(ModItems.ingot_titanium, 1); + } } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java index a0d1e5b8a..c7e88f9d8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java @@ -40,7 +40,7 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU public ItemStack syncStack; public TileEntityMachinePress() { - super(4); + super(13); } @Override @@ -237,10 +237,7 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU @Override public AxisAlignedBB getRenderBoundingBox() { - - if(aabb != null) - return aabb; - + if(aabb != null) return aabb; aabb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 3, zCoord + 1); return aabb; } diff --git a/src/main/resources/assets/hbm/textures/gui/gui_press.png b/src/main/resources/assets/hbm/textures/gui/gui_press.png index c1d48e76451b82913c370ba8b3525f9e63c80acb..5e98f8a54083406514343a801a576b4b7525086b 100644 GIT binary patch delta 1888 zcmV-m2cP)15a$t)Gk*x4Nklad5fQP!zaL>Fa3j_62Rc9GQoVc=U|o}}1{;6fDtiZ3 zQLR>+dz(ImNf`vdjON{8o6Y9vGwx87QUjpbY+ks0RXW0?{lAVzqY)b$8*|tjxV};X zVAyfKdGXcM^{WsBjYi`}Ki_J#4F4%j;Q`QWHb)(Q>u1j*BBH*%84(eOdq;zfUhIyx zU4;;URaIyJ3_JgL#~*h34VBP zchvb0e%g(l*3*a>1i{wpXL0c3-a=;Gfs*C`jv9wi->%0_Yw-9lfBwyx_4Vz|IJ|#U z{Ek5~g^U2kkN%sTdc3*2H#*W^WT*8s4j%7D{hd(&EK=d01UzaSUU`38qX1Z}LIYs4 zQ;*F~J%0Cxzn@wD-OC^1yO%$FvaJ4YGk(?mWs$oGsT4i}7*60oqwFpU%s2(?RXh?Lzb)Xj{^64z1aG4J0fCY5Db6Udt<<2m2xk@uwxH9 z`lR*CuF+^jtJNxdH(+L^Rs>p=jy}o8#>UD&2Xa#raE^|TkFT^{5tClW$HykuxRkQs zYwW6lL|&x?z*XOv-oQ8KHDnqifCPj9lavww8yg#+yeThw>>PG}ga8*Y0!Ty%a9$}_ z0WNwY4o3y!M}2>zfcbY?uPNh<01`41V5sl_nDpkm?s8^l1i(;f9|XGWO?c5nVMeod z)=96O&d<1|I0ewri=p##UTFa^X(DjidS<8dbCJSN0j@i=U-mcdEI~E?GetbVWq%DR z&r+NM3_0r0pU%%TOLG-qUfc7L&d+5^IR%(?8CU1^<0?DU1Gpg_ja61i0L-Jh>@rr5 zUDxMD9)*nnZdzS-S*ypc>+>RqrMe0L6w4d{6RCQ<{saIMsd~KroC1?k2PZHJxfy6( z? zUu#D@ET>9D^!xpOM1;Z%tc2kgv+nQjM-1M>%*ZK|F9t4?{{{*)Hnk*Jv)R1yFK9Fx z(dl%wqn(-C+1S{)aXVaWY5+tG{s1@8YPF)%>1angGq~`gT+VS{xODw6pZ>s0g$;=96Iu z9+OZ84U_){2R2j$($3Pi!{SV>2n5SWMWFd{3IK@-07y&#Kw?uT0aXRo&N8%fzA7;D zqbjg=mcAX6(~IL2lRyR?lm7-4e^p@ZEPXpHj;g?{994nm$0-0LCIBEY0l-Qb4*!{t zTM<#IR4V;$x9i1)WQHSv%EN~bOWhH;4ikX$asCDDm$DadeLDXfRJz@6|Fdtuj{p7s zkC$#dZM#~ncBNl<{!-(^hY$TBp(NFahA zh~DjP+K_8|LxbKg@aHyIUN}ce+<{V5&-L?I_%`HKL27g!8ZtnyYc?X&qo^$uK%B$2?b!a zRfp&PtzZ21+^Um!_4ya0N3{<=Dh%tU`u@pjCm)~S8#~I6F8iG>8y^(_tF8L+qrE4e ztZcRZI`(L=e*9DcSZ&qO(0=?Xz?=V`{^#W5sNi({_^CpzRvZ1hIjUKH23U++z1!V5 ze)%#Yz8@|8xGXMM_I*Sg8wJ1`xHaqDc-?N-t;4Y5rj`Z2%!3CHZuHAlAOe%o2PGJw a9RCNOGTW7_6;ZYT0000%){ delta 1785 zcmV1)X83y1_#$JHo8?cLD4LD8GnNqQ0k%jDq zI~i`bi|md710g|--5|jRix^-NL`s(~SV*0*mJkn$%YFAXni zx7#E8f2~%#(uQ<8ossGBa?9?{$$z`uZa2KVs_=@jgVn=V@8jNg-;C_o=S@F+^*)Y{ zj^vtv!PRilj)T!oGN5;XLv&8r;5gp_7M@C&Oa}0 z6)+Y6P)SejN5t{StbQNB={f&##FP8_0LBOaDs9l&w>R4P{_yR8Mpryp{_NlXDq^!L zLjX`|y=MJ!eEi$52J?EMaD37-=;<$aC18{QpxRC<`G4Clz8rJ__Cn!7e0=u#V6|Rn z;PFT(AONVmo%fVFb({gc}R3QR@O8fZiq>>MJ@C_a1hc65E*8e;> zB>N422K0ns{nidJ^ADKv{i7j{Oqa1P+7Iw;C1DH ze~R~%$$yzU0ijAdciVCF=1oNW<(zqw)^io0PXJ6|9%=6`%;{9^>ASKK08^TEg>5t% z(Q373S|-=?`0?W#y}ye8{}vhmjYi|#`BnKMCvE?Atgo-@lq!K)v?P|7t9Pk!Apy{@ zIN!eh`oiT^2!i$X^&7pv*=%b5voM7RK%>zZRDb-npS_HTi2BBAL_{2HANE#yy){_3 z3LyYhRcHY8EB|oC?^pUypFR!E>n)GhTT!dk93f#&3cC-WU-_RLZw!w3o6Q%o|I^l> z^6&q&6`Rc$5zz~RwRbOL|HtjhUSox_TSy`njqPrn{nUf)=agGYzO zZ+{phQ%DP7_~^g7TaUd5+k+$hc{ZCbV*lw@)IVqiz&sUxEAZj^!Ijt53V``4Gyqn2 z>#@39kKg|O?<4cSfAd3p|K^7?^XeZ~ev-K|Y1`0km4JXfztJ_c|h)FJd#cC$78ybSpNW_WpMCUz}My?RXhaLoQaKoqvF> zRx4_?TI~Ngx$+NF`4{h|Pdi@5(~yf*_^rU5PAAsB+K7ml7zF+0b_|%Wg**$;uh{*H zK52Q`t*@^~v)NqqX28@IIwDY2D*7ZVD=U@%4CH1^z!|#gZ_X9b>2-8;q;ri+`CWip z%#UDlnS}(vRd-A~@Xh%Sxri1(0)Ik)Nfr_SD=RB!cFOanox{$K5a2vo0Eq|z#x3M3 zzhbL-0GP;I=+hc3VFed3YRn3Y|`8Cc}Zjq6vU0wOXx3ZvxzyPC%331RyFG-U>Xc zpTFMS-BpfqrY^_Nr_ax&&jQTi=dX8nca@`@smt-i<@`7WfRm8~ACdkClTZW-IlFK? zfLZ0RV{!04k;5{AV^ki-@JArKN7W z-S*`|GW{07((>~1LN^4iLkHk&jDLaMg=_^}pUMxDu?QZMzz7eMzz7eMzz7eMzz7W( bz%BHDsKbVO6M{=|IGZ%&i-rNUY%=YOKPrS8YcjyvoV8h=4@q4 z!b!xJikT%TRpk&)qN1Rx9A-&M$Px>Q3hXC0EhktX zv)!y0=Zcifvy5HVzw9y|4FM1}SM4nNt2xc{QfyD-gsO4~e2@NRcW2WUdA=gIYpx=k zL_EKLbA5Ne7eU~AbXtw_1ew+ZzPA@a@8XP)ml1I~M*z%{6lqy|H3L+HB+eGg2@Ke7 z*7x24fGcg{^j8N}