From 59d5db4f66ad4dc6d90b78f001aba5b3ea6da1e7 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 15 Mar 2026 21:30:49 +0100 Subject: [PATCH] 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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