From 081df1c8fee8efb3b28ef7c8cc2e1cbe27a38aea Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 29 Jan 2022 11:28:20 +0100 Subject: [PATCH 1/4] fluid duct agony 2: revengeance --- src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../java/com/hbm/blocks/bomb/DetCord.java | 5 +- .../blocks/network/BlockFluidDuctSolid.java | 11 +++-- .../java/com/hbm/hazard/HazardRegistry.java | 4 +- .../items/machine/ItemFluidIdentifier.java | 8 ++-- .../hbm/items/special/ItemHolotapeImage.java | 3 ++ src/main/java/com/hbm/lib/Library.java | 15 +++--- .../java/com/hbm/main/CraftingManager.java | 6 ++- .../render/block/RenderBlockMultipass.java | 44 ++++++++++++++++-- .../com/hbm/render/block/RenderDetCord.java | 14 +++--- .../conductor/TileEntityFluidDuct.java | 27 ----------- .../conductor/TileEntityFluidDuctSimple.java | 31 ++++++++++++ src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../hbm/textures/blocks/fluid_duct_solid.png | Bin 348 -> 339 bytes 15 files changed, 115 insertions(+), 59 deletions(-) diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index b170b79ed..ab749749e 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1673,7 +1673,7 @@ public class ModBlocks { therm_endo = new BombThermo(Material.iron).setBlockName("therm_endo").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F); therm_exo = new BombThermo(Material.iron).setBlockName("therm_exo").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F); emp_bomb = new BombFloat(Material.iron).setBlockName("emp_bomb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F); - det_cord = new ExplosiveCharge(Material.iron).setBlockName("det_cord").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_cord"); + det_cord = new DetCord(Material.iron).setBlockName("det_cord").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_cord"); det_charge = new ExplosiveCharge(Material.iron).setBlockName("det_charge").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_charge"); det_nuke = new ExplosiveCharge(Material.iron).setBlockName("det_nuke").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_nuke"); det_miner = new DetMiner(Material.iron, RefStrings.MODID + ":det_miner_top").setBlockName("det_miner").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_miner_side"); diff --git a/src/main/java/com/hbm/blocks/bomb/DetCord.java b/src/main/java/com/hbm/blocks/bomb/DetCord.java index 129580a30..4c0017c5b 100644 --- a/src/main/java/com/hbm/blocks/bomb/DetCord.java +++ b/src/main/java/com/hbm/blocks/bomb/DetCord.java @@ -1,8 +1,5 @@ package com.hbm.blocks.bomb; -import com.hbm.blocks.ModBlocks; -import com.hbm.interfaces.IBomb.BombReturnCode; - import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -12,7 +9,7 @@ import net.minecraft.world.World; public class DetCord extends Block implements IDetConnectible { - protected DetCord(Material p_i45394_1_) { + public DetCord(Material p_i45394_1_) { super(p_i45394_1_); } diff --git a/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java b/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java index 47bcf4344..a44d611d1 100644 --- a/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java +++ b/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java @@ -52,14 +52,12 @@ public class BlockFluidDuctSolid extends BlockContainer implements IBlockMultiPa } @Override - public int getColorFromPass(IBlockAccess world, int x, int y, int z, boolean inv) { + @SideOnly(Side.CLIENT) + public int colorMultiplier(IBlockAccess world, int x, int y, int z) { if(RenderBlockMultipass.currentPass == 0) return 0xffffff; - if(inv) - return Fluids.NONE.getColor(); - TileEntityFluidDuctSimple te = (TileEntityFluidDuctSimple) world.getTileEntity(x, y, z); if(te != null) { @@ -68,4 +66,9 @@ public class BlockFluidDuctSolid extends BlockContainer implements IBlockMultiPa return 0xffffff; } + + @Override + public int getColorFromPass(IBlockAccess world, int x, int y, int z, boolean inv) { + return 0; + } } diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index 239a39719..4cff501ed 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -10,6 +10,7 @@ import com.hbm.hazard.type.*; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBreedingRod.BreedingRodType; import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; +import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage; import com.hbm.util.Compat; import com.hbm.util.Compat.ReikaIsotope; @@ -434,8 +435,9 @@ public class HazardRegistry { HazardSystem.register(solinium_propellant, makeData(EXPLOSIVE, 10F)); HazardSystem.register(solinium_core, new HazardData().addEntry(RADIATION, sa327 * nugget * 8).addEntry(BLINDING, 5F)); - + HazardSystem.register(nuke_fstbmb, makeData(DIGAMMA, 0.01F)); + HazardSystem.register(new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_RESTORED.ordinal()), makeData(DIGAMMA, 1F)); /* * Blacklist diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java b/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java index 5f1353d54..9c7a0b439 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java @@ -8,7 +8,6 @@ import com.hbm.interfaces.IFluidDuct; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; -import com.hbm.tileentity.conductor.TileEntityFluidDuct; import com.hbm.tileentity.conductor.TileEntityFluidDuctSimple; import com.hbm.util.I18nUtil; @@ -85,9 +84,10 @@ public class ItemFluidIdentifier extends Item { public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float f1, float f2, float f3) { TileEntity te = world.getTileEntity(x, y, z); if(te instanceof TileEntityFluidDuctSimple) { + + TileEntityFluidDuctSimple duct = (TileEntityFluidDuctSimple) te; if(!world.isRemote) { - TileEntityFluidDuctSimple duct = (TileEntityFluidDuctSimple) te; FluidType type = Fluids.fromID(stack.getItemDamage()); if (player.isSneaking()) { @@ -97,7 +97,7 @@ public class ItemFluidIdentifier extends Item { } } - world.markBlockForUpdate(x, y, z); + //world.markBlockForUpdate(x, y, z); player.swingItem(); } @@ -132,7 +132,7 @@ public class ItemFluidIdentifier extends Item { TileEntity te = world.getTileEntity(nextX, nextY, nextZ); if (te instanceof TileEntityFluidDuctSimple && ((TileEntityFluidDuctSimple) te).getType() == oldType) { - TileEntityFluidDuct nextDuct = (TileEntityFluidDuct) te; + TileEntityFluidDuctSimple nextDuct = (TileEntityFluidDuctSimple) te; long connectionsCount = Arrays.stream(nextDuct.connections).filter(Objects::nonNull).count(); if (connectionsCount > 1) { diff --git a/src/main/java/com/hbm/items/special/ItemHolotapeImage.java b/src/main/java/com/hbm/items/special/ItemHolotapeImage.java index eacbac3f4..b5bff40b2 100644 --- a/src/main/java/com/hbm/items/special/ItemHolotapeImage.java +++ b/src/main/java/com/hbm/items/special/ItemHolotapeImage.java @@ -46,6 +46,9 @@ public class ItemHolotapeImage extends ItemHoloTape { HOLO_NV_CRATER( EnumChatFormatting.GOLD, "Brown", "031-MOUNTAIN", "The tape contains an audio track that is mostly gabled sound and garbage noise. There is an image file on it, depicting a large dome in blue light surrounded by many smaller buildings. In the distance, there is a smaller dome with red lights."), HOLO_NV_DIVIDE( EnumChatFormatting.GOLD, "Brown", "032-ROAD", "The tape contains an audio track that is mostly gabled sound and garbage noise. There is an image file on it, depicting a large chasm with broken highways and destroyed buildings littering the landscape."), HOLO_NV_BM( EnumChatFormatting.GOLD, "Brown", "033-BROADCAST", "The tape contains an audio track that is mostly gabled sound and garbage noise. There is an image file on it, depicting a satellite broadcasting station on top of a hill. In the distance, there is a very large person walking hand in hand with a robot into the sunset."), + HOLO_O_1( EnumChatFormatting.WHITE, "Chroma", "X00-TRANSCRIPT", "[Start of Automated Audio Transcript] in a boardroom, right, and they're trying to come up with some new ideas. So one guy just says they should reuse this other characteer from somewhere else, who has like this night-theme you know, and just change the entire schtick to day. So when they had to come up with a name, one guy said, why not take the original name, replace the N with a D, because of night to day, right, and run with it? Now the name sounds like 'Dicks'! Funniest thing I've ever heard! [End of Transcript]"), + HOLO_O_2( EnumChatFormatting.WHITE, "Chroma", "X01-NEWS", "The tape contains a news article, reporting an unusually pale person throwing flashbangs at people in public. The image at the bottom shows one of the incidents, unsurprisingly the light from one of the flashbangs made it unrecognizable."), + HOLO_O_3( EnumChatFormatting.WHITE, "Chroma", "X02-FICTION", "The tape contains an article from a science fiction magazine, engaging with various reader comments about what to do with a time machine. One of those comments suggests engaging in various unsanitary acts with the future self, being signed off with just the initial '~D'."), ; private String name; diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 1bb8dcd71..7ff51b2fd 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -19,6 +19,7 @@ import com.hbm.items.ModItems; import com.hbm.tileentity.TileEntityProxyBase; import com.hbm.tileentity.TileEntityProxyInventory; import com.hbm.tileentity.conductor.TileEntityFluidDuct; +import com.hbm.tileentity.conductor.TileEntityFluidDuctSimple; import com.hbm.tileentity.conductor.TileEntityGasDuct; import com.hbm.tileentity.conductor.TileEntityGasDuctSolid; import com.hbm.tileentity.conductor.TileEntityOilDuct; @@ -495,17 +496,17 @@ public class Library { if(tileentity instanceof IFluidDuct) { - if(tileentity instanceof TileEntityFluidDuct && ((TileEntityFluidDuct)tileentity).getType() == type) + if(tileentity instanceof TileEntityFluidDuctSimple && ((TileEntityFluidDuctSimple)tileentity).getType() == type) { - if(Library.checkUnionListForFluids(((TileEntityFluidDuct)tileentity).uoteab, that)) + if(Library.checkUnionListForFluids(((TileEntityFluidDuctSimple)tileentity).uoteab, that)) { - for(int i = 0; i < ((TileEntityFluidDuct)tileentity).uoteab.size(); i++) + for(int i = 0; i < ((TileEntityFluidDuctSimple)tileentity).uoteab.size(); i++) { - if(((TileEntityFluidDuct)tileentity).uoteab.get(i).source == that) + if(((TileEntityFluidDuctSimple)tileentity).uoteab.get(i).source == that) { - if(((TileEntityFluidDuct)tileentity).uoteab.get(i).ticked != newTact) + if(((TileEntityFluidDuctSimple)tileentity).uoteab.get(i).ticked != newTact) { - ((TileEntityFluidDuct)tileentity).uoteab.get(i).ticked = newTact; + ((TileEntityFluidDuctSimple)tileentity).uoteab.get(i).ticked = newTact; transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type); transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type); transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type); @@ -516,7 +517,7 @@ public class Library { } } } else { - ((TileEntityFluidDuct)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact)); + ((TileEntityFluidDuctSimple)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact)); } } if(tileentity instanceof TileEntityGasDuct && ((TileEntityGasDuct)tileentity).type.name().equals(type.name())) diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index efe7e53f5..c31138c25 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -14,6 +14,7 @@ import static com.hbm.inventory.OreDictManager.*; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; import com.hbm.items.special.ItemCircuitStarComponent.CircuitComponentType; +import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage; import com.hbm.items.special.ItemPlasticScrap.ScrapType; import com.hbm.items.tool.ItemGuideBook.BookType; import com.hbm.util.EnchantmentUtil; @@ -554,8 +555,9 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.crystal_charred, 1), new Object[] { ST.dust(), CO.dust(), BR.dust(), NB.dust(), TS.dust(), CE.dust(), ModBlocks.block_meteor, AL.block(), Items.water_bucket }); addRecipeAuto(new ItemStack(ModBlocks.crystal_virus, 1), new Object[] { "STS", "THT", "STS", 'S', ModItems.particle_strange, 'T', W.dust(), 'H', ModItems.crystal_horn }); addRecipeAuto(new ItemStack(ModBlocks.crystal_pulsar, 32), new Object[] { "STS", "THT", "STS", 'S', ModItems.cell_uf6, 'T', AL.dust(), 'H', ModItems.crystal_charred }); - + addRecipeAuto(new ItemStack(ModBlocks.fluid_duct, 8), new Object[] { "SAS", " ", "SAS", 'S', STEEL.plate(), 'A', AL.plate() }); + addRecipeAuto(new ItemStack(ModBlocks.fluid_duct_solid, 8), new Object[] { "SAS", "A A", "SAS", 'S', STEEL.ingot(), 'A', AL.plate() }); //addRecipeAuto(new ItemStack(ModBlocks.machine_assembler, 1), new Object[] { "WWW", "MCM", "ISI", 'W', KEY_ANYPANE, 'M', ModItems.motor, 'C', ModItems.circuit_aluminium, 'I', "blockCopper", 'S', STEEL.block() }); addRecipeAuto(new ItemStack(ModItems.template_folder, 1), new Object[] { "LPL", "BPB", "LPL", 'P', Items.paper, 'L', KEY_BLUE, 'B', KEY_WHITE }); //addRecipeAuto(new ItemStack(ModItems.turret_control, 1), new Object[] { "R12", "PPI", " I", 'R', REDSTONE.dust(), '1', ModItems.circuit_aluminium, '2', ModItems.circuit_red_copper, 'P', STEEL.plate(), 'I', STEEL.ingot() }); @@ -855,6 +857,8 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.RBMK.ordinal()), new Object[] { Items.book, Items.potato }); addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.HADRON.ordinal()), new Object[] { Items.book, ModItems.fuse }); + addShapelessAuto(new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_RESTORED.ordinal()), new Object[] { new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_DIGAMMA.ordinal()), ModItems.screwdriver, ModItems.ducttape, ModItems.armor_polish }); + if(GeneralConfig.enableBabyMode) { addShapelessAuto(new ItemStack(ModItems.cordite, 3), new Object[] { ModItems.ballistite, Items.gunpowder, new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); addShapelessAuto(new ItemStack(ModItems.ingot_semtex, 3), new Object[] { Items.slime_ball, Blocks.tnt, KNO.dust() }); diff --git a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java index 537378e9f..e5d860629 100644 --- a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java +++ b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java @@ -1,5 +1,7 @@ package com.hbm.render.block; +import org.lwjgl.opengl.GL11; + import com.hbm.blocks.IBlockMultiPass; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; @@ -24,7 +26,41 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { public static int currentPass = 0; @Override - public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { } + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + block.setBlockBoundsForItemRender(); + renderer.setRenderBoundsFromBlock(block); + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); + tessellator.draw(); + + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { @@ -46,8 +82,8 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { for(int i = 0; i < passes; i++) { currentPass = i; - System.out.println(multi.getColorFromPass(world, x, y, z, false)); - tessellator.setColorOpaque_I(multi.getColorFromPass(world, x, y, z, false)); + //System.out.println(multi.getColorFromPass(world, x, y, z, false)); + //tessellator.setColorOpaque_I(multi.getColorFromPass(world, x, y, z, false)); renderer.renderStandardBlock(block, x, y, z); } @@ -58,7 +94,7 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { @Override public boolean shouldRender3DInInventory(int modelId) { - return false; + return true; } @Override diff --git a/src/main/java/com/hbm/render/block/RenderDetCord.java b/src/main/java/com/hbm/render/block/RenderDetCord.java index c07ffca3c..7b77738ae 100644 --- a/src/main/java/com/hbm/render/block/RenderDetCord.java +++ b/src/main/java/com/hbm/render/block/RenderDetCord.java @@ -2,8 +2,8 @@ package com.hbm.render.block; import org.lwjgl.opengl.GL11; +import com.hbm.blocks.bomb.DetCord; import com.hbm.blocks.bomb.IDetConnectible; -import com.hbm.blocks.test.TestConductor; import com.hbm.lib.Library; import com.hbm.main.ResourceManager; import com.hbm.render.util.ObjUtil; @@ -33,7 +33,7 @@ public class RenderDetCord implements ISimpleBlockRenderingHandler { GL11.glRotated(180, 0, 1, 0); GL11.glScaled(1.25D, 1.25D, 1.25D); tessellator.startDrawingQuads(); - ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "CX", iicon, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "CZ", iicon, tessellator, 0, false); tessellator.draw(); GL11.glPopMatrix(); @@ -60,13 +60,15 @@ public class RenderDetCord implements ISimpleBlockRenderingHandler { boolean pZ = IDetConnectible.isConnectible(world, x, y, z + 1, Library.NEG_Z); boolean nZ = IDetConnectible.isConnectible(world, x, y, z - 1, Library.POS_Z); + int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); + tessellator.addTranslation(x + 0.5F, y + 0.5F, z + 0.5F); - if(pX && nX && !pY && !nY && !pZ && !nZ) + if(mask == 0b110000 || mask == 0b100000 || mask == 0b010000) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "CX", iicon, tessellator, 0, true); - else if(!pX && !nX && pY && nY && !pZ && !nZ) + else if(mask == 0b001100 || mask == 0b001000 || mask == 0b000100) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "CY", iicon, tessellator, 0, true); - else if(!pX && !nX && !pY && !nY && pZ && nZ) + else if(mask == 0b000011 || mask == 0b000010 || mask == 0b000001) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "CZ", iicon, tessellator, 0, true); else { @@ -91,6 +93,6 @@ public class RenderDetCord implements ISimpleBlockRenderingHandler { @Override public int getRenderId() { - return TestConductor.renderID; + return DetCord.renderID; } } diff --git a/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuct.java b/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuct.java index f59bff633..60ede37f4 100644 --- a/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuct.java +++ b/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuct.java @@ -23,35 +23,8 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityFluidDuct extends TileEntityFluidDuctSimple { - public ForgeDirection[] connections = new ForgeDirection[6]; - public TileEntityFluidDuct() { } - @Override - public void updateEntity() { - this.updateConnections(); - } - - public void updateConnections() { - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord + 1, zCoord, type)) connections[0] = ForgeDirection.UP; - else connections[0] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord - 1, zCoord, type)) connections[1] = ForgeDirection.DOWN; - else connections[1] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord - 1, type)) connections[2] = ForgeDirection.NORTH; - else connections[2] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord + 1, yCoord, zCoord, type)) connections[3] = ForgeDirection.EAST; - else connections[3] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord + 1, type)) connections[4] = ForgeDirection.SOUTH; - else connections[4] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord - 1, yCoord, zCoord, type)) connections[5] = ForgeDirection.WEST; - else connections[5] = null; - } - @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuctSimple.java b/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuctSimple.java index 46c169d63..f9b896b0d 100644 --- a/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuctSimple.java +++ b/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuctSimple.java @@ -7,6 +7,7 @@ import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids; import com.hbm.interfaces.IFluidDuct; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.lib.Library; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; @@ -14,11 +15,16 @@ import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.WorldServer; +import net.minecraftforge.common.util.ForgeDirection; public class TileEntityFluidDuctSimple extends TileEntity implements IFluidDuct { + private FluidType lastType = Fluids.NONE; protected FluidType type = Fluids.NONE; public List uoteab = new ArrayList(); + + + public ForgeDirection[] connections = new ForgeDirection[6]; @Override public Packet getDescriptionPacket() { @@ -64,4 +70,29 @@ public class TileEntityFluidDuctSimple extends TileEntity implements IFluidDuct public FluidType getType() { return type; } + + @Override + public void updateEntity() { + this.updateConnections(); + + if(lastType != type) { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + lastType = type; + } + } + + public void updateConnections() { + if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord + 1, zCoord, type)) connections[0] = ForgeDirection.UP; + else connections[0] = null; + if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord - 1, zCoord, type)) connections[1] = ForgeDirection.DOWN; + else connections[1] = null; + if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord - 1, type)) connections[2] = ForgeDirection.NORTH; + else connections[2] = null; + if(Library.checkFluidConnectables(this.worldObj, xCoord + 1, yCoord, zCoord, type)) connections[3] = ForgeDirection.EAST; + else connections[3] = null; + if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord + 1, type)) connections[4] = ForgeDirection.SOUTH; + else connections[4] = null; + if(Library.checkFluidConnectables(this.worldObj, xCoord - 1, yCoord, zCoord, type)) connections[5] = ForgeDirection.WEST; + else connections[5] = null; + } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index ff1f78604..faa0d8d20 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1530,6 +1530,7 @@ item.hev_boots.name=HEV Mark IV Stiefel item.hev_plate.name=HEV Mark IV Brustpanzer item.hev_helmet.name=HEV Mark IV Helm item.hev_legs.name=HEV Mark IV Beinschutz +item.holotape_image.name=Holoband item.horseshoe_magnet.name=Hufeisenmagnet item.hull_big_aluminium.name=Große Aluminiumhülle item.hull_big_steel.name=Große Stahlhülle @@ -3058,6 +3059,7 @@ tile.fireworks.color=Farbe: %s tile.flame_war.name=Flamewar aus der Box tile.float_bomb.name=Schwebebombe tile.fluid_duct.name=Universelles Flüssigkeitsrohr +tile.fluid_duct_solid.name=Geschirmtes universelles Flüssigkeitsrohr tile.foam_layer.name=Schaumdecke tile.fraction_spacer.name=Fraktionierungsturm-Teiler tile.frozen_dirt.name=Gefrorene Erde diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index d47fecc0c..8bacaf62d 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1702,6 +1702,7 @@ item.hev_boots.name=HEV Mark IV Boots item.hev_plate.name=HEV Mark IV Chestplate item.hev_helmet.name=HEV Mark IV Helmet item.hev_legs.name=HEV Mark IV Leggings +item.holotape_image.name=Holotape item.horseshoe_magnet.name=Horseshoe Magnet item.hull_big_aluminium.name=Big Aluminium Shell item.hull_big_steel.name=Big Steel Shell @@ -3372,6 +3373,7 @@ tile.fireworks.color=Color: %s tile.flame_war.name=Flame War in a Box tile.float_bomb.name=Levitation Bomb tile.fluid_duct.name=Universal Fluid Duct +tile.fluid_duct_solid.name=Coated Universal Fluid Duct tile.foam_layer.name=Foam layer tile.fraction_spacer.name=Fractioning Tower Separator tile.frozen_dirt.name=Frozen Dirt diff --git a/src/main/resources/assets/hbm/textures/blocks/fluid_duct_solid.png b/src/main/resources/assets/hbm/textures/blocks/fluid_duct_solid.png index 2a1ef864f4b77af1ca7258d52735c213c4d28076..30fb1ecd4cc522f1653d448fd0b91aed14360539 100644 GIT binary patch delta 296 zcmV+@0oVTA0@DJJG=B<7L_t(Ijg?a|P6I&;mW6#cdH#ghcUtFMiv=HN{@W`2JOw`vn{Y7l^ zIa94C>dy@T;Q8r(k+_Dp_ph@8KmGIjCtSr(_0k{icD1fsl7H>*xRx_c@=4Vrh6DDn`Qoq zpupT_W)S(sAuw}TrrIE93ewE&Qp(IkqCWVLGerePHn;sA*jf9WotJKC-CoKWCwW=6 uVb>!31>5bl&mq)KHYDq0GOgg+?|cGb)`E&i9hi{-00004UyR?wCwg5oE?KFNot!|}>usuy#aCM7rTW%Wh+)px%E z>$vx_=8N>V0s!OJxe45ujsWZ)_csQ4_x<5md?oLiQ$K%xtbci3i+29UdojbfJg9m> zr04bJ8Gw`$03iebPH*ppUI4D{ZVAIMpsGuEA;!1?Pm`7mtXN73Rb`&%^)02;oKUxk z{L=~srgjJck$iE45W>$gEu#c*-b+Ev)Q&N3L=@=@9lV#4fq_l!d=Koc9%q+RH>=fd z#SG(eTDDp6b|o^FTY={PKs00000NkvXXu0mjf Dd|Qn+ From fd940b59c8407c6f2e1c1f0fbfa7060d6849c540 Mon Sep 17 00:00:00 2001 From: MartinTheDragon Date: Sat, 29 Jan 2022 16:16:15 +0100 Subject: [PATCH 2/4] Add in-game calculator --- .../java/com/hbm/handler/HbmKeybinds.java | 11 +- .../com/hbm/inventory/gui/GUICalculator.java | 237 ++++++++++++++++++ src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../assets/hbm/textures/gui/calculator.png | Bin 0 -> 566 bytes 5 files changed, 248 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/gui/GUICalculator.java create mode 100644 src/main/resources/assets/hbm/textures/gui/calculator.png diff --git a/src/main/java/com/hbm/handler/HbmKeybinds.java b/src/main/java/com/hbm/handler/HbmKeybinds.java index ad5b4d837..552ae9b6e 100644 --- a/src/main/java/com/hbm/handler/HbmKeybinds.java +++ b/src/main/java/com/hbm/handler/HbmKeybinds.java @@ -1,5 +1,7 @@ package com.hbm.handler; +import com.hbm.inventory.gui.GUICalculator; +import cpw.mods.fml.common.FMLCommonHandler; import org.lwjgl.input.Keyboard; import com.hbm.extprop.HbmPlayerProps; @@ -16,6 +18,7 @@ public class HbmKeybinds { public static final String category = "hbm.key"; + public static KeyBinding calculatorKey = new KeyBinding(category + ".calculator", Keyboard.KEY_N, category); public static KeyBinding jetpackKey = new KeyBinding(category + ".toggleBack", Keyboard.KEY_C, category); public static KeyBinding hudKey = new KeyBinding(category + ".toggleHUD", Keyboard.KEY_V, category); public static KeyBinding reloadKey = new KeyBinding(category + ".reload", Keyboard.KEY_R, category); @@ -25,12 +28,13 @@ public class HbmKeybinds { public static KeyBinding craneLeftKey = new KeyBinding(category + ".craneMoveLeft", Keyboard.KEY_LEFT, category); public static KeyBinding craneRightKey = new KeyBinding(category + ".craneMoveRight", Keyboard.KEY_RIGHT, category); public static KeyBinding craneLoadKey = new KeyBinding(category + ".craneLoad", Keyboard.KEY_RETURN, category); - + public static void register() { + ClientRegistry.registerKeyBinding(calculatorKey); ClientRegistry.registerKeyBinding(jetpackKey); ClientRegistry.registerKeyBinding(hudKey); ClientRegistry.registerKeyBinding(reloadKey); - + ClientRegistry.registerKeyBinding(craneUpKey); ClientRegistry.registerKeyBinding(craneDownKey); ClientRegistry.registerKeyBinding(craneLeftKey); @@ -40,6 +44,9 @@ public class HbmKeybinds { @SubscribeEvent public void keyEvent(KeyInputEvent event) { + if (calculatorKey.getIsKeyPressed()) { // handle the calculator client-side only + FMLCommonHandler.instance().showGuiScreen(new GUICalculator()); + } HbmPlayerProps props = HbmPlayerProps.getData(MainRegistry.proxy.me()); diff --git a/src/main/java/com/hbm/inventory/gui/GUICalculator.java b/src/main/java/com/hbm/inventory/gui/GUICalculator.java new file mode 100644 index 000000000..a8c5ec6e8 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUICalculator.java @@ -0,0 +1,237 @@ +package com.hbm.inventory.gui; + +import com.hbm.lib.RefStrings; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import java.math.BigDecimal; +import java.util.Locale; +import java.util.Stack; + +public class GUICalculator extends GuiScreen { + private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/gui/calculator.png"); + private int xSize = 220; + private int ySize = 50; + private GuiTextField inputField; + + private String latestResult = "?"; + + @Override + public void initGui() { + Keyboard.enableRepeatEvents(true); + + int x = (width - xSize) / 2; + int y = (height - ySize) / 2; + inputField = new GuiTextField(fontRendererObj, x + 5, y + 5, 210, 13); + inputField.setTextColor(-1); + inputField.setCanLoseFocus(false); + inputField.setFocused(true); + inputField.setMaxStringLength(1000); + } + + @Override + public void onGuiClosed() { + Keyboard.enableRepeatEvents(false); + } + + @Override + protected void keyTyped(char p_73869_1_, int p_73869_2_) { + if (!inputField.textboxKeyTyped(p_73869_1_, p_73869_2_)) + super.keyTyped(p_73869_1_, p_73869_2_); + + if (p_73869_1_ == 13 || p_73869_1_ == 10) { // when pressing enter (CR or LF) + try { + double result = Double.parseDouble(latestResult); + String plainStringRepresentation = (new BigDecimal(result)).toPlainString(); + GuiScreen.setClipboardString(plainStringRepresentation); + inputField.setText(plainStringRepresentation); + inputField.setCursorPositionEnd(); + inputField.setSelectionPos(0); + } catch (Exception ignored) {} + return; + } + + String input = inputField.getText().replaceAll("[^\\d+\\-*/^.()\\sA-Za-z]+", ""); + + if (input.isEmpty()) { + latestResult = "?"; + return; + } + + try { + latestResult = Double.toString(evaluateExpression(input)); + } catch (Exception e) { latestResult = e.toString(); } + } + + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + super.drawScreen(mouseX, mouseY, partialTicks); + + GL11.glColor4f(1F, 1F, 1F, 1F); + mc.getTextureManager().bindTexture(texture); + int x = (width - xSize) / 2; + int y = (height - ySize) / 2; + + drawTexturedModalRect(x, y, 0, 0, xSize, ySize); + + inputField.drawTextBox(); + fontRendererObj.drawString("=" + latestResult, x + 5, y + 30, -1); + } + + /** + * Mathematically evaluates user-inputted strings
+ * It is recommended to catch all exceptions when using this + */ + public static double evaluateExpression(String input) { + if (input.contains("^")) input = preEvaluatePower(input); + + char[] tokens = input.toCharArray(); + Stack values = new Stack<>(); + Stack operators = new Stack<>(); + + for (int i = 0; i < tokens.length; i++) { + if (tokens[i] == ' ') continue; + + if (tokens[i] >= '0' && tokens[i] <= '9' || tokens[i] == '.' || (tokens[i] == '-' && (i == 0 || "+-*/^(".contains(String.valueOf(tokens[i - 1]))))) { + StringBuilder buffer = new StringBuilder(); + if (tokens[i] == '-') { + buffer.append('-'); // for negative numbers + i++; + } + while (i < tokens.length && (tokens[i] >= '0' && tokens[i] <= '9' || tokens[i] == '.')) buffer.append(tokens[i++]); + values.push(Double.parseDouble(buffer.toString())); + i--; + } else if (tokens[i] == '(') operators.push(Character.toString(tokens[i])); + else if (tokens[i] == ')') { + while (!operators.isEmpty() && operators.peek().charAt(0) != '(') + values.push(evaluateOperator(operators.pop().charAt(0), values.pop(), values.pop())); + operators.pop(); + if (!operators.isEmpty() && operators.peek().length() > 1) + values.push(evaluateFunction(operators.pop(), values.pop())); + } else if (tokens[i] == '+' || tokens[i] == '-' || tokens[i] == '*' || tokens[i] == '/' || tokens[i] == '^') { + while (!operators.isEmpty() && hasPrecedence(String.valueOf(tokens[i]), operators.peek())) + values.push(evaluateOperator(operators.pop().charAt(0), values.pop(), values.pop())); + operators.push(Character.toString(tokens[i])); + } else if (tokens[i] >= 'A' && tokens[i] <= 'Z' || tokens[i] >= 'a' && tokens[i] <= 'z') { + StringBuilder charBuffer = new StringBuilder(); + while (i < tokens.length && (tokens[i] >= 'A' && tokens[i] <= 'Z' || tokens[i] >= 'a' && tokens[i] <= 'z')) + charBuffer.append(tokens[i++]); + String string = charBuffer.toString(); + if (string.equalsIgnoreCase("pi")) values.push(Math.PI); + else if (string.equalsIgnoreCase("e")) values.push(Math.E); + else operators.push(string.toLowerCase(Locale.ROOT)); + i--; + } + } + + // if the expression is correctly formatted, no function is remaining + while (!operators.empty()) values.push(evaluateOperator(operators.pop().charAt(0), values.pop(), values.pop())); + + return values.pop(); + } + + private static double evaluateOperator(char operator, double x, double y) { + switch (operator) { + case '+': return y + x; + case '-': return y - x; + case '*': return y * x; + case '/': return y / x; + + case '^': return Math.pow(y, x); // should not happen here, but oh well + } + return 0; + } + + private static double evaluateFunction(String function, double x) { + switch (function) { + case "sqrt": return Math.sqrt(x); + + case "sin": return Math.sin(x); + case "cos": return Math.cos(x); + case "tan": return Math.tan(x); + case "asin": return Math.asin(x); + case "acos": return Math.acos(x); + case "atan": return Math.atan(x); + + case "log": return Math.log10(x); + case "ln": return Math.log(x); + + case "ceil": return Math.ceil(x); + case "floor": return Math.floor(x); + case "round": return Math.round(x); + } + return 0; + } + + /** Returns whether {@code second} has precedence over {@code first} */ + private static boolean hasPrecedence(String first, String second) { + if (second.length() > 1) return false; + + char firstChar = first.charAt(0); + char secondChar = second.charAt(0); + + if (secondChar == '(' || secondChar == ')') return false; + else return (firstChar != '*' && firstChar != '/' && firstChar != '^') || (secondChar != '+' && secondChar != '-'); + } + + /** Returns the input with all powers evaluated */ + private static String preEvaluatePower(String input) { + do { + int powerOperatorIndex = input.lastIndexOf('^'); + + // find base + boolean previousTokenIsParentheses = input.charAt(powerOperatorIndex - 1) == ')'; + int parenthesesDepth = previousTokenIsParentheses ? 1 : 0; + int baseExpressionStart = previousTokenIsParentheses ? powerOperatorIndex - 2 : powerOperatorIndex - 1; + baseLoop: + for (; baseExpressionStart >= 0; baseExpressionStart--) { // search backwards + switch (input.charAt(baseExpressionStart)) { + case ')': + if (previousTokenIsParentheses) parenthesesDepth++; + else break baseLoop; + break; + case '(': + if (previousTokenIsParentheses && parenthesesDepth > 0) parenthesesDepth--; + else break baseLoop; + break; + case '+': case '-': case '*': case '/': case '^': + if (parenthesesDepth == 0) break baseLoop; + } + } + baseExpressionStart++; // go one token forward again + if (parenthesesDepth > 0) throw new IllegalArgumentException("Incomplete parentheses"); + + // find exponent + boolean nextTokenIsParentheses = input.charAt(powerOperatorIndex + 1) == '('; + parenthesesDepth = nextTokenIsParentheses ? 1 : 0; + int exponentExpressionEnd = nextTokenIsParentheses ? powerOperatorIndex + 2 : powerOperatorIndex + 1; + exponentLoop: + for (; exponentExpressionEnd < input.length(); exponentExpressionEnd++) { + switch (input.charAt(exponentExpressionEnd)) { + case '(': + if (nextTokenIsParentheses) parenthesesDepth++; + else break exponentLoop; + break; + case ')': + if (nextTokenIsParentheses && parenthesesDepth > 0) parenthesesDepth--; + else break exponentLoop; + break; + case '+': case '-': case '*': case '/': case '^': + if (parenthesesDepth == 0) break exponentLoop; + } + } + if (parenthesesDepth > 0) throw new IllegalArgumentException("Incomplete parentheses"); + + double base = evaluateExpression(input.substring(baseExpressionStart, powerOperatorIndex)); + double exponent = evaluateExpression(input.substring(powerOperatorIndex + 1, exponentExpressionEnd)); + double result = Math.pow(base, exponent); + // use big decimal to avoid scientific notation messing with the calculation + input = input.substring(0, baseExpressionStart) + (new BigDecimal(result)).toPlainString() + input.substring(exponentExpressionEnd); + } while (input.contains("^")); + + return input; + } +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index faa0d8d20..defbe5bb8 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -438,6 +438,7 @@ hazard.particleFine=Feinstaub hazard.sand=Augenreizstoffe hbm.key=NTM Hotkeys +hbm.key.calculator=Taschenrechner hbm.key.craneLoad=Kran laden/entladen hbm.key.craneMoveDown=Kran rückwärts hbm.key.craneMoveLeft=Kran nach links diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 8bacaf62d..ab9f20e90 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -575,6 +575,7 @@ hazard.particleFine=Particulates hazard.sand=Eye Irritants hbm.key=NTM Hotkeys +hbm.key.calculator=Calculator hbm.key.craneLoad=Load/Unload Crane hbm.key.craneMoveDown=Move Crane Backward hbm.key.craneMoveLeft=Move Crane Left diff --git a/src/main/resources/assets/hbm/textures/gui/calculator.png b/src/main/resources/assets/hbm/textures/gui/calculator.png new file mode 100644 index 0000000000000000000000000000000000000000..fa6fd968fb3744fe4dd9c844e0c3add6e5342814 GIT binary patch literal 566 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G!U;i$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&eBK4*bPWHAE+-(e7DJf6QI1*qY)r;B4qMcmtK2YH(uL|g+mFiFk)$34^S z1%t3t% Date: Sat, 29 Jan 2022 17:50:50 +0100 Subject: [PATCH 3/4] bufferless HE to RF converters --- .../java/com/hbm/blocks/IBlockMultiPass.java | 2 - .../blocks/machine/BlockConverterHeRf.java | 24 ---- .../blocks/network/BlockFluidDuctSolid.java | 7 - src/main/java/com/hbm/handler/GUIHandler.java | 14 -- .../java/com/hbm/hazard/HazardRegistry.java | 36 +++-- .../java/com/hbm/hazard/HazardSystem.java | 26 +++- .../com/hbm/inventory/OreDictManager.java | 2 - .../container/ContainerConverterHeRf.java | 64 --------- .../hbm/inventory/gui/GUIConverterHeRf.java | 47 ------- .../hbm/items/special/ItemHolotapeImage.java | 2 +- .../machine/TileEntityConverterHeRf.java | 128 +++++------------- .../machine/TileEntityConverterRfHe.java | 7 - 12 files changed, 74 insertions(+), 285 deletions(-) delete mode 100644 src/main/java/com/hbm/inventory/container/ContainerConverterHeRf.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUIConverterHeRf.java diff --git a/src/main/java/com/hbm/blocks/IBlockMultiPass.java b/src/main/java/com/hbm/blocks/IBlockMultiPass.java index 7527dfdc1..91d91a14b 100644 --- a/src/main/java/com/hbm/blocks/IBlockMultiPass.java +++ b/src/main/java/com/hbm/blocks/IBlockMultiPass.java @@ -8,8 +8,6 @@ public interface IBlockMultiPass { public int getPasses(); - public int getColorFromPass(IBlockAccess world, int x, int y, int z, boolean inv); - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); public static int getRenderType() { return renderID; diff --git a/src/main/java/com/hbm/blocks/machine/BlockConverterHeRf.java b/src/main/java/com/hbm/blocks/machine/BlockConverterHeRf.java index 2b3880812..fa7f38a3c 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockConverterHeRf.java +++ b/src/main/java/com/hbm/blocks/machine/BlockConverterHeRf.java @@ -4,9 +4,7 @@ import com.hbm.tileentity.machine.TileEntityConverterHeRf; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; public class BlockConverterHeRf extends BlockContainer { @@ -19,26 +17,4 @@ public class BlockConverterHeRf extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityConverterHeRf(); } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) - { - return true; - } else if(!player.isSneaking()) - { - TileEntityConverterHeRf entity = (TileEntityConverterHeRf) world.getTileEntity(x, y, z); - if(entity != null) - { - player.addChatComponentMessage(new ChatComponentText("Note: Buffer may not accuratly represent current conversion rate, keep tact rates in mind.")); - player.addChatComponentMessage(new ChatComponentText("HE: " + (entity.buf / 4))); - player.addChatComponentMessage(new ChatComponentText("RF: " + entity.buf)); - //FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_converter_he_rf, world, x, y, z); - } - return true; - } else { - return false; - } - } - } diff --git a/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java b/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java index a44d611d1..21c75992e 100644 --- a/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java +++ b/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java @@ -1,7 +1,6 @@ package com.hbm.blocks.network; import com.hbm.blocks.IBlockMultiPass; -import com.hbm.inventory.fluid.Fluids; import com.hbm.render.block.RenderBlockMultipass; import com.hbm.tileentity.conductor.TileEntityFluidDuctSimple; @@ -10,7 +9,6 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.init.Blocks; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; @@ -66,9 +64,4 @@ public class BlockFluidDuctSolid extends BlockContainer implements IBlockMultiPa return 0xffffff; } - - @Override - public int getColorFromPass(IBlockAccess world, int x, int y, int z, boolean inv) { - return 0; - } } diff --git a/src/main/java/com/hbm/handler/GUIHandler.java b/src/main/java/com/hbm/handler/GUIHandler.java index ecd3b0313..48ce196a2 100644 --- a/src/main/java/com/hbm/handler/GUIHandler.java +++ b/src/main/java/com/hbm/handler/GUIHandler.java @@ -210,13 +210,6 @@ public class GUIHandler implements IGuiHandler { return null; } - case ModBlocks.guiID_converter_he_rf: { - if(entity instanceof TileEntityConverterHeRf) { - return new ContainerConverterHeRf(player.inventory, (TileEntityConverterHeRf) entity); - } - return null; - } - case ModBlocks.guiID_schrabidium_transmutator: { if(entity instanceof TileEntityMachineSchrabidiumTransmutator) { return new ContainerMachineSchrabidiumTransmutator(player.inventory, (TileEntityMachineSchrabidiumTransmutator) entity); @@ -1052,13 +1045,6 @@ public class GUIHandler implements IGuiHandler { return null; } - case ModBlocks.guiID_converter_he_rf: { - if(entity instanceof TileEntityConverterHeRf) { - return new GUIConverterHeRf(player.inventory, (TileEntityConverterHeRf) entity); - } - return null; - } - case ModBlocks.guiID_schrabidium_transmutator: { if(entity instanceof TileEntityMachineSchrabidiumTransmutator) { return new GUIMachineSchrabidiumTransmutator(player.inventory, (TileEntityMachineSchrabidiumTransmutator) entity); diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index 4cff501ed..13b0d6672 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -2,6 +2,7 @@ package com.hbm.hazard; import static com.hbm.blocks.ModBlocks.*; import static com.hbm.items.ModItems.*; +import static com.hbm.inventory.OreDictManager.*; import com.hbm.blocks.ModBlocks; import com.hbm.hazard.modifier.*; @@ -170,7 +171,7 @@ public class HazardRegistry { HazardSystem.register(demon_core_closed, makeData(RADIATION, 100_000F)); HazardSystem.register(cell_tritium, makeData(RADIATION, 0.001F)); - HazardSystem.register(cell_sas3, new HazardData().addEntry(RADIATION, sas3).addEntry(BLINDING, 3F)); + HazardSystem.register(cell_sas3, makeData().addEntry(RADIATION, sas3).addEntry(BLINDING, 3F)); HazardSystem.register(cell_balefire, makeData(RADIATION, 50F)); HazardSystem.register(powder_balefire, makeData(RADIATION, 500F)); HazardSystem.register(egg_balefire_shard, makeData(RADIATION, bf * nugget)); @@ -178,8 +179,8 @@ public class HazardRegistry { HazardSystem.register(nuclear_waste_long, makeData(RADIATION, 5F)); HazardSystem.register(nuclear_waste_long_tiny, makeData(RADIATION, 0.5F)); - HazardSystem.register(nuclear_waste_short, new HazardData().addEntry(RADIATION, 30F).addEntry(HOT, 5F)); - HazardSystem.register(nuclear_waste_short_tiny, new HazardData().addEntry(RADIATION, 3F).addEntry(HOT, 5F)); + HazardSystem.register(nuclear_waste_short, makeData().addEntry(RADIATION, 30F).addEntry(HOT, 5F)); + HazardSystem.register(nuclear_waste_short_tiny, makeData().addEntry(RADIATION, 3F).addEntry(HOT, 5F)); HazardSystem.register(nuclear_waste_long_depleted, makeData(RADIATION, 0.5F)); HazardSystem.register(nuclear_waste_long_depleted_tiny, makeData(RADIATION, 0.05F)); HazardSystem.register(nuclear_waste_short_depleted, makeData(RADIATION, 3F)); @@ -226,7 +227,7 @@ public class HazardRegistry { HazardSystem.register(rod_zirnox_plutonium_fuel_depleted, makeData(RADIATION, 100F + 30F)); HazardSystem.register(rod_zirnox_u233_fuel_depleted, makeData(RADIATION, u233 * rod_dual * 100)); HazardSystem.register(rod_zirnox_u235_fuel_depleted, makeData(RADIATION, u235 * rod_dual * 100)); - HazardSystem.register(rod_zirnox_les_fuel_depleted, new HazardData().addEntry(RADIATION, saf * rod_dual * 100).addEntry(BLINDING, 5F)); + HazardSystem.register(rod_zirnox_les_fuel_depleted, makeData().addEntry(RADIATION, saf * rod_dual * 100).addEntry(BLINDING, 5F)); HazardSystem.register(rod_zirnox_tritium, makeData(RADIATION, 0.001F * rod_dual)); registerOtherWaste(waste_natural_uranium, u * billet * 100); @@ -262,9 +263,9 @@ public class HazardRegistry { registerOtherWaste(waste_plate_sa326, sa326 * ingot * 100); registerOtherWaste(waste_plate_ra226be, po210 * nugget * 3); - HazardSystem.register(debris_graphite, new HazardData().addEntry(RADIATION, 70F).addEntry(HOT, 5F)); + HazardSystem.register(debris_graphite, makeData().addEntry(RADIATION, 70F).addEntry(HOT, 5F)); HazardSystem.register(debris_metal, makeData(RADIATION, 5F)); - HazardSystem.register(debris_fuel, new HazardData().addEntry(RADIATION, 500F).addEntry(HOT, 5F)); + HazardSystem.register(debris_fuel, makeData().addEntry(RADIATION, 500F).addEntry(HOT, 5F)); HazardSystem.register(debris_concrete, makeData(RADIATION, 30F)); HazardSystem.register(debris_exchanger, makeData(RADIATION, 25F)); HazardSystem.register(debris_shrapnel, makeData(RADIATION, 2.5F)); @@ -298,10 +299,10 @@ public class HazardRegistry { HazardSystem.register(billet_americium_fuel, makeData(RADIATION, amf * billet)); HazardSystem.register(ingot_americium_fuel, makeData(RADIATION, amf * ingot)); - HazardSystem.register(nugget_schrabidium_fuel, new HazardData().addEntry(RADIATION, saf * nugget).addEntry(BLINDING, 5F * nugget)); - HazardSystem.register(billet_schrabidium_fuel, new HazardData().addEntry(RADIATION, saf * billet).addEntry(BLINDING, 5F * billet)); - HazardSystem.register(ingot_schrabidium_fuel, new HazardData().addEntry(RADIATION, saf * ingot).addEntry(BLINDING, 5F * ingot)); - HazardSystem.register(block_schrabidium_fuel, new HazardData().addEntry(RADIATION, saf * block).addEntry(BLINDING, 5F * block)); + HazardSystem.register(nugget_schrabidium_fuel, makeData().addEntry(RADIATION, saf * nugget).addEntry(BLINDING, 5F * nugget)); + HazardSystem.register(billet_schrabidium_fuel, makeData().addEntry(RADIATION, saf * billet).addEntry(BLINDING, 5F * billet)); + HazardSystem.register(ingot_schrabidium_fuel, makeData().addEntry(RADIATION, saf * ingot).addEntry(BLINDING, 5F * ingot)); + HazardSystem.register(block_schrabidium_fuel, makeData().addEntry(RADIATION, saf * block).addEntry(BLINDING, 5F * block)); HazardSystem.register(nugget_hes, makeData(RADIATION, saf * nugget)); HazardSystem.register(billet_hes, makeData(RADIATION, saf * billet)); @@ -312,7 +313,7 @@ public class HazardRegistry { HazardSystem.register(ingot_les, makeData(RADIATION, saf * ingot)); HazardSystem.register(billet_balefire_gold, makeData(RADIATION, au198 * billet)); - HazardSystem.register(billet_flashlead, new HazardData().addEntry(RADIATION, pb209 * 1.25F * billet).addEntry(HOT, 7F)); + HazardSystem.register(billet_flashlead, makeData().addEntry(RADIATION, pb209 * 1.25F * billet).addEntry(HOT, 7F)); HazardSystem.register(billet_po210be, makeData(RADIATION, pobe * billet)); HazardSystem.register(billet_ra226be, makeData(RADIATION, rabe * billet)); HazardSystem.register(billet_pu238be, makeData(RADIATION, pube * billet)); @@ -397,7 +398,7 @@ public class HazardRegistry { HazardSystem.register(ModItems.fallout, makeData(RADIATION, fo * powder)); HazardSystem.register(ModBlocks.fallout, makeData(RADIATION, fo * powder * 2)); HazardSystem.register(ModBlocks.block_fallout, makeData(RADIATION, yc * block * powder_mult)); - HazardSystem.register(powder_caesium, new HazardData().addEntry(HYDROACTIVE, 1F).addEntry(HOT, 3F)); + HazardSystem.register(powder_caesium, makeData().addEntry(HYDROACTIVE, 1F).addEntry(HOT, 3F)); HazardSystem.register(wire_schrabidium, makeData(RADIATION, sa326 * nugget)); @@ -430,11 +431,11 @@ public class HazardRegistry { HazardSystem.register(mike_core, makeData(RADIATION, u238 * nugget * 10)); HazardSystem.register(tsar_core, makeData(RADIATION, pu239 * nugget * 15)); - HazardSystem.register(fleija_propellant, new HazardData().addEntry(RADIATION, 15F).addEntry(EXPLOSIVE, 8F).addEntry(BLINDING, 5F)); + HazardSystem.register(fleija_propellant, makeData().addEntry(RADIATION, 15F).addEntry(EXPLOSIVE, 8F).addEntry(BLINDING, 5F)); HazardSystem.register(fleija_core, makeData(RADIATION, 10F)); HazardSystem.register(solinium_propellant, makeData(EXPLOSIVE, 10F)); - HazardSystem.register(solinium_core, new HazardData().addEntry(RADIATION, sa327 * nugget * 8).addEntry(BLINDING, 5F)); + HazardSystem.register(solinium_core, makeData().addEntry(RADIATION, sa327 * nugget * 8).addEntry(BLINDING, 5F)); HazardSystem.register(nuke_fstbmb, makeData(DIGAMMA, 0.01F)); HazardSystem.register(new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_RESTORED.ordinal()), makeData(DIGAMMA, 1F)); @@ -442,11 +443,8 @@ public class HazardRegistry { /* * Blacklist */ - HazardSystem.blacklist(new ItemStack(ore_uranium)); - HazardSystem.blacklist(new ItemStack(ore_gneiss_uranium)); - HazardSystem.blacklist(new ItemStack(ore_nether_uranium)); - HazardSystem.blacklist(new ItemStack(ore_meteor_uranium)); - HazardSystem.blacklist(new ItemStack(ore_thorium)); + HazardSystem.blacklist(TH232.ore()); + HazardSystem.blacklist(U.ore()); /* diff --git a/src/main/java/com/hbm/hazard/HazardSystem.java b/src/main/java/com/hbm/hazard/HazardSystem.java index c2452feba..05a4153ce 100644 --- a/src/main/java/com/hbm/hazard/HazardSystem.java +++ b/src/main/java/com/hbm/hazard/HazardSystem.java @@ -38,7 +38,8 @@ public class HazardSystem { /* * For items that should, for whichever reason, be completely exempt from the hazard system. */ - public static final HashSet blacklist = new HashSet(); + public static final HashSet stackBlacklist = new HashSet(); + public static final HashSet dictBlacklist = new HashSet(); /* * List of hazard transformers, called in order before and after unrolling all the HazardEntries. */ @@ -67,12 +68,29 @@ public class HazardSystem { * Prevents the stack from returning any HazardData * @param stack */ - public static void blacklist(ItemStack stack) { - blacklist.add(new ComparableStack(stack).makeSingular()); + public static void blacklist(Object o) { + + if(o instanceof ItemStack) { + stackBlacklist.add(new ComparableStack((ItemStack) o).makeSingular()); + } else if(o instanceof String) { + dictBlacklist.add((String) o); + } } public static boolean isItemBlacklisted(ItemStack stack) { - return blacklist.contains(new ComparableStack(stack).makeSingular()); + + if(stackBlacklist.contains(new ComparableStack(stack).makeSingular())) + return true; + + int[] ids = OreDictionary.getOreIDs(stack); + for(int id : ids) { + String name = OreDictionary.getOreName(id); + + if(dictBlacklist.contains(name)) + return true; + } + + return false; } /** diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 749ca17c2..dfeac13db 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -8,7 +8,6 @@ import static com.hbm.items.ModItems.*; import static com.hbm.blocks.ModBlocks.*; import static com.hbm.inventory.OreDictManager.DictFrame.*; -import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.hazard.HazardData; import com.hbm.hazard.HazardEntry; @@ -16,7 +15,6 @@ import com.hbm.hazard.HazardRegistry; import com.hbm.hazard.HazardSystem; import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ItemEnums.EnumTarType; -import com.hbm.items.ModItems; import net.minecraft.block.Block; import net.minecraft.init.Items; diff --git a/src/main/java/com/hbm/inventory/container/ContainerConverterHeRf.java b/src/main/java/com/hbm/inventory/container/ContainerConverterHeRf.java deleted file mode 100644 index 6bd525daa..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerConverterHeRf.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.tileentity.machine.TileEntityConverterHeRf; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; -import net.minecraft.item.ItemStack; - -public class ContainerConverterHeRf extends Container { - - private TileEntityConverterHeRf diFurnace; - - private int water; - private int flux; - - public ContainerConverterHeRf(InventoryPlayer invPlayer, TileEntityConverterHeRf tedf) { - - diFurnace = tedf; - } - - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - crafting.sendProgressBarUpdate(this, 1, this.diFurnace.storage.getEnergyStored()); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int p_82846_2_) - { - return null; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return true; - } - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for(int i = 0; i < this.crafters.size(); i++) - { - ICrafting par1 = (ICrafting)this.crafters.get(i); - - if(this.flux != this.diFurnace.storage.getEnergyStored()) - { - par1.sendProgressBarUpdate(this, 1, this.diFurnace.storage.getEnergyStored()); - } - } - - this.flux = this.diFurnace.storage.getEnergyStored(); - } - - @Override - public void updateProgressBar(int i, int j) { - if(i == 1) - { - diFurnace.storage.setEnergyStored(j); - } - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIConverterHeRf.java b/src/main/java/com/hbm/inventory/gui/GUIConverterHeRf.java deleted file mode 100644 index cd68c4c83..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIConverterHeRf.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerConverterHeRf; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityConverterHeRf; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUIConverterHeRf extends GuiContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_he_rf_converter.png"); - private TileEntityConverterHeRf diFurnace; - - public GUIConverterHeRf(InventoryPlayer invPlayer, TileEntityConverterHeRf tedf) { - super(new ContainerConverterHeRf(invPlayer, tedf)); - diFurnace = tedf; - - this.xSize = 176; - this.ySize = 86; - } - - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - if(diFurnace.power > 0) { - int i = (int)diFurnace.getPowerScaled(52); - drawTexturedModalRect(guiLeft + 28, guiTop + 69 - i, 176, 52 - i, 12, i); - } - - if(diFurnace.storage.getEnergyStored() > 0) { - int i = (int)diFurnace.getFluxScaled(52); - drawTexturedModalRect(guiLeft + 136, guiTop + 69 - i, 188, 52 - i, 12, i); - } - } -} diff --git a/src/main/java/com/hbm/items/special/ItemHolotapeImage.java b/src/main/java/com/hbm/items/special/ItemHolotapeImage.java index b5bff40b2..44b0e1718 100644 --- a/src/main/java/com/hbm/items/special/ItemHolotapeImage.java +++ b/src/main/java/com/hbm/items/special/ItemHolotapeImage.java @@ -46,7 +46,7 @@ public class ItemHolotapeImage extends ItemHoloTape { HOLO_NV_CRATER( EnumChatFormatting.GOLD, "Brown", "031-MOUNTAIN", "The tape contains an audio track that is mostly gabled sound and garbage noise. There is an image file on it, depicting a large dome in blue light surrounded by many smaller buildings. In the distance, there is a smaller dome with red lights."), HOLO_NV_DIVIDE( EnumChatFormatting.GOLD, "Brown", "032-ROAD", "The tape contains an audio track that is mostly gabled sound and garbage noise. There is an image file on it, depicting a large chasm with broken highways and destroyed buildings littering the landscape."), HOLO_NV_BM( EnumChatFormatting.GOLD, "Brown", "033-BROADCAST", "The tape contains an audio track that is mostly gabled sound and garbage noise. There is an image file on it, depicting a satellite broadcasting station on top of a hill. In the distance, there is a very large person walking hand in hand with a robot into the sunset."), - HOLO_O_1( EnumChatFormatting.WHITE, "Chroma", "X00-TRANSCRIPT", "[Start of Automated Audio Transcript] in a boardroom, right, and they're trying to come up with some new ideas. So one guy just says they should reuse this other characteer from somewhere else, who has like this night-theme you know, and just change the entire schtick to day. So when they had to come up with a name, one guy said, why not take the original name, replace the N with a D, because of night to day, right, and run with it? Now the name sounds like 'Dicks'! Funniest thing I've ever heard! [End of Transcript]"), + HOLO_O_1( EnumChatFormatting.WHITE, "Chroma", "X00-TRANSCRIPT", "[Start of Automated Audio Transcript] in a boardroom, right, and they're trying to come up with some new ideas. So one guy just says they should reuse this other character from somewhere else, who has like this night-theme you know, and just change the entire schtick to day. So when they had to come up with a name, one guy said, why not take the original name, replace the N with a D, because of night to day, right, and run with it? Now the name sounds like 'Dicks'! Funniest thing I've ever heard! [End of Transcript]"), HOLO_O_2( EnumChatFormatting.WHITE, "Chroma", "X01-NEWS", "The tape contains a news article, reporting an unusually pale person throwing flashbangs at people in public. The image at the bottom shows one of the incidents, unsurprisingly the light from one of the flashbangs made it unrecognizable."), HOLO_O_3( EnumChatFormatting.WHITE, "Chroma", "X02-FICTION", "The tape contains an article from a science fiction magazine, engaging with various reader comments about what to do with a time machine. One of those comments suggests engaging in various unsanitary acts with the future self, being signed off with just the initial '~D'."), ; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityConverterHeRf.java b/src/main/java/com/hbm/tileentity/machine/TileEntityConverterHeRf.java index 12699e113..db3edcfa9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityConverterHeRf.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityConverterHeRf.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import com.hbm.calc.Location; import com.hbm.tileentity.TileEntityMachineBase; +import api.hbm.energy.IEnergyConnector; import api.hbm.energy.IEnergyUser; import cofh.api.energy.EnergyStorage; import cofh.api.energy.IEnergyHandler; @@ -11,72 +12,19 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityConverterHeRf extends TileEntityMachineBase implements IEnergyUser, IEnergyHandler { +public class TileEntityConverterHeRf extends TileEntity implements IEnergyConnector, IEnergyHandler { - public TileEntityConverterHeRf() { - super(0); - } - - @Override - public String getName() { - return ""; - } - - public long power; - public long maxPower = 500000000; - public EnergyStorage storage = new EnergyStorage(2000000000, 2000000000, 2000000000); - - public int buf; - - //Thanks to the great people of Fusion Warfare for helping me with this part. + //Thanks to the great people of Fusion Warfare for helping me with the original implementation of the RF energy API @Override public void updateEntity() { + if (!worldObj.isRemote) { - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); - - storage.setCapacity((int)power * 4); - storage.setEnergyStored((int)power * 4); - - buf = storage.getEnergyStored(); - - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - - Location loc = new Location(worldObj, xCoord, yCoord, zCoord).add(dir); - TileEntity entity = loc.getTileEntity(); - - if (entity != null && entity instanceof IEnergyReceiver) { - - IEnergyReceiver receiver = (IEnergyReceiver) entity; - - int maxExtract = storage.getMaxExtract(); - int maxAvailable = storage.extractEnergy(maxExtract, true); - int energyTransferred = receiver.receiveEnergy(dir.getOpposite(), maxAvailable, false); - - storage.extractEnergy(energyTransferred, false); - } - } - - power = storage.getEnergyStored() / 4; - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("rf", storage.getEnergyStored()); - data.setInteger("maxrf", storage.getEnergyStored()); - data.setLong("he", power); - data.setLong("maxhe", power); - this.networkPack(data, 25); } } - public void networkUnpack(NBTTagCompound nbt) { - storage.setEnergyStored(nbt.getInteger("rf")); - storage.setCapacity(nbt.getInteger("maxrf")); - power = nbt.getLong("he"); - maxPower = nbt.getLong("maxhe"); - } - @Override public boolean canConnectEnergy(ForgeDirection from) { return true; @@ -84,64 +32,56 @@ public class TileEntityConverterHeRf extends TileEntityMachineBase implements IE @Override public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) { - return storage.extractEnergy(maxExtract, simulate); + return 0; } @Override public int getEnergyStored(ForgeDirection from) { - return storage.getEnergyStored(); + return 0; } @Override public int getMaxEnergyStored(ForgeDirection from) { - return storage.getMaxEnergyStored(); - } - - @Override - public void setPower(long i) { - power = i; + return 0; } @Override public long getPower() { - return power; + return 0; } @Override public long getMaxPower() { - - if(power < 1000000) - return 500000000;//Long.MAX_VALUE / 100; - - return maxPower; - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } - - public long getFluxScaled(long i) { - return (storage.getEnergyStored() * i) / storage.getMaxEnergyStored(); - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - - this.power = nbt.getLong("power"); - storage.readFromNBT(nbt); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - - nbt.setLong("power", power); - storage.writeToNBT(nbt); + return Integer.MAX_VALUE / 4; } @Override public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) { return 0; } + + @Override + public long transferPower(long power) { + + // we have to limit the transfer amount because otherwise FEnSUs would overflow the RF output, twice + long out = Math.min(power, Long.MAX_VALUE / 4); + int toRF = (int) Math.min(Integer.MAX_VALUE, out * 4); + int energyTransferred = 0; + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + Location loc = new Location(worldObj, xCoord, yCoord, zCoord).add(dir); + TileEntity entity = loc.getTileEntity(); + + if(entity != null && entity instanceof IEnergyReceiver) { + + IEnergyReceiver receiver = (IEnergyReceiver) entity; + energyTransferred = receiver.receiveEnergy(dir.getOpposite(), toRF, false); + + toRF -= energyTransferred; //to prevent energy duping + } + } + + return power - (energyTransferred / 4); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityConverterRfHe.java b/src/main/java/com/hbm/tileentity/machine/TileEntityConverterRfHe.java index 113b0ffdb..50f21b7e7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityConverterRfHe.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityConverterRfHe.java @@ -1,16 +1,9 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.interfaces.Untested; -import com.hbm.lib.Library; -import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyGenerator; -import cofh.api.energy.EnergyStorage; import cofh.api.energy.IEnergyHandler; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; From 474a729a47fe7f25253ae3e60c48af3d33b4fbea Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 30 Jan 2022 00:20:59 +0100 Subject: [PATCH 4/4] liquefactor machine --- .../java/api/hbm/energy/IEnergyConnector.java | 1 - src/main/java/com/hbm/blocks/ModBlocks.java | 8 +- .../hbm/blocks/machine/MachineDeaerator.java | 14 ++ .../blocks/machine/MachineLiquefactor.java | 98 +++++++++ src/main/java/com/hbm/handler/GUIHandler.java | 10 + .../hbm/handler/nei/LiquefactionHandler.java | 11 + .../hbm/handler/nei/NEIUniversalHandler.java | 1 + .../java/com/hbm/inventory/FluidStack.java | 1 - .../java/com/hbm/inventory/FluidTank.java | 5 + .../java/com/hbm/inventory/SlotUpgrade.java | 13 +- .../hbm/inventory/container/ContainerFEL.java | 21 +- .../container/ContainerLiquefactor.java | 69 +++++++ .../inventory/container/ContainerSILEX.java | 26 ++- .../com/hbm/inventory/gui/GUILiquefactor.java | 63 ++++++ .../recipes/LiquefactionRecipes.java | 75 +++++++ .../java/com/hbm/main/CraftingManager.java | 2 +- src/main/java/com/hbm/main/MainRegistry.java | 1 + src/main/java/com/hbm/main/NEIConfig.java | 2 + .../hbm/tileentity/TileEntityMachineBase.java | 2 +- .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityMachineLiquefactor.java | 192 ++++++++++++++++++ src/main/resources/assets/hbm/lang/de_DE.lang | 23 +++ src/main/resources/assets/hbm/lang/en_US.lang | 23 +++ .../textures/blocks/block_steel_machine.png | Bin 0 -> 530 bytes .../gui/processing/gui_liquefactor.png | Bin 0 -> 2874 bytes 25 files changed, 627 insertions(+), 35 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java create mode 100644 src/main/java/com/hbm/handler/nei/LiquefactionHandler.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerLiquefactor.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUILiquefactor.java create mode 100644 src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineLiquefactor.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_steel_machine.png create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_liquefactor.png diff --git a/src/main/java/api/hbm/energy/IEnergyConnector.java b/src/main/java/api/hbm/energy/IEnergyConnector.java index 6de484448..2ce5c3ebd 100644 --- a/src/main/java/api/hbm/energy/IEnergyConnector.java +++ b/src/main/java/api/hbm/energy/IEnergyConnector.java @@ -1,6 +1,5 @@ package api.hbm.energy; -import com.hbm.blocks.ModBlocks; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index ab749749e..509b7f516 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -902,6 +902,9 @@ public class ModBlocks { public static Block machine_deuterium_extractor; public static Block machine_deuterium_tower; + public static Block machine_liquefactor; + public static Block machine_solidifier; + public static Block machine_chungus; public static Block machine_condenser; public static Block machine_tower_small; @@ -2059,6 +2062,8 @@ public class ModBlocks { machine_deuterium_extractor = new MachineDeuteriumExtractor(Material.iron).setBlockName("machine_deuterium_extractor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_deuterium_extractor_side"); machine_deuterium_tower = new DeuteriumTower(Material.iron).setBlockName("machine_deuterium_tower").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete"); + machine_liquefactor = new MachineLiquefactor().setBlockName("machine_liquefactor").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); + anvil_iron = new NTMAnvil(Material.iron, 1).setBlockName("anvil_iron").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_iron"); anvil_lead = new NTMAnvil(Material.iron, 1).setBlockName("anvil_lead").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_lead"); anvil_steel = new NTMAnvil(Material.iron, 2).setBlockName("anvil_steel").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_steel"); @@ -2071,7 +2076,7 @@ public class ModBlocks { anvil_osmiridium = new NTMAnvil(Material.iron, 8).setBlockName("anvil_osmiridium").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_osmiridium"); anvil_murky = new NTMAnvil(Material.iron, 1916169).setBlockName("anvil_murky").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_steel"); - machine_deaerator = new MachineDeaerator(Material.iron).setBlockName("machine_deaerator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_deaerator"); + machine_deaerator = new MachineDeaerator(Material.iron).setBlockName("machine_deaerator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); machine_waste_drum = new WasteDrum(Material.iron).setBlockName("machine_waste_drum").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":waste_drum"); machine_storage_drum = new StorageDrum(Material.iron, guiID_storage_drum).setBlockName("machine_storage_drum").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_storage_drum"); @@ -2937,6 +2942,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_tower_large, machine_tower_large.getUnlocalizedName()); GameRegistry.registerBlock(machine_deuterium_extractor, machine_deuterium_extractor.getUnlocalizedName()); GameRegistry.registerBlock(machine_deuterium_tower, machine_deuterium_tower.getUnlocalizedName()); + GameRegistry.registerBlock(machine_liquefactor, ItemBlockBase.class, machine_liquefactor.getUnlocalizedName()); GameRegistry.registerBlock(machine_deaerator, machine_deaerator.getUnlocalizedName()); GameRegistry.registerBlock(machine_waste_drum, machine_waste_drum.getUnlocalizedName()); GameRegistry.registerBlock(machine_storage_drum, machine_storage_drum.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineDeaerator.java b/src/main/java/com/hbm/blocks/machine/MachineDeaerator.java index 7eb08e2fb..e16e85817 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineDeaerator.java +++ b/src/main/java/com/hbm/blocks/machine/MachineDeaerator.java @@ -25,7 +25,21 @@ public class MachineDeaerator extends BlockDummyable { @Override public int getOffset() { + return 4; + } + + @Override + public int getRenderType() { return 0; } + @Override + public boolean isOpaqueCube() { + return true; + } + + @Override + public boolean renderAsNormalBlock() { + return true; + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java b/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java new file mode 100644 index 000000000..31d5c45c5 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java @@ -0,0 +1,98 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineLiquefactor; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineLiquefactor extends BlockDummyable implements ITooltipProvider { + + public MachineLiquefactor() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) + return new TileEntityMachineLiquefactor(); + + if(meta >= extra) + return new TileEntityProxyCombo(true, true, true); + + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {2, 0, 1, 1, 1, 1}; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); + return true; + } else { + return true; + } + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + x = x + dir.offsetX * o; + z = z + dir.offsetZ * o; + + this.makeExtra(world, x, y + 2, z); + + this.makeExtra(world, x + 1, y + 1, z); + this.makeExtra(world, x - 1, y + 1, z); + this.makeExtra(world, x, y + 1, z + 1); + this.makeExtra(world, x, y + 1, z - 1); + } + + @Override + public int getRenderType() { + return 0; + } + + @Override + public boolean isOpaqueCube() { + return true; + } + + @Override + public boolean renderAsNormalBlock() { + return true; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + //list.add(EnumChatFormatting.YELLOW + ""); + } +} diff --git a/src/main/java/com/hbm/handler/GUIHandler.java b/src/main/java/com/hbm/handler/GUIHandler.java index 48ce196a2..2bef5fcda 100644 --- a/src/main/java/com/hbm/handler/GUIHandler.java +++ b/src/main/java/com/hbm/handler/GUIHandler.java @@ -27,6 +27,11 @@ public class GUIHandler implements IGuiHandler { @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity entity = world.getTileEntity(x, y, z); + + if(entity instanceof TileEntityMachineLiquefactor) { + return new ContainerLiquefactor(player.inventory, (TileEntityMachineLiquefactor) entity); + } + switch(ID) { case ModBlocks.guiID_test_difurnace: { if(entity instanceof TileEntityDiFurnace) { @@ -862,6 +867,11 @@ public class GUIHandler implements IGuiHandler { @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity entity = world.getTileEntity(x, y, z); + + if(entity instanceof TileEntityMachineLiquefactor) { + return new GUILiquefactor(player.inventory, (TileEntityMachineLiquefactor) entity); + } + switch(ID) { case ModBlocks.guiID_test_difurnace: { if(entity instanceof TileEntityDiFurnace) { diff --git a/src/main/java/com/hbm/handler/nei/LiquefactionHandler.java b/src/main/java/com/hbm/handler/nei/LiquefactionHandler.java new file mode 100644 index 000000000..076bdcf11 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/LiquefactionHandler.java @@ -0,0 +1,11 @@ +package com.hbm.handler.nei; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.recipes.LiquefactionRecipes; + +public class LiquefactionHandler extends NEIUniversalHandler { + + public LiquefactionHandler() { + super("ntmLiquefaction", "Liquefaction", ModBlocks.machine_liquefactor, LiquefactionRecipes.getRecipes()); + } +} diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 72746c81c..3dab3b0e4 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Map.Entry; import com.hbm.lib.RefStrings; diff --git a/src/main/java/com/hbm/inventory/FluidStack.java b/src/main/java/com/hbm/inventory/FluidStack.java index f6dc75723..7edcd5b44 100644 --- a/src/main/java/com/hbm/inventory/FluidStack.java +++ b/src/main/java/com/hbm/inventory/FluidStack.java @@ -11,5 +11,4 @@ public class FluidStack { this.fill = fill; this.type = type; } - } diff --git a/src/main/java/com/hbm/inventory/FluidTank.java b/src/main/java/com/hbm/inventory/FluidTank.java index 101e33e8a..aec4fec34 100644 --- a/src/main/java/com/hbm/inventory/FluidTank.java +++ b/src/main/java/com/hbm/inventory/FluidTank.java @@ -21,6 +21,7 @@ import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; @@ -78,6 +79,10 @@ public class FluidTank { } //Called on TE update + public void updateTank(TileEntity te) { + updateTank(te.xCoord, te.yCoord, te.zCoord, te.getWorldObj().provider.dimensionId); + } + public void updateTank(int x, int y, int z, int dim) { PacketDispatcher.wrapper.sendToAllAround(new TEFluidPacket(x, y, z, fluid, index, type), new TargetPoint(dim, x, y, z, 100)); } diff --git a/src/main/java/com/hbm/inventory/SlotUpgrade.java b/src/main/java/com/hbm/inventory/SlotUpgrade.java index a51333393..a948d41be 100644 --- a/src/main/java/com/hbm/inventory/SlotUpgrade.java +++ b/src/main/java/com/hbm/inventory/SlotUpgrade.java @@ -11,15 +11,14 @@ public class SlotUpgrade extends Slot { public SlotUpgrade(IInventory inventory, int i, int j, int k) { super(inventory, i, j, k); } - + @Override public boolean isItemValid(ItemStack stack) { - return stack != null && stack.getItem() instanceof ItemMachineUpgrade; - } - + return stack != null && stack.getItem() instanceof ItemMachineUpgrade; + } + @Override - public void onSlotChange(ItemStack sta1, ItemStack sta2) { - + public void onSlotChange(ItemStack sta1, ItemStack sta2) { super.onSlotChange(sta1, sta2); - } + } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerFEL.java b/src/main/java/com/hbm/inventory/container/ContainerFEL.java index 70dcd5844..4320feb46 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerFEL.java +++ b/src/main/java/com/hbm/inventory/container/ContainerFEL.java @@ -10,22 +10,25 @@ import net.minecraft.item.ItemStack; public class ContainerFEL extends Container { - private TileEntityFEL microwave; + private TileEntityFEL fel; public ContainerFEL(InventoryPlayer invPlayer, TileEntityFEL tedf) { - microwave = tedf; + fel = tedf; - this.addSlotToContainer(new Slot(tedf, 0, 26, 53)); + //battery + this.addSlotToContainer(new Slot(tedf, 0, 182, 144)); + //laser crystal + this.addSlotToContainer(new Slot(tedf, 1, 141, 23)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 83 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 141)); } } @@ -39,11 +42,11 @@ public class ContainerFEL extends Container { var3 = var5.copy(); if(par2 == 0) { - if(!this.mergeItemStack(var5, 1, this.inventorySlots.size(), true)) { + if(!this.mergeItemStack(var5, 1, this.inventorySlots.size(), false)) { return null; } } else { - if(!this.mergeItemStack(var5, 0, 1, true)) + if(!this.mergeItemStack(var5, 0, 1, false)) return null; } @@ -59,6 +62,6 @@ public class ContainerFEL extends Container { @Override public boolean canInteractWith(EntityPlayer player) { - return microwave.isUseableByPlayer(player); + return fel.isUseableByPlayer(player); } -} +} \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/container/ContainerLiquefactor.java b/src/main/java/com/hbm/inventory/container/ContainerLiquefactor.java new file mode 100644 index 000000000..6d89c0592 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerLiquefactor.java @@ -0,0 +1,69 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotUpgrade; +import com.hbm.tileentity.machine.TileEntityMachineLiquefactor; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerLiquefactor extends Container { + + private TileEntityMachineLiquefactor liquefactor; + + public ContainerLiquefactor(InventoryPlayer playerInv, TileEntityMachineLiquefactor tile) { + liquefactor = tile; + + //Input + this.addSlotToContainer(new Slot(tile, 0, 35, 54)); + //Battery + this.addSlotToContainer(new Slot(tile, 1, 134, 72)); + //Upgrades + this.addSlotToContainer(new SlotUpgrade(tile, 2, 98, 36)); + this.addSlotToContainer(new SlotUpgrade(tile, 3, 98, 54)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 180)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return liquefactor.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(index); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(index <= 2) { + if(!this.mergeItemStack(var5, 4, this.inventorySlots.size(), true)) { + return null; + } + } else if(!this.mergeItemStack(var5, 0, 3, false)) { + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerSILEX.java b/src/main/java/com/hbm/inventory/container/ContainerSILEX.java index c632230e1..dc8369d82 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerSILEX.java +++ b/src/main/java/com/hbm/inventory/container/ContainerSILEX.java @@ -1,6 +1,5 @@ package com.hbm.inventory.container; -import com.hbm.inventory.SlotMachineOutput; import com.hbm.items.ModItems; import com.hbm.tileentity.machine.TileEntitySILEX; @@ -16,23 +15,23 @@ public class ContainerSILEX extends Container { public ContainerSILEX(InventoryPlayer invPlayer, TileEntitySILEX te) { silex = te; - + //Input - this.addSlotToContainer(new Slot(te, 0, 116, 36)); + this.addSlotToContainer(new Slot(te, 0, 80, 12)); //Fluid ID - this.addSlotToContainer(new Slot(te, 1, 44, 36)); + this.addSlotToContainer(new Slot(te, 1, 8, 24)); //Fluid Container - this.addSlotToContainer(new Slot(te, 2, 62, 36)); - this.addSlotToContainer(new Slot(te, 3, 80, 36)); + this.addSlotToContainer(new Slot(te, 2, 8 + 18, 24)); + this.addSlotToContainer(new Slot(te, 3, 8 + 18*2, 24)); //Output this.addSlotToContainer(new Slot(te, 4, 116, 90)); //Output Queue - this.addSlotToContainer(new SlotMachineOutput(te, 5, 134, 72)); - this.addSlotToContainer(new SlotMachineOutput(te, 6, 152, 72)); - this.addSlotToContainer(new SlotMachineOutput(te, 7, 134, 90)); - this.addSlotToContainer(new SlotMachineOutput(te, 8, 152, 90)); - this.addSlotToContainer(new SlotMachineOutput(te, 9, 134, 108)); - this.addSlotToContainer(new SlotMachineOutput(te, 10, 152, 108)); + this.addSlotToContainer(new Slot(te, 5, 134, 72)); + this.addSlotToContainer(new Slot(te, 6, 152, 72)); + this.addSlotToContainer(new Slot(te, 7, 134, 90)); + this.addSlotToContainer(new Slot(te, 8, 152, 90)); + this.addSlotToContainer(new Slot(te, 9, 134, 108)); + this.addSlotToContainer(new Slot(te, 10, 152, 108)); for(int i = 0; i < 3; i++) { @@ -56,7 +55,6 @@ public class ContainerSILEX extends Container { if(var4 != null && var4.getHasStack()) { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - SlotMachineOutput.checkAchievements(p_82846_1_, var5); if(par2 <= silex.getSizeInventory() - 1) { if(!this.mergeItemStack(var5, silex.getSizeInventory(), this.inventorySlots.size(), true)) { @@ -87,4 +85,4 @@ public class ContainerSILEX extends Container { public boolean canInteractWith(EntityPlayer player) { return silex.isUseableByPlayer(player); } -} +} \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/gui/GUILiquefactor.java b/src/main/java/com/hbm/inventory/gui/GUILiquefactor.java new file mode 100644 index 000000000..8cd892ef0 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUILiquefactor.java @@ -0,0 +1,63 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.container.ContainerLiquefactor; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineLiquefactor; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUILiquefactor extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_liquefactor.png"); + private TileEntityMachineLiquefactor liquefactor; + + public GUILiquefactor(InventoryPlayer invPlayer, TileEntityMachineLiquefactor tedf) { + super(new ContainerLiquefactor(invPlayer, tedf)); + liquefactor = tedf; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + liquefactor.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 71, guiTop + 36, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 18, 16, 52, liquefactor.power, liquefactor.maxPower); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + + String name = this.liquefactor.hasCustomInventoryName() ? this.liquefactor.getInventoryName() : I18n.format(this.liquefactor.getInventoryName()); + + this.fontRendererObj.drawString(name, 70 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xC7C1A3); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int i = (int)(liquefactor.getPower() * 52 / liquefactor.getMaxPower()); + drawTexturedModalRect(guiLeft + 134, guiTop + 70 - i, 176, 52 - i, 16, i); + + int j = liquefactor.progress * 42 / liquefactor.processTime; + drawTexturedModalRect(guiLeft + 42, guiTop + 17, 192, 0, j, 35); + + if(i > 0) + drawTexturedModalRect(guiLeft + 138, guiTop + 4, 176, 52, 9, 12); + + Minecraft.getMinecraft().getTextureManager().bindTexture(liquefactor.tank.getSheet()); + liquefactor.tank.renderTank(this, guiLeft + 71, guiTop + 88, liquefactor.tank.getTankType().textureX() * FluidTank.x, liquefactor.tank.getTankType().textureY() * FluidTank.y, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java new file mode 100644 index 000000000..e18b3c374 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java @@ -0,0 +1,75 @@ +package com.hbm.inventory.recipes; + +import static com.hbm.inventory.OreDictManager.*; + +import java.util.HashMap; +import java.util.Map.Entry; + +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.machine.ItemFluidIcon; + +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class LiquefactionRecipes { + + private static HashMap recipes = new HashMap(); + + public static void register() { + + recipes.put(COAL.gem(), new FluidStack(100, Fluids.OIL)); + recipes.put(COAL.dust(), new FluidStack(100, Fluids.OIL)); + recipes.put(ANY_TAR.any(), new FluidStack(100, Fluids.BITUMEN)); + recipes.put(new ComparableStack(Blocks.netherrack), new FluidStack(250, Fluids.LAVA)); + recipes.put(new ComparableStack(Blocks.cobblestone), new FluidStack(250, Fluids.LAVA)); + recipes.put(new ComparableStack(Blocks.stone), new FluidStack(250, Fluids.LAVA)); + recipes.put(new ComparableStack(Blocks.obsidian), new FluidStack(500, Fluids.LAVA)); + recipes.put(new ComparableStack(Items.snowball), new FluidStack(125, Fluids.WATER)); + recipes.put(new ComparableStack(Blocks.snow), new FluidStack(500, Fluids.WATER)); + recipes.put(new ComparableStack(Blocks.ice), new FluidStack(1000, Fluids.WATER)); + recipes.put(new ComparableStack(Blocks.packed_ice), new FluidStack(1000, Fluids.WATER)); + } + + public static FluidStack getOutput(ItemStack stack) { + + if(stack == null || stack.getItem() == null) + return null; + + ComparableStack comp = new ComparableStack(stack.getItem(), 1, stack.getItemDamage()); + + if(recipes.containsKey(comp)) + return recipes.get(comp); + + String[] dictKeys = comp.getDictKeys(); + + for(String key : dictKeys) { + + if(recipes.containsKey(key)) + return recipes.get(key); + } + + return null; + } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(Entry entry : LiquefactionRecipes.recipes.entrySet()) { + + FluidStack out = entry.getValue(); + + if(entry.getKey() instanceof String) { + recipes.put(new OreDictStack((String)entry.getKey()), ItemFluidIcon.make(out.type, out.fill)); + } else { + recipes.put(((ComparableStack)entry.getKey()).toStack(), ItemFluidIcon.make(out.type, out.fill)); + } + } + + return recipes; + } +} diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index c31138c25..436664c12 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -315,7 +315,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.blades_combine_steel, 1), new Object[] { "PIP", 'P', CMB.plate(), 'I', new ItemStack(ModItems.blades_combine_steel, 1, OreDictionary.WILDCARD_VALUE) }); addRecipeAuto(new ItemStack(ModItems.blades_schrabidium, 1), new Object[] { "PIP", 'P', SA326.plate(), 'I', new ItemStack(ModItems.blades_schrabidium, 1, OreDictionary.WILDCARD_VALUE) }); - addRecipeAuto(new ItemStack(ModItems.laser_crystal_co2, 1), new Object[] { "QDQ", "NCN", "QDQ", 'Q', ModBlocks.glass_quartz, 'D', DESH.ingot(), 'N', ND.ingot(), 'C', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.CARBONDIOXIDE.getID()) }); + addRecipeAuto(new ItemStack(ModItems.laser_crystal_co2, 1), new Object[] { "QDQ", "NCN", "QDQ", 'Q', ModBlocks.glass_quartz, 'D', DESH.ingot(), 'N', NB.ingot(), 'C', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.CARBONDIOXIDE.getID()) }); addRecipeAuto(new ItemStack(ModItems.laser_crystal_bismuth, 1), new Object[] {"QUQ", "BCB", "QTQ", 'Q', ModBlocks.glass_quartz, 'U', U.ingot(), 'T', TH232.ingot(), 'B', ModItems.nugget_bismuth, 'C', ModItems.crystal_rare }); addRecipeAuto(new ItemStack(ModItems.laser_crystal_cmb, 1), new Object[] {"QBQ", "CSC", "QBQ", 'Q', ModBlocks.glass_quartz, 'B', CMB.ingot(), 'C', SBD.ingot(), 'S', ModItems.cell_anti_schrabidium }); addRecipeAuto(new ItemStack(ModItems.laser_crystal_dnt, 1), new Object[] {"QDQ", "SBS", "QDQ", 'Q', ModBlocks.glass_quartz, 'D', DNT.ingot(), 'B', ModItems.egg_balefire, 'S', ModItems.powder_spark_mix }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index f411e42e4..2c102212b 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -949,6 +949,7 @@ public class MainRegistry { PressRecipes.register(); RefineryRecipes.registerFractions(); RefineryRecipes.registerCracking(); + LiquefactionRecipes.register(); FuelPoolRecipes.register(); TileEntityNukeCustom.registerBombItems(); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 414bad7db..1544b462d 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -65,6 +65,8 @@ public class NEIConfig implements IConfigureNEI { API.registerRecipeHandler(new RTGRecipeHandler()); API.registerUsageHandler(new RTGRecipeHandler()); } + API.registerRecipeHandler(new LiquefactionHandler()); + API.registerUsageHandler(new LiquefactionHandler()); //Some things are even beyond my control...or are they? API.hideItem(ItemBattery.getEmptyBattery(ModItems.memory)); diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index c48516dc4..c9542a9dc 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -143,7 +143,7 @@ public abstract class TileEntityMachineBase extends TileEntity implements ISided //was it update? onUpdate? updateTile? did it have any args? //shit i don't know man @Override - public abstract void updateEntity(); + public abstract void updateEntity(); @Deprecated public void updateGauge(int val, int id, int range) { diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index bc380a589..234430f28 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -238,6 +238,7 @@ public class TileMappings { put(TileEntityTowerLarge.class, "tileentity_cooling_tower_large"); put(TileEntityDeuteriumExtractor.class, "tileentity_deuterium_extractor"); put(TileEntityDeuteriumTower.class, "tileentity_deuterium_tower"); + put(TileEntityMachineLiquefactor.class, "tileentity_liquefactor"); put(TileEntityMachineOilWell.class, "tileentity_derrick"); put(TileEntityMachinePumpjack.class, "tileentity_machine_pumpjack"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLiquefactor.java new file mode 100644 index 000000000..13ebea99f --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLiquefactor.java @@ -0,0 +1,192 @@ +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.interfaces.IFluidSource; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.LiquefactionRecipes; +import com.hbm.lib.Library; +import com.hbm.tileentity.TileEntityMachineBase; + +import api.hbm.energy.IEnergyUser; +import net.minecraft.nbt.NBTTagCompound; + +public class TileEntityMachineLiquefactor extends TileEntityMachineBase implements IEnergyUser, IFluidSource { + + public long power; + public static final long maxPower = 100000; + public static final int usage = 500; + public int progress; + public static final int processTime = 200; + + public FluidTank tank; + + public TileEntityMachineLiquefactor() { + super(4); + tank = new FluidTank(Fluids.NONE, 24000, 0); + } + + @Override + public String getName() { + return "container.machineLiquefactor"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + this.power = Library.chargeTEFromItems(slots, 1, power, maxPower); + tank.updateTank(this); + + this.trySubscribe(worldObj, xCoord + 2, yCoord + 1, zCoord, Library.POS_X); + this.trySubscribe(worldObj, xCoord - 2, yCoord + 1, zCoord, Library.NEG_X); + this.trySubscribe(worldObj, xCoord, yCoord + 1, zCoord + 2, Library.POS_Z); + this.trySubscribe(worldObj, xCoord, yCoord + 1, zCoord - 2, Library.NEG_Z); + + if(this.canProcess()) + this.process(); + else + this.progress = 0; + + if(worldObj.getTotalWorldTime() % 10 == 0) { + this.fillFluidInit(tank.getTankType()); + } + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", this.power); + data.setInteger("progress", this.progress); + this.networkPack(data, 50); + } + } + + public boolean canProcess() { + + if(this.power < usage) + return false; + + if(slots[0] == null) + return false; + + FluidStack out = LiquefactionRecipes.getOutput(slots[0]); + + if(out.type != tank.getTankType() && tank.getFill() > 0) + return false; + + if(out.fill + tank.getFill() > tank.getMaxFill()) + return false; + + return true; + } + + public void process() { + + this.power -= usage; + + progress++; + + if(progress >= processTime) { + + FluidStack out = LiquefactionRecipes.getOutput(slots[0]); + tank.setTankType(out.type); + tank.setFill(tank.getFill() + out.fill); + this.decrStackSize(0, 1); + + progress = 0; + + this.markDirty(); + } + } + + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.progress = nbt.getInteger("progress"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + tank.readFromNBT(nbt, "tank"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + tank.writeToNBT(nbt, "tank"); + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public void setFillstate(int fill, int index) { + tank.setFill(fill); + } + + @Override + public void setFluidFill(int fill, FluidType type) { + if(type == tank.getTankType()) + tank.setFill(fill); + } + + @Override + public void setType(FluidType type, int index) { + tank.setTankType(type); + } + + @Override + public List getTanks() { + List tanks = new ArrayList(); + tanks.add(tank); + return tanks; + } + + @Override + public int getFluidFill(FluidType type) { + return type == tank.getTankType() ? tank.getFill() : 0; + } + + @Override + public void fillFluidInit(FluidType type) { + fillFluid(xCoord, yCoord - 1, zCoord, getTact(), type); + fillFluid(xCoord, yCoord + 3, zCoord, getTact(), type); + } + + @Override + public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { + Library.transmitFluid(x, y, z, newTact, this, worldObj, type); + } + + @Override + public boolean getTact() { + return worldObj.getTotalWorldTime() % 20 < 10; + } + + private List consumers = new ArrayList(); + + @Override + public List getFluidList(FluidType type) { + return consumers; + } + + @Override + public void clearFluidList(FluidType type) { + consumers.clear(); + } +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index defbe5bb8..c24752bcf 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -234,8 +234,10 @@ container.machineCMB=CMB-Stahl Hochofen container.machineCoal=Verbrennungsgenerator container.machineDiesel=Dieselgenerator container.machineElectricBoiler=Elektrischer Boiler +container.machineFEL=FEL container.machineITER=Kernfusionsreaktor container.machineLargeTurbine=Industrielle Dampfturbine +container.machineLiquefactor=Verflüssiger container.machineRefinery=Ölraffinerie container.machineSelenium=Hochleistungs-Sternmotor container.machineShredder=Brecher @@ -1659,6 +1661,15 @@ item.key.name=Schlüssel item.key_fake.name=Gefälschter Schlüssel item.key_kit.name=Schlüssel-Imitationskit item.key_red.name=Roter Schlüssel +item.laser_crystal_bismuth.desc=Bismuth-Samarium-Uran-Thorium-Kristallmatrix +item.laser_crystal_bismuth.name=BiSmUTh-Laserkristall +item.laser_crystal_cmb.desc=Antischrabidium in einem CMB-Schrabidat Legierungsgitter +item.laser_crystal_cmb.name=CMB-Schrabidat-Antimaterie-Laserkristall +item.laser_crystal_co2.desc=Kohlenstoffdioxid in kristallinem Desh +item.laser_crystal_co2.name=CO2-Desh-Laserkristall +item.laser_crystal_digamma.name=Digamma-Laserkristall +item.laser_crystal_dnt.desc=Dineutronium-Spark Fermion Superkristall +item.laser_crystal_dnt.name=Spark-Laserkristall item.lead_gavel.name=Bleierner Richterhammer item.lemon.name="Zitrone" item.letter.name=Eilbrief @@ -3190,6 +3201,7 @@ tile.machine_drill.name=Automatischer Minenbohrer tile.machine_electric_furnace_off.name=Elektrischer Ofen tile.machine_electric_furnace_on.name=Elektrischer Ofen tile.machine_epress.name=Hydraulische Presse +tile.machine_fel.name=FEL tile.machine_fensu.name=FEnSU tile.machine_flare.name=Abfackelturm tile.machine_fluidtank.name=Tank @@ -3590,6 +3602,17 @@ tool.ability.shredder=Auto-Brecher tool.ability.silktouch=Behutsamkeit tool.ability.smelter=Auto-Ofen +wavelengths.name.ir=Infrarot +wavelengths.name.visible=Sichtbares Licht +wavelengths.name.uv=Ultraviolett +wavelengths.name.gamma=Gamma +wavelengths.name.drx=Digamma +wavelengths.waveRange.ir=780nm-1mm +wavelengths.waveRange.visible=400nm-780nm +wavelengths.waveRange.uv=100nm-400nm +wavelengths.waveRange.gamma=<100pm +wavelengths.waveRange.drx=1916169 Plancklängen + weapon.ability.beheader=Köpfer weapon.ability.bobble=Glück des Sammlers # Should rhyme with the translation for "chainsaw" diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index ab9f20e90..f25995c9f 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -367,8 +367,10 @@ container.machineCMB=CMB Steel Furnace container.machineCoal=Combustion Generator container.machineDiesel=Diesel Generator container.machineElectricBoiler=Electric Boiler +container.machineFEL=FEL container.machineITER=Fusion Reactor container.machineLargeTurbine=Industrial Steam Turbine +container.machineLiquefactor=Liquefactor container.machineRefinery=Oil Refinery container.machineSelenium=Radial Performance Engine container.machineShredder=Shredder @@ -1851,6 +1853,15 @@ item.key_kit.name=Key Imitation Kit item.key_red.name=Red Key item.key_red.desc=Explore the other side. item.key_red.desc.P11=§4e§r +item.laser_crystal_bismuth.desc=Bismuth-Samarium-Uranium-Thorium crystal matrix +item.laser_crystal_bismuth.name=BiSmUTh Laser Crystal +item.laser_crystal_cmb.desc=Antischrabidium Suspended in a CMB-Schrabidate Alloy Lattice +item.laser_crystal_cmb.name=CMB-Schrabidate Antimatter Laser Crystal +item.laser_crystal_co2.desc=Carbon Dioxide encased in Crystalline Desh +item.laser_crystal_co2.name=CO2-Desh Laser Crystal +item.laser_crystal_digamma.name=Digamma Laser Crystal +item.laser_crystal_dnt.desc=Dineutronium-Spark Fermion Supercrystal +item.laser_crystal_dnt.name=Spark Laser Crystal item.lead_gavel.name=Leaden Gavel item.lemon.name="Lemon" item.letter.name=Express Mail @@ -3504,6 +3515,7 @@ tile.machine_drill.name=Automatic Mining Drill tile.machine_electric_furnace_off.name=Electric Furnace tile.machine_electric_furnace_on.name=Electric Furnace tile.machine_epress.name=Electric Press +tile.machine_fel.name=FEL tile.machine_fensu.name=FEnSU tile.machine_flare.name=Gas Flare tile.machine_fluidtank.name=Tank @@ -3902,6 +3914,17 @@ tool.ability.shredder=Auto-Shredder tool.ability.silktouch=Silk Touch tool.ability.smelter=Auto-Smelter +wavelengths.name.ir=Infrared +wavelengths.name.visible=Visible Light +wavelengths.name.uv=Ultraviolet +wavelengths.name.gamma=Gamma +wavelengths.name.drx=Digamma +wavelengths.waveRange.ir=780nm-1mm +wavelengths.waveRange.visible=400nm-780nm +wavelengths.waveRange.uv=100nm-400nm +wavelengths.waveRange.gamma=<100pm +wavelengths.waveRange.drx=1916169 planck lengths + weapon.ability.beheader=Decapitator weapon.ability.bobble=Luck of the Collector # Should rhyme with the translation for "chainsaw" diff --git a/src/main/resources/assets/hbm/textures/blocks/block_steel_machine.png b/src/main/resources/assets/hbm/textures/blocks/block_steel_machine.png new file mode 100644 index 0000000000000000000000000000000000000000..fdaf00bfcbd5512ca2c604a94b91d08f3d3a7f43 GIT binary patch literal 530 zcmV+t0`2{YP);@zzLah~#+JoZVlhBg~|8eosi&#;i^bhb> zO;Q_^o$nwn4aM(W7G`GOyf?$hY&O$8&k+%<@qby4ni-j*53*2N#P4 z)9IA&?{9{~A?x+}u6zKKWm%1&EK9O1!&=Mba-k>+FaHKrMMOBAPM9c)=yW<%RfVb& zh9OCk0I*yx`S|#_JJ4pci4hU9EUU?{stSN^w@bI%^&f`AA^ZKlZsB-5*0wMh41Cf# z$9B6V2m)SSUU++Z^WUn3&?1J+gW U1;_sR%>V!Z07*qoM6N<$f^_!sMgRZ+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_liquefactor.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_liquefactor.png new file mode 100644 index 0000000000000000000000000000000000000000..738d436d83c1ced828c5d8d056332363ce1f0032 GIT binary patch literal 2874 zcmb_eX;hQf7QG44ggH@c02vdiK8lDaL>Z%`0Tjf6!3vltpjebyh(I8qPY`4h6{rjm zt56vQk$I99LCYk_B$Lb#Ab>zZ$k5OBb-lOx=k=}i?w@n-S>HYToW1wA*1dD`gt@eY zq67dy+R}n_8UPryg#px7C^-4%T!I3^@2I6M3R)p3*C+ramMuv~Y-wo=L#FOZvkGsP zFSj0!tlCR2vObBqch&F3{yb;y#nVc=ivFSD{X~0mhdxSl<@A;@M1)hhh4-wl9SPlL zC!x0uzFF{HoMF*oH0s`a=R@evLT-jU-hCmvO-;FJh(f<%E_BIP+?&}&Q+64Uq4y!9-saCwBDCGxV6MTetn2)9ZpHSo=;u~)-!B!TQ33vR!l%(j%P_RLJDi< z%Iy_y<;$`_rJNi1@%{O#JWh}1O`VN_?H$qX(*R(GB}bzHvAaAj&mjiE}AGAIQJK3|;nj(~<-2i!<~>AUHC#q0B7!ei%a`Nd1+Yl*-RUZD<*&fZ0MnidKMUq(^_ zwTwOK8uie42nO=HIea6-bYZ#cHf6n!XTeAffwEbAC1N^;cxoSIt-{_Mo+svQ2KM-- zi&;!IQiojL{m!LPjv+E(eRMOk?zy1mSy^Fs=!r}nOBRF#x45C4_(-i2C@&leI@U8VUaI#nS#WH~R5kTv3RR)2uA1=t$OT$LP zdxk*X8x*u<=FBR6$-8{XGjp!A*Uf1Y(~rYr%tUhd--oasku3UNBVplFOq^qr5@RR4 zUaU2d(JTt)W{p3@Kq`wfbUz>F_aW$(EX(LPFO#cEvLs>s$~>2j#3@tvqOa45svDncA!IE0E@zWWB9 z@W;|ewh$@q1t?c@=30~L!oD@3tWbAv82l?}LPb9?kGiFg0nsmmLIV)rFJ_7iOx4Tl zC@Y9@6p*FuBL;_NCJSN z4SDCWG=hQa<-m*Z=mGNYCZL+Dz1$1Y)a6Mifd0W@jQc^w7FXS6A-$u93RhbY@Q5B7 zC)dhfb#zT7vvk<>zpi;KJ8wzU>A#aSey z4+34?r~#ihLS|pEEMP;G9c$vNogCT4b>D+JneEAne43F778NCl2j9|v5Nm!%5ZWrj z?;^%XV9%UOVdew<)vGR-5oiLu{w8`F#K~mr?thc?=wm7Ctlq@5u9_$0ce;wWPB$A1 zC!T8d1N84)w>U#~H{tMScK>lnMurkdmq4K*9`LZAAy(v8lOtf$4_;98AOMp~L& zy6m~B@yLX$*RI{j`O5nKL7{E&ix-{m`#ZR1<1A!@ZkM<1hC(r+~}A1E*V0*_upP-G3^8;wf;3)Fw~ z^{*2A3+8Hb;H z_1)W#8gDp)ghI`Y4$yIP254Kb1v4@aM`Z zt41|bb>uZ7BO|NJ8T)5ZRBr)q?Su^?=cYJOc>}96JE6tkx%2-t*#9N2_K86A=NWvJ Scz5oXf|lQ&AQc>?M*IfIs@jAA literal 0 HcmV?d00001