From abe6efc52e5fc8a5391eb95fd143e65e4e18969a Mon Sep 17 00:00:00 2001 From: sten104 Date: Sun, 15 Mar 2026 17:42:09 +0100 Subject: [PATCH 1/6] consistency? in this economy??? the steel sword is now consistent with every single other ntm sword, and now looks like a medieval longsword --- .../resources/assets/hbm/textures/steel_sword.png | Bin 0 -> 861 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/steel_sword.png diff --git a/src/main/resources/assets/hbm/textures/steel_sword.png b/src/main/resources/assets/hbm/textures/steel_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..f68b72f8aa8240fe0d6f883badd357b4fabd3d47 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0V64n^b`J1#c2)=|%1_J8No8Qr zI6rmbUhl&JB1iqBy_be{y-;{GVPPGQt_W-46t1$Be7UTv^-gAA;_{S=3tF;+OOKD0 z{o>K}2md>S9}IOA5OF+mwEn<)SFb(mHMex|-TP2fKW9&I<$IP7=_P45Vm%KS$j!n{UDypzB4@f<#n8r71ckJAsT_TOjyTvImfom!gLQob;&8B=#U+W5&Bf6>aG z>wZUN(X4LESI%475|z76f+j3j&}I6fV8VjDptSwJC;8rI(t48kWm^EVx;tm;r(>RL zFNI9q<+jVKzi-xwzv=U~nOQ#c?O)RHVDjsIy$lOw7X+5yU9WsSSBAOK{lTG}-`Z0y ze_?<5b(@$q!=l*-Zl*>DmoP;L6VqGd06fN>!g;1lAip`mf|hT| z5}cn_Ql40p$`Fv4nOCCc=Nh75s%NNYXe7+&UIJ9qmm1-j=IN=$zyaj2GDtD9GB5&J zUO+4jWrLE91|u_AoC(M_WMpCx1kzDJoY~F-7S92)LE!#m7KRtV)CHr_ZDn8pnlOQ# zfd#16z{uEuaRJ2K|Np_-8Q!FZq;T3D0{N-i)5S5w!vE++YoP`O9@mQ>Lci@#6z0+T zz_e8Jz|86e4qCH+iV9p!V=BtyJn?e_lfU_a+lD_%IQGdlu4BINUDBifm#%Ts#{Ps? z%rmO_9l{rAzbL;X-@S|Jy!5-bMgDH#2b3P%Yv8yc?P2*#)Z=(0PoU!|_4PUoi4I4e orv|Kdh&wo^>M+}ybY`!e43F&<+$S4^%7Pr}>FVdQ&MBb@0EX#7)&Kwi literal 0 HcmV?d00001 From 274aaede2b9669a5e08df044fa099cdc450317ec Mon Sep 17 00:00:00 2001 From: sten104 Date: Sun, 15 Mar 2026 17:51:21 +0100 Subject: [PATCH 2/6] oops --- .../assets/hbm/textures/items/steel_sword.png | Bin 514 -> 861 bytes .../assets/hbm/textures/steel_sword.png | Bin 861 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/resources/assets/hbm/textures/steel_sword.png diff --git a/src/main/resources/assets/hbm/textures/items/steel_sword.png b/src/main/resources/assets/hbm/textures/items/steel_sword.png index b0852ff1b4c37ec74ca591f52051a5c22b27492e..f68b72f8aa8240fe0d6f883badd357b4fabd3d47 100644 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0V64n^b`J1#c2)=|%1_J8No8Qr zI6rmbUhl&JB1iqBy_be{y-;{GVPPGQt_W-46t1$Be7UTv^-gAA;_{S=3tF;+OOKD0 z{o>K}2md>S9}IOA5OF+mwEn<)SFb(mHMex|-TP2fKW9&I<$IP7=_P45Vm%KS$j!n{UDypzB4@f<#n8r71ckJAsT_TOjyTvImfom!gLQob;&8B=#U+W5&Bf6>aG z>wZUN(X4LESI%475|z76f+j3j&}I6fV8VjDptSwJC;8rI(t48kWm^EVx;tm;r(>RL zFNI9q<+jVKzi-xwzv=U~nOQ#c?O)RHVDjsIy$lOw7X+5yU9WsSSBAOK{lTG}-`Z0y ze_?<5b(@$q!=l*-Zl*>DmoP;L6VqGd06fN>!g;1lAip`mf|hT| z5}cn_Ql40p$`Fv4nOCCc=Nh75s%NNYXe7+&UIJ9qmm1-j=IN=$zyaj2GDtD9GB5&J zUO+4jWrLE91|u_AoC(M_WMpCx1kzDJoY~F-7S92)LE!#m7KRtV)CHr_ZDn8pnlOQ# zfd#16z{uEuaRJ2K|Np_-8Q!FZq;T3D0{N-i)5S5w!vE++YoP`O9@mQ>Lci@#6z0+T zz_e8Jz|86e4qCH+iV9p!V=BtyJn?e_lfU_a+lD_%IQGdlu4BINUDBifm#%Ts#{Ps? z%rmO_9l{rAzbL;X-@S|Jy!5-bMgDH#2b3P%Yv8yc?P2*#)Z=(0PoU!|_4PUoi4I4e orv|Kdh&wo^>M+}ybY`!e43F&<+$S4^%7Pr}>FVdQ&MBb@0EX#7)&Kwi literal 514 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}50G|+74GoQj3m5kH_e)7hm6n#~=jZ$S`nI*T1qTOvnu%uk$#tfyYshf} zl}p|`v>Hh9l?3?(|3?N4t_SX%0LpL{ctjQh73>FLMhn(p6`-I*iEBhjaDG}zd16s2 zLqK9?UWuNcYlwoWo}r%EpNq%W1J!IxjqptK^weVD0CHFvq!?Kl7=bJ=AeM%*LB7*q zWCn{f0ojI(Okm$e0oj@DEMW00AR7dhl`%5B00sh#MzfRwC^dndfd#12z{uEuaRJ0s zkd3ShASO)#vO$0eXf6|2Wss!>kOkFcXkY-6?LMd-;`#e~8<3gk>Ealo5$xOJD0D!9 zgL&h{sI`Co@8(@_H7224VNrU^%+>CfT7xHi)>N6wbGNCcIeC#+soBH)?pTqVZ}d&< z+gAk5I~nNp_;Ql>>lJT03$~SOtg&Rd(5@S?bj51DL*2nE>MT?^e|}hL@gHQdr>mdK II;Vst07JBkMgRZ+ diff --git a/src/main/resources/assets/hbm/textures/steel_sword.png b/src/main/resources/assets/hbm/textures/steel_sword.png deleted file mode 100644 index f68b72f8aa8240fe0d6f883badd357b4fabd3d47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0V64n^b`J1#c2)=|%1_J8No8Qr zI6rmbUhl&JB1iqBy_be{y-;{GVPPGQt_W-46t1$Be7UTv^-gAA;_{S=3tF;+OOKD0 z{o>K}2md>S9}IOA5OF+mwEn<)SFb(mHMex|-TP2fKW9&I<$IP7=_P45Vm%KS$j!n{UDypzB4@f<#n8r71ckJAsT_TOjyTvImfom!gLQob;&8B=#U+W5&Bf6>aG z>wZUN(X4LESI%475|z76f+j3j&}I6fV8VjDptSwJC;8rI(t48kWm^EVx;tm;r(>RL zFNI9q<+jVKzi-xwzv=U~nOQ#c?O)RHVDjsIy$lOw7X+5yU9WsSSBAOK{lTG}-`Z0y ze_?<5b(@$q!=l*-Zl*>DmoP;L6VqGd06fN>!g;1lAip`mf|hT| z5}cn_Ql40p$`Fv4nOCCc=Nh75s%NNYXe7+&UIJ9qmm1-j=IN=$zyaj2GDtD9GB5&J zUO+4jWrLE91|u_AoC(M_WMpCx1kzDJoY~F-7S92)LE!#m7KRtV)CHr_ZDn8pnlOQ# zfd#16z{uEuaRJ2K|Np_-8Q!FZq;T3D0{N-i)5S5w!vE++YoP`O9@mQ>Lci@#6z0+T zz_e8Jz|86e4qCH+iV9p!V=BtyJn?e_lfU_a+lD_%IQGdlu4BINUDBifm#%Ts#{Ps? z%rmO_9l{rAzbL;X-@S|Jy!5-bMgDH#2b3P%Yv8yc?P2*#)Z=(0PoU!|_4PUoi4I4e orv|Kdh&wo^>M+}ybY`!e43F&<+$S4^%7Pr}>FVdQ&MBb@0EX#7)&Kwi From 59d5db4f66ad4dc6d90b78f001aba5b3ea6da1e7 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 15 Mar 2026 21:30:49 +0100 Subject: [PATCH 3/6] balls (reverb) --- changelog | 38 +----- src/main/java/com/hbm/blocks/ModBlocks.java | 4 + .../fusion/MachineFusionPlasmaForge.java | 31 +++++ .../recipes/loader/GenericRecipe.java | 1 - .../hbm/items/special/ItemBedrockOreNew.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/CraftingManager.java | 2 + .../java/com/hbm/main/ResourceManager.java | 2 + .../tileentity/RenderFusionPlasmaForge.java | 128 ++++++++++++++++++ .../java/com/hbm/render/util/MissilePart.java | 1 + .../java/com/hbm/tileentity/TileMappings.java | 1 + .../fusion/TileEntityFusionPlasmaForge.java | 7 + .../assets/hbm/models/fusion/plasma_forge.obj | 2 +- .../textures/models/fusion/plasma_forge.png | Bin 5212 -> 11130 bytes 14 files changed, 182 insertions(+), 38 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/fusion/MachineFusionPlasmaForge.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderFusionPlasmaForge.java create mode 100644 src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionPlasmaForge.java diff --git a/changelog b/changelog index aea9ce396..a52ef30e0 100644 --- a/changelog +++ b/changelog @@ -1,38 +1,6 @@ -## Added -* Key pad - * Fits visually with the RBMK display block - * Allows up to four buttons to be configured with a screwdriver (shift click!) - * Buttons will send RoR signals when pressed, with a configured value on the configured frequencies - * Can be set to polling, which will re-send the command until the button is pressed again - * Single push buttons and buttons set to polling which are enabled will glow in the dark - * Each button can be assigned a label with glow in the dark paint - * Allows RBMK control rods to be fully remote controllable with no console -* Gauge - * Allows up to four gauges to be configured with a screwdriver - * Gauges can read RoR signals and display numeric values on a specified range - * Minimum and maximum values can be defined, the gauge also has a red area for when the value exceeds the maximum - * If the minimum value is larger than the maximum, the needle will start at the top and run backwards - * Also has glow in the dark paint labels - ## Changed -* Updated chinese and ukrainian localization -* Updated textures for some nuclear bomb GUIs -* Updated textures for steel tools -* RBMK fuel rods too hot to be taken out manually can now be removed by players in creative mode -* Updated the SILEX recycling recipe for MOX fuel to reflect the recent recipe change - * High-xenon MOX pellets now yield xenon-135 again -* Improved logging for incorrectly configured machine recipes -* Removed the legacy toolbox item -* Due to complaints, the MOX recipe was now made more expensive -* Manual control rods now have the `extendrods` command, which allows the target setting to be adjusted without using an absolute value -* Removed the legacy relay structure -* Placing RBMK fuel rods in the fuel channels by right click no longer consumes the item in creative mode +* Doubled bismuth and tantalum yields from high-performance solvent bedrock ore processing +* Hoppers and buckets can now be made out of steel ## Fixed -* Fixed some damage categories not applying correctly, causing things like general energy resistance to not work against lasers -* Fixed RoR components not being able to be attached to the top of reasim fuel rods -* Fixed a crash in multiplayer regarding RBMK control rods -* Fixed outdated QMAW description of some RBMK parts -* Fixed log spam when placing down a RoR controller -* Fixed the RBMK fuel crane being all jittery and awful -* Fixed RoR reader sending the xenon value on RBMK fuel rods that's 100x the intended value +* Fixed size 15 dual kerosene thruster not rendering at all \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 38cac7b77..8703cb9cc 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -15,6 +15,7 @@ import com.hbm.blocks.machine.fusion.MachineFusionCoupler; import com.hbm.blocks.machine.fusion.MachineFusionKlystron; import com.hbm.blocks.machine.fusion.MachineFusionKlystronCreative; import com.hbm.blocks.machine.fusion.MachineFusionMHDT; +import com.hbm.blocks.machine.fusion.MachineFusionPlasmaForge; import com.hbm.blocks.machine.fusion.MachineFusionTorus; import com.hbm.blocks.machine.pile.*; import com.hbm.blocks.machine.rbmk.*; @@ -887,6 +888,7 @@ public class ModBlocks { public static Block fusion_boiler; public static Block fusion_mhdt; public static Block fusion_coupler; + public static Block fusion_plasma_forge; public static Block machine_icf_press; public static Block icf_component; @@ -2003,6 +2005,7 @@ public class ModBlocks { fusion_boiler = new MachineFusionBoiler().setBlockName("fusion_boiler").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); fusion_mhdt = new MachineFusionMHDT().setBlockName("fusion_mhdt").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); fusion_coupler = new MachineFusionCoupler().setBlockName("fusion_coupler").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + fusion_plasma_forge = new MachineFusionPlasmaForge().setBlockName("fusion_plasma_forge").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_icf_press = new MachineICFPress().setBlockName("machine_icf_press").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); icf = new MachineICF().setBlockName("icf").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3364,6 +3367,7 @@ public class ModBlocks { register(fusion_boiler); register(fusion_mhdt); register(fusion_coupler); + register(fusion_plasma_forge); register(watz_element); register(watz_cooler); diff --git a/src/main/java/com/hbm/blocks/machine/fusion/MachineFusionPlasmaForge.java b/src/main/java/com/hbm/blocks/machine/fusion/MachineFusionPlasmaForge.java new file mode 100644 index 000000000..02158d812 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/fusion/MachineFusionPlasmaForge.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.machine.fusion; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.machine.fusion.TileEntityFusionPlasmaForge; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineFusionPlasmaForge extends BlockDummyable { + + public MachineFusionPlasmaForge() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityFusionPlasmaForge(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] { 4, 0, 5, 5, 5, 5 }; + } + + @Override + public int getOffset() { + return 5; + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java index 27f92cb14..145ed89ab 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java @@ -82,7 +82,6 @@ public class GenericRecipe { public GenericRecipe outputFluids(FluidStack... output) { this.outputFluid = output; return this; } private void checkStackLimit(AStack stack) { - boolean exceeds = false; int max = 64; if(stack instanceof ComparableStack) { ComparableStack comp = (ComparableStack) stack; diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java index ef67a0bff..ac45fb167 100644 --- a/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java +++ b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java @@ -130,7 +130,7 @@ public class ItemBedrockOreNew extends Item { public static enum BedrockOreType { // primary sulfuric solvent radsolvent LIGHT_METAL( 0xFFFFFF, 0x353535, "light", o(MAT_IRON, 9), o(MAT_COPPER, 9), o(MAT_TITANIUM, 6), o(MAT_BAUXITE, 9), o(MAT_CRYOLITE, 3), o(MAT_CHLOROCALCITE, 5), o(MAT_LITHIUM, 5), o(MAT_SODIUM, 3), o(MAT_CHLOROCALCITE, 6), o(MAT_LITHIUM, 6), o(MAT_SODIUM, 6)), - HEAVY_METAL( 0x868686, 0x000000, "heavy", o(MAT_TUNGSTEN, 9), o(MAT_LEAD, 9), o(MAT_GOLD, 2), o(MAT_GOLD, 2), o(MAT_BERYLLIUM, 3), o(MAT_TUNGSTEN, 9), o(MAT_LEAD, 9), o(MAT_GOLD, 5), o(MAT_BISMUTH, 1), o(MAT_TANTALIUM, 1), o(MAT_GOLD, 6)), + HEAVY_METAL( 0x868686, 0x000000, "heavy", o(MAT_TUNGSTEN, 9), o(MAT_LEAD, 9), o(MAT_GOLD, 2), o(MAT_GOLD, 2), o(MAT_BERYLLIUM, 3), o(MAT_TUNGSTEN, 9), o(MAT_LEAD, 9), o(MAT_GOLD, 5), o(MAT_BISMUTH, 2), o(MAT_TANTALIUM, 2), o(MAT_GOLD, 6)), RARE_EARTH( 0xE6E6B6, 0x1C1C00, "rare", o(MAT_COBALT, 5), o(MAT_RAREEARTH, 5),o(MAT_BORON, 5), o(MAT_LANTHANIUM, 3), o(MAT_NIOBIUM, 4), o(MAT_NEODYMIUM, 3), o(MAT_STRONTIUM, 3), o(MAT_ZIRCONIUM, 3), o(MAT_NIOBIUM, 5), o(MAT_NEODYMIUM, 5), o(MAT_STRONTIUM, 3)), ACTINIDE( 0xC1C7BD, 0x2B3227, "actinide", o(MAT_URANIUM, 4), o(MAT_THORIUM, 4), o(MAT_RADIUM, 2), o(MAT_RADIUM, 2), o(MAT_POLONIUM, 2), o(MAT_RADIUM, 2), o(MAT_RADIUM, 2), o(MAT_POLONIUM, 2), o(MAT_TECHNETIUM, 1), o(MAT_TECHNETIUM, 1), o(MAT_U238, 1)), NON_METAL( 0xAFAFAF, 0x0F0F0F, "nonmetal", o(MAT_COAL, 9), o(MAT_SULFUR, 9), o(MAT_LIGNITE, 9), o(MAT_KNO, 6), o(MAT_FLUORITE, 6), o(MAT_PHOSPHORUS, 5), o(MAT_FLUORITE, 6), o(MAT_SULFUR, 6), o(MAT_CHLOROCALCITE, 6), o(MAT_SILICON, 2), o(MAT_SILICON, 2)), diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index c07020291..374b28ba8 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -431,6 +431,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionBoiler.class, new RenderFusionBoiler()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionMHDT.class, new RenderFusionMHDT()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionCoupler.class, new RenderFusionCoupler()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionPlasmaForge.class, new RenderFusionPlasmaForge()); //Watz ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatz.class, new RenderWatz()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatzPump.class, new RenderWatzPump()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 90ab0e3a9..ec8a8a774 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -293,6 +293,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor, 'W', Blocks.crafting_table }); addRecipeAuto(new ItemStack(ModBlocks.machine_funnel, 1), new Object[] { "S S", "SRS", " S ", 'S', STEEL.ingot(), 'R', REDSTONE.dust() }); + addRecipeAuto(new ItemStack(Blocks.hopper, 1), new Object[] { "S S", "S S", " S ", 'S', STEEL.ingot() }); + addRecipeAuto(new ItemStack(Items.bucket, 1), new Object[] { "S S", " S ", 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.machine_waste_drum, 1), new Object[] { "LRL", "BRB", "LRL", 'L', PB.ingot(), 'B', Blocks.iron_bars, 'R', ModItems.rod_quad_empty }); addRecipeAuto(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', IRON.ingot(), 'R', Blocks.furnace, 'B', IRON.block(), 'P', Blocks.piston }); addRecipeAuto(new ItemStack(ModBlocks.machine_ammo_press, 1), new Object[] { "IPI", "C C", "SSS", 'I', IRON.ingot(), 'P', Blocks.piston, 'C', CU.ingot(), 'S', Blocks.stone }); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 89c233042..2391413a4 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -249,6 +249,7 @@ public class ResourceManager { public static final IModelCustom fusion_boiler = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fusion/boiler.obj")).asVBO(); public static final IModelCustom fusion_mhdt = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fusion/mhdt.obj")).asVBO(); public static final IModelCustom fusion_coupler = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fusion/coupler.obj")).asVBO(); + public static final IModelCustom fusion_plasma_forge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fusion/plasma_forge.obj")).asVBO(); //ICF public static final IModelCustom icf = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/reactors/icf.obj")).asVBO(); @@ -723,6 +724,7 @@ public class ResourceManager { public static final ResourceLocation fusion_boiler_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/boiler.png"); public static final ResourceLocation fusion_mhdt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/mhdt.png"); public static final ResourceLocation fusion_coupler_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/coupler.png"); + public static final ResourceLocation fusion_plasma_forge_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/plasma_forge.png"); //ICF public static final ResourceLocation icf_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/icf.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderFusionPlasmaForge.java b/src/main/java/com/hbm/render/tileentity/RenderFusionPlasmaForge.java new file mode 100644 index 000000000..070c2df85 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderFusionPlasmaForge.java @@ -0,0 +1,128 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderFusionPlasmaForge extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glRotatef(90, 0F, 1F, 0F); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.fusion_plasma_forge_tex); + ResourceManager.fusion_plasma_forge.renderPart("Body"); + + GL11.glPushMatrix(); + GL11.glRotated(20, 0, 1, 0); + GL11.glPushMatrix(); + ResourceManager.fusion_plasma_forge.renderPart("SliderStriker"); + GL11.glTranslated(-2.75, 2.5, 0); + GL11.glRotated(-20, 0, 0, 1); + GL11.glTranslated(2.75, -2.5, 0); + ResourceManager.fusion_plasma_forge.renderPart("ArmLowerStriker"); + GL11.glTranslated(-2.75, 3.75, 0); + GL11.glRotated(30, 0, 0, 1); + GL11.glTranslated(2.75, -3.75, 0); + ResourceManager.fusion_plasma_forge.renderPart("ArmUpperStriker"); + GL11.glTranslated(-1.5, 3.75, 0); + GL11.glRotated(20, 0, 0, 1); + GL11.glTranslated(1.5, -3.75, 0); + ResourceManager.fusion_plasma_forge.renderPart("StrikerMount"); + GL11.glPushMatrix(); + GL11.glTranslated(0, 3.375, 0.5); + GL11.glRotated(30, 1, 0, 0); + GL11.glTranslated(0, -3.375, -0.5); + ResourceManager.fusion_plasma_forge.renderPart("StrikerRight"); + GL11.glTranslated(0, -0.5, 0); + ResourceManager.fusion_plasma_forge.renderPart("PistonRight"); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glTranslated(0, 3.375, -0.5); + GL11.glRotated(-30, 1, 0, 0); + GL11.glTranslated(0, -3.375, 0.5); + ResourceManager.fusion_plasma_forge.renderPart("StrikerLeft"); + GL11.glTranslated(0, -0.5, 0); + ResourceManager.fusion_plasma_forge.renderPart("PistonLeft"); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + ResourceManager.fusion_plasma_forge.renderPart("SliderJet"); + GL11.glTranslated(2.75, 2.5, 0); + GL11.glRotated(20, 0, 0, 1); + GL11.glTranslated(-2.75, -2.5, 0); + ResourceManager.fusion_plasma_forge.renderPart("ArmLowerJet"); + GL11.glTranslated(2.75, 3.75, 0); + GL11.glRotated(-20, 0, 0, 1); + GL11.glTranslated(-2.75, -3.75, 0); + ResourceManager.fusion_plasma_forge.renderPart("ArmUpperJet"); + GL11.glTranslated(1.5, 3.75, 0); + GL11.glRotated(-30, 0, 0, 1); + GL11.glTranslated(-1.5, -3.75, 0); + ResourceManager.fusion_plasma_forge.renderPart("Jet"); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glColor3f(0F, 0F, 0F); + ResourceManager.fusion_plasma_forge.renderPart("Plasma"); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.fusion_plasma_forge); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -1, 0); + GL11.glScaled(2.75, 2.75, 2.75); + GL11.glRotated(90, 0, 1, 0); + } + public void renderCommon() { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glRotatef(90, 0F, 1F, 0F); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.fusion_plasma_forge_tex); + ResourceManager.fusion_plasma_forge.renderAllExcept("Plasma"); + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glColor3f(0F, 0F, 0F); + ResourceManager.fusion_plasma_forge.renderPart("Plasma"); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/util/MissilePart.java b/src/main/java/com/hbm/render/util/MissilePart.java index 1f33a4b6a..74b3ff60c 100644 --- a/src/main/java/com/hbm/render/util/MissilePart.java +++ b/src/main/java/com/hbm/render/util/MissilePart.java @@ -38,6 +38,7 @@ public class MissilePart { MissilePart.registerPart(ModItems.mp_thruster_10_xenon, PartType.THRUSTER, 0.5, 1, ResourceManager.mp_t_10_xenon, ResourceManager.mp_t_10_xenon_tex); // MissilePart.registerPart(ModItems.mp_thruster_15_kerosene, PartType.THRUSTER, 1.5, 1.5, ResourceManager.mp_t_15_kerosene, ResourceManager.mp_t_15_kerosene_tex); + MissilePart.registerPart(ModItems.mp_thruster_15_kerosene_dual, PartType.THRUSTER, 1, 1.5, ResourceManager.mp_t_15_kerosene_dual, ResourceManager.mp_t_15_kerosene_dual_tex); MissilePart.registerPart(ModItems.mp_thruster_15_kerosene_triple, PartType.THRUSTER, 1, 1.5, ResourceManager.mp_t_15_kerosene_triple, ResourceManager.mp_t_15_kerosene_dual_tex); MissilePart.registerPart(ModItems.mp_thruster_15_solid, PartType.THRUSTER, 0.5, 1, ResourceManager.mp_t_15_solid, ResourceManager.mp_t_15_solid_tex); MissilePart.registerPart(ModItems.mp_thruster_15_solid_hexdecuple, PartType.THRUSTER, 0.5, 1, ResourceManager.mp_t_15_solid_hexdecuple, ResourceManager.mp_t_15_solid_hexdecuple_tex); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 68d4604ae..a71101a50 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -420,6 +420,7 @@ public class TileMappings { put(TileEntityFusionBoiler.class, "tileentity_fusion_boiler"); put(TileEntityFusionMHDT.class, "tileentity_fusion_mhdt"); put(TileEntityFusionCoupler.class, "tileentity_fusion_coupler"); + put(TileEntityFusionPlasmaForge.class, "tileentity_fusion_plasma_forge"); } private static void putNetwork() { diff --git a/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionPlasmaForge.java b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionPlasmaForge.java new file mode 100644 index 000000000..830057d3d --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionPlasmaForge.java @@ -0,0 +1,7 @@ +package com.hbm.tileentity.machine.fusion; + +import net.minecraft.tileentity.TileEntity; + +public class TileEntityFusionPlasmaForge extends TileEntity { + +} diff --git a/src/main/resources/assets/hbm/models/fusion/plasma_forge.obj b/src/main/resources/assets/hbm/models/fusion/plasma_forge.obj index 907a63e3b..d8a5266ab 100644 --- a/src/main/resources/assets/hbm/models/fusion/plasma_forge.obj +++ b/src/main/resources/assets/hbm/models/fusion/plasma_forge.obj @@ -1562,7 +1562,7 @@ f 340/592/78 344/596/78 343/593/78 f 337/591/79 342/598/79 341/595/79 f 339/589/80 341/595/80 344/596/80 f 338/597/81 343/599/81 342/598/81 -o PistonRight_Pistonright +o PistonRight v -1.375000 4.250000 1.125000 v -1.625000 4.250000 1.125000 v -1.375000 4.250000 0.875000 diff --git a/src/main/resources/assets/hbm/textures/models/fusion/plasma_forge.png b/src/main/resources/assets/hbm/textures/models/fusion/plasma_forge.png index 7ac40ddb08b656e6580665e3df9c8ef02de79ab9..b68caac7373383d474c4fe7c742330f28245e00c 100644 GIT binary patch literal 11130 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 Date: Sun, 15 Mar 2026 23:09:16 +0100 Subject: [PATCH 4/6] plate stamps and siren tracks moved to the anvil --- .../gui/GUIScreenTemplateFolder.java | 12 +----- .../inventory/recipes/anvil/AnvilRecipes.java | 38 +++++++++++++++++++ .../com/hbm/items/machine/ItemCassette.java | 2 - .../java/com/hbm/items/machine/ItemStamp.java | 6 +-- 4 files changed, 40 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java index 135250162..bd0ff47be 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java @@ -56,17 +56,7 @@ public class GUIScreenTemplateFolder extends GuiScreen { this.isJournal = item != ModItems.template_folder; - if(!this.isJournal) { - // Stamps - for(ItemStack i : ItemStamp.stamps.get(StampType.PLATE)) allStacks.add(i.copy()); - for(ItemStack i : ItemStamp.stamps.get(StampType.WIRE)) allStacks.add(i.copy()); - for(ItemStack i : ItemStamp.stamps.get(StampType.CIRCUIT)) allStacks.add(i.copy()); - - // Tracks - for(int i = 1; i < ItemCassette.TrackType.values().length; i++) { - allStacks.add(new ItemStack(ModItems.siren_track, 1, i)); - } - } + if(!this.isJournal) { 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 8a68e0ccf..67587ad44 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -166,7 +166,9 @@ public class AnvilRecipes extends SerializableRecipe { constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(EMERALD.dust()), new AnvilOutput(new ItemStack(Items.emerald))).setTier(3)); registerConstructionRecipes(); + registerConstructionStamps(); registerConstructionAmmo(); + registerConstructionSirens(); registerConstructionUpgrades(); registerConstructionRecycling(); } @@ -578,6 +580,34 @@ public class AnvilRecipes extends SerializableRecipe { } } + public static void registerConstructionStamps() { + + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_stone_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_stone_plate))).setTier(1)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_stone_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_stone_wire))).setTier(1)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_stone_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_stone_circuit))).setTier(1)); + + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_iron_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_iron_plate))).setTier(1)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_iron_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_iron_wire))).setTier(1)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_iron_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_iron_circuit))).setTier(1)); + + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_steel_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_steel_plate))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_steel_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_steel_wire))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_steel_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_steel_circuit))).setTier(2)); + + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_titanium_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_titanium_plate))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_titanium_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_titanium_wire))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_titanium_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_titanium_circuit))).setTier(2)); + + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_obsidian_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_obsidian_plate))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_obsidian_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_obsidian_wire))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_obsidian_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_obsidian_circuit))).setTier(2)); + + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_desh_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_desh_plate))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_desh_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_desh_wire))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_desh_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_desh_circuit))).setTier(3)); + + } + public static void registerConstructionAmmo() { constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_iron_flat), new OreDictStack(GUNMETAL.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.stamp_9))).setTier(2)); @@ -597,6 +627,14 @@ public class AnvilRecipes extends SerializableRecipe { constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 28))).setTier(2)); } + public static void registerConstructionSirens() { + for(int i = 1; i < 21; i++) { + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] {new OreDictStack(STEEL.plate()), new ComparableStack(ModItems.plate_polymer)}, new AnvilOutput(new ItemStack(ModItems.siren_track, 1, i))).setTier(2).setOverlay(OverlayType.CONSTRUCTION)); + } + + + } + public static void registerConstructionUpgrades() { } public static void registerConstructionRecycling() { diff --git a/src/main/java/com/hbm/items/machine/ItemCassette.java b/src/main/java/com/hbm/items/machine/ItemCassette.java index 9a0dc6a55..12667e1cb 100644 --- a/src/main/java/com/hbm/items/machine/ItemCassette.java +++ b/src/main/java/com/hbm/items/machine/ItemCassette.java @@ -120,8 +120,6 @@ public class ItemCassette extends Item { if(!(stack.getItem() instanceof ItemCassette)) return; - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder", I18nUtil.resolveKey(ModItems.template_folder.getUnlocalizedName() + ".name"))); - list.add(""); list.add("Siren sound cassette:"); list.add(" Name: " + TrackType.getEnum(stack.getItemDamage()).getTrackTitle()); diff --git a/src/main/java/com/hbm/items/machine/ItemStamp.java b/src/main/java/com/hbm/items/machine/ItemStamp.java index 629f634e0..ee6372fc2 100644 --- a/src/main/java/com/hbm/items/machine/ItemStamp.java +++ b/src/main/java/com/hbm/items/machine/ItemStamp.java @@ -34,11 +34,7 @@ public class ItemStamp extends Item { stamps.put(type, list); } - @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - if(this.type == StampType.PLATE || this.type == StampType.WIRE || this.type == StampType.CIRCUIT) - list.add("[CREATED USING TEMPLATE FOLDER]"); - } + /** Params can't take an ItemStack, for some reason it crashes during init */ public StampType getStampType(Item item, int meta) { From 25271de81c778ed66e37156749381609a3385acc Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 16 Mar 2026 16:39:07 +0100 Subject: [PATCH 5/6] can i have uhhhhhh labels --- changelog | 4 +++- .../java/com/hbm/extprop/HbmPlayerProps.java | 15 ++++++++------ .../render/tileentity/RenderRBMKGauge.java | 20 +++++++++++++++++++ 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/changelog b/changelog index a52ef30e0..882222e24 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,8 @@ ## Changed * Doubled bismuth and tantalum yields from high-performance solvent bedrock ore processing * Hoppers and buckets can now be made out of steel +* RoR gauges now show the lowest and highest configured value on the actual gauge ## Fixed -* Fixed size 15 dual kerosene thruster not rendering at all \ No newline at end of file +* Fixed size 15 dual kerosene thruster not rendering at all +* Fixed HUD/jetpack toggle popup not working at all on multiplayer servers \ No newline at end of file diff --git a/src/main/java/com/hbm/extprop/HbmPlayerProps.java b/src/main/java/com/hbm/extprop/HbmPlayerProps.java index e1b64d8e9..207bb6d44 100644 --- a/src/main/java/com/hbm/extprop/HbmPlayerProps.java +++ b/src/main/java/com/hbm/extprop/HbmPlayerProps.java @@ -5,12 +5,15 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.items.armor.ItemModShield; import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; @@ -86,9 +89,9 @@ public class HbmPlayerProps implements IExtendedEntityProperties { this.enableBackpack = !this.enableBackpack; if(this.enableBackpack) - MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON", MainRegistry.proxy.ID_JETPACK); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.GREEN + "Jetpack ON", MainRegistry.proxy.ID_JETPACK, 1000), (EntityPlayerMP) player); else - MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF", MainRegistry.proxy.ID_JETPACK); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "Jetpack OFF", MainRegistry.proxy.ID_JETPACK, 1000), (EntityPlayerMP) player); } } if (key == EnumKeybind.TOGGLE_MAGNET){ @@ -96,9 +99,9 @@ public class HbmPlayerProps implements IExtendedEntityProperties { this.enableMagnet = !this.enableMagnet; if(this.enableMagnet) - MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Magnet ON", MainRegistry.proxy.ID_MAGNET); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.GREEN + "Magnet ON", MainRegistry.proxy.ID_MAGNET, 1000), (EntityPlayerMP) player); else - MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Magnet OFF", MainRegistry.proxy.ID_MAGNET); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.GREEN + "Magnet ON", MainRegistry.proxy.ID_MAGNET, 1000), (EntityPlayerMP) player); } } if(key == EnumKeybind.TOGGLE_HEAD) { @@ -107,9 +110,9 @@ public class HbmPlayerProps implements IExtendedEntityProperties { this.enableHUD = !this.enableHUD; if(this.enableHUD) - MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD, 1000), (EntityPlayerMP) player); else - MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF", MainRegistry.proxy.ID_HUD); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD, 1000), (EntityPlayerMP) player); } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderRBMKGauge.java b/src/main/java/com/hbm/render/tileentity/RenderRBMKGauge.java index 398502319..3cd143d31 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRBMKGauge.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRBMKGauge.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.main.ResourceManager; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGauge; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGauge.GaugeUnit; +import com.hbm.util.BobMathUtil; import com.hbm.util.ColorUtil; import net.minecraft.client.Minecraft; @@ -71,6 +72,25 @@ public class RenderRBMKGauge extends TileEntitySpecialRenderer { FontRenderer font = Minecraft.getMinecraft().fontRenderer; int height = font.FONT_HEIGHT; + + double lineScale = 0.0025D; + String lineLower = unit.min <= 10_000 ? unit.min + "" : BobMathUtil.getShortNumber(unit.min); + String lineUpper = unit.max <= 10_000 ? unit.max + "" : BobMathUtil.getShortNumber(unit.max); + + for(int j = 0; j < 2; j++) { + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.4375, -0.125); + GL11.glRotated(10 + j * 50, -1, 0, 0); + GL11.glTranslated(0, -0.4375, 0.125); + + GL11.glTranslated(0.032, 0.4375, 0.125); + GL11.glScaled(lineScale, -lineScale, lineScale); + GL11.glNormal3f(0.0F, 0.0F, -1.0F); + GL11.glRotatef(90, 0, 1, 0); + font.drawString(j == 0 ? lineLower : lineUpper, 0, -height / 2, 0x000000); + GL11.glPopMatrix(); + } + if(unit.label != null && !unit.label.isEmpty()) { GL11.glTranslated(0.01, 0.3125, 0); From 94d37e391071df8b9ed23d19b7e9ee4f5728f468 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 17 Mar 2026 15:16:27 +0100 Subject: [PATCH 6/6] mhhhh, donuts --- changelog | 2 + src/main/java/com/hbm/blocks/ModBlocks.java | 10 +- .../fusion/MachineFusionPlasmaForge.java | 17 ++- .../recipes/AssemblyMachineRecipes.java | 1 - .../inventory/recipes/PlasmaForgeRecipes.java | 80 +++++++++++ src/main/java/com/hbm/main/ClientProxy.java | 1 + .../module/machine/ModuleMachinePlasma.java | 37 +++++ .../fusion/TileEntityFusionPlasmaForge.java | 128 +++++++++++++++++- .../gui/reactors/gui_fusion_plasmaforge.png | Bin 0 -> 7226 bytes 9 files changed, 259 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/recipes/PlasmaForgeRecipes.java create mode 100644 src/main/java/com/hbm/module/machine/ModuleMachinePlasma.java create mode 100644 src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_plasmaforge.png diff --git a/changelog b/changelog index 882222e24..f75344b58 100644 --- a/changelog +++ b/changelog @@ -2,6 +2,8 @@ * Doubled bismuth and tantalum yields from high-performance solvent bedrock ore processing * Hoppers and buckets can now be made out of steel * RoR gauges now show the lowest and highest configured value on the actual gauge +* The steel sword now looks like a medival broad sword with the appropriate scale +* All remaining items have been removed from the template folder, siren tracks and plate stamps are now made in th ## Fixed * Fixed size 15 dual kerosene thruster not rendering at all diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 8703cb9cc..2c9a506ab 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -8,15 +8,7 @@ import com.hbm.blocks.generic.*; import com.hbm.blocks.generic.BlockHazard.ExtDisplayEffect; import com.hbm.blocks.machine.*; import com.hbm.blocks.machine.albion.*; -import com.hbm.blocks.machine.fusion.MachineFusionBoiler; -import com.hbm.blocks.machine.fusion.MachineFusionBreeder; -import com.hbm.blocks.machine.fusion.MachineFusionCollector; -import com.hbm.blocks.machine.fusion.MachineFusionCoupler; -import com.hbm.blocks.machine.fusion.MachineFusionKlystron; -import com.hbm.blocks.machine.fusion.MachineFusionKlystronCreative; -import com.hbm.blocks.machine.fusion.MachineFusionMHDT; -import com.hbm.blocks.machine.fusion.MachineFusionPlasmaForge; -import com.hbm.blocks.machine.fusion.MachineFusionTorus; +import com.hbm.blocks.machine.fusion.*; import com.hbm.blocks.machine.pile.*; import com.hbm.blocks.machine.rbmk.*; import com.hbm.blocks.network.*; diff --git a/src/main/java/com/hbm/blocks/machine/fusion/MachineFusionPlasmaForge.java b/src/main/java/com/hbm/blocks/machine/fusion/MachineFusionPlasmaForge.java index 02158d812..3e6235a0c 100644 --- a/src/main/java/com/hbm/blocks/machine/fusion/MachineFusionPlasmaForge.java +++ b/src/main/java/com/hbm/blocks/machine/fusion/MachineFusionPlasmaForge.java @@ -1,11 +1,14 @@ package com.hbm.blocks.machine.fusion; import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.fusion.TileEntityFusionPlasmaForge; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class MachineFusionPlasmaForge extends BlockDummyable { @@ -16,16 +19,20 @@ public class MachineFusionPlasmaForge extends BlockDummyable { @Override public TileEntity createNewTileEntity(World world, int meta) { if(meta >= 12) return new TileEntityFusionPlasmaForge(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid(); return null; } - + @Override - public int[] getDimensions() { - return new int[] { 4, 0, 5, 5, 5, 5 }; + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); } + @Override public int[] getDimensions() { return new int[] { 4, 0, 5, 5, 5, 5 }; } + @Override public int getOffset() { return 5; } + @Override - public int getOffset() { - return 5; + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); } } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index b91609144..75550e704 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -1154,7 +1154,6 @@ public class AssemblyMachineRecipes extends GenericRecipes { new ComparableStack(ModItems.motor_bismuth, 3))); } } - } public static HashMap getRecipes() { diff --git a/src/main/java/com/hbm/inventory/recipes/PlasmaForgeRecipes.java b/src/main/java/com/hbm/inventory/recipes/PlasmaForgeRecipes.java new file mode 100644 index 000000000..c6634c69a --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/PlasmaForgeRecipes.java @@ -0,0 +1,80 @@ +package com.hbm.inventory.recipes; + +import static com.hbm.inventory.OreDictManager.BSCCO; +import static com.hbm.inventory.OreDictManager.SBD; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.inventory.recipes.loader.GenericRecipes; +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumExpensiveType; +import com.hbm.items.ItemGenericPart.EnumPartType; +import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.items.machine.ItemCircuit.EnumCircuitType; + +import net.minecraft.item.ItemStack; + +public class PlasmaForgeRecipes extends GenericRecipes { + + public static final PlasmaForgeRecipes INSTANCE = new PlasmaForgeRecipes(); + + @Override public int inputItemLimit() { return 12; } + @Override public int inputFluidLimit() { return 1; } + @Override public int outputItemLimit() { return 1; } + @Override public int outputFluidLimit() { return 0; } + + @Override public String getFileName() { return "hbmPlasmaForge.json"; } + @Override public GenericRecipe instantiateRecipe(String name) { return new GenericRecipe(name); } + + @Override + public void registerDefaults() { + + this.register(new GenericRecipe("plsm.gerald").setup(6_000, 100).outputItems(new ItemStack(ModItems.sat_gerald, 1)) + .inputItems(new OreDictStack(SBD.plateCast(), 64), + new OreDictStack(SBD.plateCast(), 64), + new OreDictStack(BSCCO.wireDense(), 64), + new OreDictStack(BSCCO.wireDense(), 64), + new ComparableStack(ModBlocks.det_nuke, 64), + new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE), + new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE), + new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE), + new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE), + new ComparableStack(ModItems.circuit, 64, EnumCircuitType.CONTROLLER_QUANTUM), + new ComparableStack(ModItems.coin_ufo, 1)) + .inputItemsEx(new OreDictStack(SBD.plateCast(), 64), + new OreDictStack(BSCCO.wireDense(), 64), + new ComparableStack(ModBlocks.det_nuke, 64), + new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES), + new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES), + new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES), + new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE), + new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE), + new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE), + new ComparableStack(ModItems.circuit, 64, EnumCircuitType.CONTROLLER_QUANTUM), + new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.COMPUTER), + new ComparableStack(ModItems.coin_ufo, 1)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "gerald")); + } + + public static HashMap getRecipes() { + HashMap recipes = new HashMap(); + + for(GenericRecipe recipe : INSTANCE.recipeOrderedList) { + List input = new ArrayList(); + if(recipe.inputItem != null) for(AStack stack : recipe.inputItem) input.add(stack); + if(recipe.inputFluid != null) for(FluidStack stack : recipe.inputFluid) input.add(ItemFluidIcon.make(stack)); + List output = new ArrayList(); + if(recipe.outputItem != null) for(IOutput stack : recipe.outputItem) output.add(stack.getAllPossibilities()); + recipes.put(input.toArray(), output.toArray()); + } + + return recipes; + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 374b28ba8..610786c2a 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -488,6 +488,7 @@ public class ClientProxy extends ServerProxy { double[] tir = new double[] {0, 0, 0}; double[] sir = new double[] {1, 1, 1}; + MinecraftForgeClient.registerItemRenderer(ModItems.steel_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); MinecraftForgeClient.registerItemRenderer(ModItems.titanium_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); MinecraftForgeClient.registerItemRenderer(ModItems.alloy_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); MinecraftForgeClient.registerItemRenderer(ModItems.desh_sword, new ItemRenderTransformer(rtp, ttp_low, stp, rfp, tfp, sfp, rir, tir, sir)); diff --git a/src/main/java/com/hbm/module/machine/ModuleMachinePlasma.java b/src/main/java/com/hbm/module/machine/ModuleMachinePlasma.java new file mode 100644 index 000000000..0e4de9b3a --- /dev/null +++ b/src/main/java/com/hbm/module/machine/ModuleMachinePlasma.java @@ -0,0 +1,37 @@ +package com.hbm.module.machine; + +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.recipes.PlasmaForgeRecipes; +import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.inventory.recipes.loader.GenericRecipes; +import com.hbm.util.BobMathUtil; + +import api.hbm.energymk2.IEnergyHandlerMK2; +import net.minecraft.item.ItemStack; + +public class ModuleMachinePlasma extends ModuleMachineBase { + + public ModuleMachinePlasma(int index, IEnergyHandlerMK2 battery, ItemStack[] slots) { + super(index, battery, slots); + this.inputSlots = new int[12]; + this.outputSlots = new int[1]; + this.inputTanks = new FluidTank[1]; + this.outputTanks = new FluidTank[0]; + } + + @Override + public GenericRecipes getRecipeSet() { + return PlasmaForgeRecipes.INSTANCE; + } + + @Override + public void setupTanks(GenericRecipe recipe) { + super.setupTanks(recipe); + if(recipe == null) return; + for(int i = 0; i < inputTanks.length; i++) if(recipe.inputFluid != null && recipe.inputFluid.length > i) inputTanks[i].changeTankSize(BobMathUtil.max(inputTanks[i].getFill(), recipe.inputFluid[i].fill * 2, 16_000)); + } + + public ModuleMachinePlasma itemInput(int from) { for(int i = 0; i < inputSlots.length; i++) inputSlots[i] = from + i; return this; } + public ModuleMachinePlasma itemOutput(int a) { outputSlots[0] = a; return this; } + public ModuleMachinePlasma fluidInput(FluidTank a) { inputTanks[0] = a; return this; } +} diff --git a/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionPlasmaForge.java b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionPlasmaForge.java index 830057d3d..36e103dd1 100644 --- a/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionPlasmaForge.java +++ b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionPlasmaForge.java @@ -1,7 +1,131 @@ package com.hbm.tileentity.machine.fusion; -import net.minecraft.tileentity.TileEntity; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.recipes.PlasmaForgeRecipes; +import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.items.ModItems; +import com.hbm.lib.Library; +import com.hbm.module.machine.ModuleMachinePlasma; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.fauxpointtwelve.DirPos; -public class TileEntityFusionPlasmaForge extends TileEntity { +import api.hbm.energymk2.IEnergyReceiverMK2; +import api.hbm.fluidmk2.IFluidStandardReceiverMK2; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +public class TileEntityFusionPlasmaForge extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiverMK2, IControlReceiver, IGUIProvider { + + public FluidTank inputTank; + + public long power; + public long maxPower = 10_000_000; + + public ModuleMachinePlasma plasmaModule; + + public TileEntityFusionPlasmaForge() { + super(16); + this.inputTank = new FluidTank(Fluids.NONE, 16_000); + + this.plasmaModule = new ModuleMachinePlasma(0, this, slots) + .itemInput(3).itemOutput(15).fluidInput(inputTank); + } + + @Override + public String getName() { + return "container.machinePlasmaForge"; + } + + @Override + public void updateEntity() { + + if(maxPower <= 0) this.maxPower = 1_000_000; + + if(!worldObj.isRemote) { + + GenericRecipe recipe = PlasmaForgeRecipes.INSTANCE.recipeNameMap.get(plasmaModule.recipe); + if(recipe != null) this.maxPower = recipe.power * 100; + + this.maxPower = BobMathUtil.max(this.power, this.maxPower, 100_000); + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); + + for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos); + if(inputTank.getTankType() != Fluids.NONE) this.trySubscribe(inputTank.getTankType(), worldObj, pos); + } + } + } + + public DirPos[] getConPos() { + return new DirPos[] { + + }; + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + if(slot == 0) return true; // battery + if(slot == 1 && stack.getItem() == ModItems.blueprints) return true; + // TODO booster material + if(this.plasmaModule.isItemValid(slot, stack)) return true; // recipe input crap + return false; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return i == 15 || this.plasmaModule.isSlotClogged(i); + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; + } + + @Override public long getPower() { return power; } + @Override public void setPower(long power) { this.power = power; } + @Override public long getMaxPower() { return maxPower; } + + @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {inputTank}; } + @Override public FluidTank[] getAllTanks() { return new FluidTank[] {inputTank}; } + + @Override public boolean hasPermission(EntityPlayer player) { return this.isUseableByPlayer(player); } + + @Override + public void receiveControl(NBTTagCompound data) { + + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + if(bb == null) bb = AxisAlignedBB.getBoundingBox(xCoord - 5, yCoord, zCoord - 5, xCoord + 5, yCoord + 6, zCoord + 6); + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return null; + } + + @Override + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return null; + } } diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_plasmaforge.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_plasmaforge.png new file mode 100644 index 0000000000000000000000000000000000000000..ed940ab4fd58838dd3472be2a7e0d3cd976a132a GIT binary patch literal 7226 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