From bc1073f7344cc08da0ab7b45a7a5234e38b28e40 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 7 Nov 2025 14:44:52 +0100 Subject: [PATCH] donuts --- src/main/java/com/hbm/blocks/ModBlocks.java | 6 +- .../machine/fusion/MachineFusionTorus.java | 159 ++++++++++++++++++ src/main/java/com/hbm/main/ClientProxy.java | 3 + .../java/com/hbm/main/ResourceManager.java | 2 + .../render/tileentity/RenderFusionTorus.java | 51 ++++++ .../java/com/hbm/tileentity/TileMappings.java | 6 + .../machine/fusion/TileEntityFusionTorus.java | 60 +++++++ .../gui/reactors/gui_fusion_torus.png | Bin 4512 -> 4971 bytes .../gui/reactors/gui_fusion_torus_alt.png | Bin 4971 -> 0 bytes 9 files changed, 286 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/hbm/blocks/machine/fusion/MachineFusionTorus.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderFusionTorus.java create mode 100644 src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java delete mode 100644 src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus_alt.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index d21a6497e..287405541 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -8,6 +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.MachineFusionTorus; import com.hbm.blocks.machine.pile.*; import com.hbm.blocks.machine.rbmk.*; import com.hbm.blocks.network.*; @@ -903,8 +904,9 @@ public class ModBlocks { public static Block iter; public static Block plasma_heater; - + public static Block fusion_component; + public static Block fusion_torus; public static Block machine_icf_press; public static Block icf_component; @@ -2046,6 +2048,7 @@ public class ModBlocks { plasma_heater = new MachinePlasmaHeater().setBlockName("plasma_heater").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma_heater"); fusion_component = new BlockFusionComponent().setBlockName("fusion_component").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_component"); + fusion_torus = new MachineFusionTorus().setBlockName("fusion_torus").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"); @@ -3429,6 +3432,7 @@ public class ModBlocks { GameRegistry.registerBlock(plasma_heater, plasma_heater.getUnlocalizedName()); register(fusion_component); + register(fusion_torus); register(watz_element); register(watz_cooler); diff --git a/src/main/java/com/hbm/blocks/machine/fusion/MachineFusionTorus.java b/src/main/java/com/hbm/blocks/machine/fusion/MachineFusionTorus.java new file mode 100644 index 000000000..45b2d2ca7 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/fusion/MachineFusionTorus.java @@ -0,0 +1,159 @@ +package com.hbm.blocks.machine.fusion; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.fusion.TileEntityFusionTorus; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineFusionTorus extends BlockDummyable { + + public static final int[][][] layout = new int[][][] { + + new int[][] { + new int[] {0,0,0,0,3,3,3,3,3,3,3,0,0,0,0}, + new int[] {0,0,0,3,1,1,1,1,1,1,1,3,0,0,0}, + new int[] {0,0,3,1,1,1,1,1,1,1,1,1,3,0,0}, + new int[] {0,3,1,1,1,1,1,1,1,1,1,1,1,3,0}, + new int[] {3,1,1,1,1,3,3,3,3,3,1,1,1,1,3}, + new int[] {3,1,1,1,3,3,3,3,3,3,3,1,1,1,3}, + new int[] {3,1,1,1,3,3,3,3,3,3,3,1,1,1,3}, + new int[] {3,1,1,1,3,3,3,3,3,3,3,1,1,1,3}, + new int[] {3,1,1,1,3,3,3,3,3,3,3,1,1,1,3}, + new int[] {3,1,1,1,3,3,3,3,3,3,3,1,1,1,3}, + new int[] {3,1,1,1,1,3,3,3,3,3,1,1,1,1,3}, + new int[] {0,3,1,1,1,1,1,1,1,1,1,1,1,3,0}, + new int[] {0,0,3,1,1,1,1,1,1,1,1,1,3,0,0}, + new int[] {0,0,0,3,1,1,1,1,1,1,1,3,0,0,0}, + new int[] {0,0,0,0,3,3,3,3,3,3,3,0,0,0,0}, + }, + new int[][] { + new int[] {0,0,0,0,1,1,3,3,3,1,1,0,0,0,0}, + new int[] {0,0,0,1,1,1,1,1,1,1,1,1,0,0,0}, + new int[] {0,0,1,1,2,2,2,2,2,2,2,1,1,0,0}, + new int[] {0,1,1,2,1,1,1,1,1,1,1,2,1,1,0}, + new int[] {1,1,2,1,1,1,1,1,1,1,1,1,2,1,1}, + new int[] {1,1,2,1,1,3,3,3,3,3,1,1,2,1,1}, + new int[] {3,1,2,1,1,3,3,3,3,3,1,1,2,1,3}, + new int[] {3,1,2,1,1,3,3,3,3,3,1,1,2,1,3}, + new int[] {3,1,2,1,1,3,3,3,3,3,1,1,2,1,3}, + new int[] {1,1,2,1,1,3,3,3,3,3,1,1,2,1,1}, + new int[] {1,1,2,1,1,1,1,1,1,1,1,1,2,1,1}, + new int[] {0,1,1,2,1,1,1,1,1,1,1,2,1,1,0}, + new int[] {0,0,1,1,2,2,2,2,2,2,2,1,1,0,0}, + new int[] {0,0,0,1,1,1,1,1,1,1,1,1,0,0,0}, + new int[] {0,0,0,0,1,1,3,3,3,1,1,0,0,0,0}, + }, + new int[][] { + new int[] {0,0,0,0,1,1,3,3,3,1,1,0,0,0,0}, + new int[] {0,0,0,1,2,2,2,2,2,2,2,1,0,0,0}, + new int[] {0,0,1,2,2,2,2,2,2,2,2,2,1,0,0}, + new int[] {0,1,2,2,2,2,2,2,2,2,2,2,2,1,0}, + new int[] {1,2,2,2,1,1,1,1,1,1,1,2,2,2,1}, + new int[] {1,2,2,2,1,3,3,3,3,3,1,2,2,2,1}, + new int[] {3,2,2,2,1,3,3,3,3,3,1,2,2,2,3}, + new int[] {3,2,2,2,1,3,3,3,3,3,1,2,2,2,3}, + new int[] {3,2,2,2,1,3,3,3,3,3,1,2,2,2,3}, + new int[] {1,2,2,2,1,3,3,3,3,3,1,2,2,2,1}, + new int[] {1,2,2,2,1,1,1,1,1,1,1,2,2,2,1}, + new int[] {0,1,2,2,2,2,2,2,2,2,2,2,2,1,0}, + new int[] {0,0,1,2,2,2,2,2,2,2,2,2,1,0,0}, + new int[] {0,0,0,1,2,2,2,2,2,2,2,1,0,0,0}, + new int[] {0,0,0,0,1,1,3,3,3,1,1,0,0,0,0}, + } + }; + + public MachineFusionTorus() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityFusionTorus(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid(); + + return null; + } + + @Override + public int[] getDimensions() { + return new int[] { 4, 0, 7, 7, 7, 7 }; + } + + @Override + public int getOffset() { + return 7; + } + + @Override + public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + + x = x + dir.offsetX * o; + z = z + dir.offsetZ * o; + + for(int iy = 0; iy < 5; iy++) { + + int l = iy > 2 ? 4 - iy : iy; + int[][] layer = layout[l]; + + for(int ix = 0; ix < layer.length; ix++) { + + for(int iz = 0; iz < layer.length; iz++) { + + int ex = ix - layer.length / 2; + int ez = iz - layer.length / 2; + + if(!world.getBlock(x + ex, y + iy, z + ez).canPlaceBlockAt(world, x + ex, y + iy, z + ez)) { + return false; + } + } + } + } + + return true; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + + x = x + dir.offsetX * o; + z = z + dir.offsetZ * o; + + for(int iy = 0; iy < 5; iy++) { + + int l = iy > 2 ? 4 - iy : iy; + int[][] layer = layout[l]; + + for(int ix = 0; ix < layer.length; ix++) { + + for(int iz = 0; iz < layer[0].length; iz++) { + + int ex = ix - layer.length / 2; + int ez = iz - layer.length / 2; + + int meta = 0; + + if(iy > 0) { + meta = ForgeDirection.UP.ordinal(); + } else if(ex < 0) { + meta = ForgeDirection.WEST.ordinal(); + } else if(ex > 0) { + meta = ForgeDirection.EAST.ordinal(); + } else if(ez < 0) { + meta = ForgeDirection.NORTH.ordinal(); + } else if(ez > 0) { + meta = ForgeDirection.SOUTH.ordinal(); + } else { + continue; + } + + if(layout[l][ix][iz] > 0) + world.setBlock(x + ex, y + iy, z + ez, this, meta, 3); + } + } + } + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index c45044797..f87d3a4ef 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -75,6 +75,7 @@ import com.hbm.tileentity.bomb.*; import com.hbm.tileentity.deco.*; import com.hbm.tileentity.machine.*; import com.hbm.tileentity.machine.albion.*; +import com.hbm.tileentity.machine.fusion.*; import com.hbm.tileentity.machine.oil.*; import com.hbm.tileentity.machine.rbmk.*; import com.hbm.tileentity.machine.storage.*; @@ -422,6 +423,8 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePlasmaHeater.class, new RenderPlasmaHeater()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityICF.class, new RenderICF()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityICFController.class, new RenderICFController()); + //Fusion + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionTorus.class, new RenderFusionTorus()); //Watz ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatz.class, new RenderWatz()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatzPump.class, new RenderWatzPump()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 6af5c6005..207d5c181 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -248,6 +248,7 @@ public class ResourceManager { //ITER public static final IModelCustom iter = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/reactors/iter.obj")).asVBO(); + public static final IModelCustom fusion_torus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fusion/torus.obj")).asVBO(); //ICF public static final IModelCustom icf = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/reactors/icf.obj")).asVBO(); @@ -698,6 +699,7 @@ public class ResourceManager { public static final ResourceLocation iter_torus_desh = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_desh.png"); public static final ResourceLocation iter_torus_chlorophyte = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_chlorophyte.png"); public static final ResourceLocation iter_torus_vaporwave = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_vaporwave.png"); + public static final ResourceLocation fusion_torus_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/torus.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/RenderFusionTorus.java b/src/main/java/com/hbm/render/tileentity/RenderFusionTorus.java new file mode 100644 index 000000000..ea1f116a8 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderFusionTorus.java @@ -0,0 +1,51 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +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 RenderFusionTorus 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.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.fusion_torus_tex); + ResourceManager.fusion_torus.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.fusion_torus); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glScaled(2, 2, 2); + } + 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_torus_tex); + ResourceManager.fusion_torus.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 313b1057c..0b425e1b8 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -48,6 +48,7 @@ import com.hbm.tileentity.bomb.*; import com.hbm.tileentity.deco.*; import com.hbm.tileentity.machine.*; import com.hbm.tileentity.machine.albion.*; +import com.hbm.tileentity.machine.fusion.*; import com.hbm.tileentity.machine.oil.*; import com.hbm.tileentity.machine.pile.*; import com.hbm.tileentity.machine.rbmk.*; @@ -253,6 +254,7 @@ public class TileMappings { putMachines(); putPile(); putRBMK(); + putFusion(); TileEntityMachineRadarNT.registerEntityClasses(); TileEntityMachineRadarNT.registerConverters(); @@ -410,6 +412,10 @@ public class TileMappings { put(TileEntityRBMKAutoloader.class, "tileentity_rbmk_autoloader"); } + private static void putFusion() { + put(TileEntityFusionTorus.class, "tileentity_fusion_torus"); + } + private static void putNetwork() { put(TileEntityCableBaseNT.class, "tileentity_cable", "tileentity_wirecoated"); put(TileEntityCablePaintable.class, "tileentity_cable_paintable"); diff --git a/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java new file mode 100644 index 000000000..b3aa16bc0 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java @@ -0,0 +1,60 @@ +package com.hbm.tileentity.machine.fusion; + +import com.hbm.tileentity.machine.albion.TileEntityCooledBase; +import com.hbm.util.fauxpointtwelve.DirPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityFusionTorus extends TileEntityCooledBase { + + public TileEntityFusionTorus() { + super(3); + } + + @Override + public String getName() { + return "container.fusionTorus"; + } + + @Override + public void updateEntity() { + + } + + @Override + public long getMaxPower() { + return 0; + } + + @Override + public DirPos[] getConPos() { + return null; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 8, + yCoord, + zCoord - 8, + xCoord + 9, + yCoord + 5, + zCoord + 9 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus.png index 18630903e323aaa868997a54acdaa0d1d085e27e..323837eb3ad30494f12f161e1169c6b53e5f2757 100644 GIT binary patch literal 4971 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 PGhk+9X;}H&g=_x;?G{)I literal 4512 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 diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus_alt.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus_alt.png deleted file mode 100644 index 323837eb3ad30494f12f161e1169c6b53e5f2757..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4971 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 PGhk+9X;}H&g=_x;?G{)I