From 77f044ebdd13172de94646f7793cf89bcf31de0a Mon Sep 17 00:00:00 2001 From: HbmMods Date: Fri, 24 Jul 2026 15:35:59 +0200 Subject: [PATCH] emergency push --- changelog | 10 ++- src/main/java/com/hbm/blocks/ModBlocks.java | 4 +- .../blocks/generic/BlockForgottenBrick.java | 36 ++++++-- .../blocks/generic/BlockForgottenLock.java | 83 ++++++++++++++++-- .../java/com/hbm/handler/FuelHandler.java | 1 + .../inventory/recipes/anvil/AnvilRecipes.java | 12 +-- src/main/java/com/hbm/items/ModItems.java | 5 ++ .../java/com/hbm/main/CraftingManager.java | 1 - .../java/com/hbm/particle/ParticleAshes.java | 9 +- .../tileentity/RenderBatterySocket.java | 2 +- .../hbm/render/tileentity/RenderPylon.java | 1 - .../machine/pile/TileEntityPileControl.java | 17 ++++ .../machine/pile/TileEntityPileLoader.java | 30 +++++++ .../machine/pile/TileEntityPileVent.java | 13 +++ src/main/java/com/hbm/util/ShadyUtil.java | 17 +--- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../assets/hbm/manual/material/etcoal.json | 11 +++ .../playground/nullstone_demo_2_wip.png | Bin 0 -> 373 bytes 19 files changed, 213 insertions(+), 41 deletions(-) create mode 100644 src/main/resources/assets/hbm/manual/material/etcoal.json create mode 100644 src/main/resources/assets/hbm/textures/blocks/playground/nullstone_demo_2_wip.png diff --git a/changelog b/changelog index 158b030c1..da40438bd 100644 --- a/changelog +++ b/changelog @@ -25,9 +25,17 @@ * This preview is green if it can be placed and red if it can not * On some machines, this preview might not be perfect, but the check on whether it can be placed should always be accurate * This makes it easier to anticipate how much space a machine takes up, as well as lining up large parts like fusion reactor components which were notoriously hard to place down right +* Updated the small pylon model + * The small pylon now has a steel variant +* Items in the battery socket which previously didn't show up in the socket's model are now rendered +* Reduced the cost for the heavy stirling engine ## Fixed * Fixed held block being placed when not sneaking when opening the cable diode's GUI * Fixed an issue where the diesel generator's fuel capacity is the original 4,000mB instead of the intended new 16,000mB * This means that explosive barrels and universal barrels can now be loaded into the diesel generator -* Fixed RoR terminal's `set` command not working \ No newline at end of file +* Fixed RoR terminal's `set` command not working +* Fixed a longstanding issue where the transparent part of beams from tile entity models would often have incorrect render order, sometimes rendering things behind them invisible + * This also fixes the same phenomenon for other types of beams, such as those from hitscan laser and tesla weapons +* Fixed some issues regarding the new crane structure +* Fixed skeletonizer ashes floating over the floor after landing \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 9e923be5b..d143d9bd8 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1512,7 +1512,7 @@ public class ModBlocks { lightstone = new BlockLightstone(Material.rock, LightstoneType.class, true, true).setBlockName("lightstone").setCreativeTab(MainRegistry.blockTab).setHardness(2F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":lightstone"); brick_forgotten = new BlockForgottenBrick().setBlockName("brick_forgotten").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten"); - brick_forgotten_lock = new BlockForgottenLock(Material.rock, RefStrings.MODID + ":brick_forgotten_top").setBlockName("brick_forgotten_lock").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten_lock"); + brick_forgotten_lock = new BlockForgottenLock().setBlockName("brick_forgotten_lock").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten_lock"); concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab); concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab); @@ -1902,7 +1902,7 @@ public class ModBlocks { crane_splitter = new CraneSplitter().setBlockName("crane_splitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_side"); crane_partitioner = new CranePartitioner().setBlockName("crane_partitioner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_partitioner_side"); fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); drone_waypoint = new DroneWaypoint().setBlockName("drone_waypoint").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint"); drone_crate = new DroneCrate().setBlockName("drone_crate").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); diff --git a/src/main/java/com/hbm/blocks/generic/BlockForgottenBrick.java b/src/main/java/com/hbm/blocks/generic/BlockForgottenBrick.java index 6ab602ed0..cd06db25b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockForgottenBrick.java +++ b/src/main/java/com/hbm/blocks/generic/BlockForgottenBrick.java @@ -3,6 +3,7 @@ package com.hbm.blocks.generic; import java.util.List; import com.hbm.blocks.BlockMulti; +import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; @@ -10,9 +11,11 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; +import net.minecraft.world.World; public class BlockForgottenBrick extends BlockMulti { @@ -24,6 +27,13 @@ public class BlockForgottenBrick extends BlockMulti { private IIcon iconEmpty; private IIcon iconPlanks; + public static final int META_DEFAULT = 0; + public static final int META_BW = 1; + public static final int META_NULLSTONE = 2; + public static final int META_HOLE = 3; + public static final int META_HOLE_EMPTY = 4; + public static final int META_NULLROOM_WOOD = 5; + public BlockForgottenBrick() { super(Material.rock); } @@ -45,22 +55,22 @@ public class BlockForgottenBrick extends BlockMulti { @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { - if(meta == 1) { + if(meta == META_BW) { if(side == 0 || side == 1) return this.iconAltTop; return this.iconAlt; } - if(meta == 2) { + if(meta == META_NULLSTONE) { return this.iconStone; } - if(meta == 3) { + if(meta == META_HOLE) { if(side == 0 || side == 1) return this.iconTop; return this.iconHole; } - if(meta == 4) { + if(meta == META_HOLE_EMPTY) { if(side == 0 || side == 1) return this.iconTop; return this.iconEmpty; } - if(meta == 5) { + if(meta == META_NULLROOM_WOOD) { return this.iconPlanks; } @@ -68,6 +78,22 @@ public class BlockForgottenBrick extends BlockMulti { return this.blockIcon; } + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + int meta = world.getBlockMetadata(x, y, z); + + if(meta == META_HOLE) { + if(player.getHeldItem() == null) { + player.inventory.mainInventory[player.inventory.currentItem] = new ItemStack(ModItems.coal_eternal); + world.setBlockMetadataWithNotify(x, y, z, META_HOLE_EMPTY, 3); + return true; + } + return false; + } + + return false; + } + @Override public int getSubCount() { return 6; } @Override diff --git a/src/main/java/com/hbm/blocks/generic/BlockForgottenLock.java b/src/main/java/com/hbm/blocks/generic/BlockForgottenLock.java index b1af065e0..cca103db8 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockForgottenLock.java +++ b/src/main/java/com/hbm/blocks/generic/BlockForgottenLock.java @@ -1,21 +1,82 @@ package com.hbm.blocks.generic; -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.machine.BlockPillar; -import com.hbm.items.ModItems; +import java.util.List; +import com.hbm.blocks.BlockMulti; +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class BlockForgottenLock extends BlockPillar { +public class BlockForgottenLock extends BlockMulti { + + private IIcon iconTop; + private IIcon iconAlt; + private IIcon iconAltTop; + private IIcon iconStone; + private IIcon iconStoneTop; + + public static final int META_DEFAULT = 0; + public static final int META_BW = 1; + public static final int META_NULLSTONE = 2; + public static final int META_THE_BLOCK_THAT_FUCKING_KILLS_YOU = 3; - public BlockForgottenLock(Material mat, String top) { - super(mat, top); + public BlockForgottenLock() { + super(Material.rock); } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + this.iconTop = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_top"); + this.iconAlt = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_bw_lock"); + this.iconStone = reg.registerIcon(RefStrings.MODID + ":playground/nullstone_demo_2_wip"); + this.iconStoneTop = reg.registerIcon(RefStrings.MODID + ":playground/nullstone_demo_1_wip"); + this.iconAltTop = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_bw_top"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + + if(meta == META_BW) { + if(side == 0 || side == 1) return this.iconAltTop; + return this.iconAlt; + } + + if(meta == META_NULLSTONE) { + if(side == 0 || side == 1) return this.iconStoneTop; + return this.iconStone; + } + + if(side == 0 || side == 1) return this.iconTop; + return this.blockIcon; + } + + /* + * A red herring is something that misleads or distracts from a relevant or important question.[1] + * It may be either a logical fallacy or a literary device that leads readers or audiences toward a + * false conclusion. A red herring may be used intentionally, as in mystery fiction or as part of + * rhetorical strategies (e.g., in politics), or may be used in argumentation inadvertently.[2] + * + * The expression was popularized in 1807 by the English polemicist William Cobbett, who told a + * story of having used a strong-smelling smoked herring to divert and distract hounds from + * chasing a rabbit.[3] + */ @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { @@ -49,4 +110,14 @@ public class BlockForgottenLock extends BlockPillar { world.setBlock(x - dir.offsetX * d + rot.offsetX * w, y + h, z - dir.offsetZ * d + rot.offsetZ * w, b); } } + + @Override public int getSubCount() { return 3; } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < getSubCount(); ++i) { + list.add(new ItemStack(item, 1, i)); + } + } } diff --git a/src/main/java/com/hbm/handler/FuelHandler.java b/src/main/java/com/hbm/handler/FuelHandler.java index b89b86d58..f188eef34 100644 --- a/src/main/java/com/hbm/handler/FuelHandler.java +++ b/src/main/java/com/hbm/handler/FuelHandler.java @@ -39,6 +39,7 @@ public class FuelHandler implements IFuelHandler { if(fuel.getItem() == Item.getItemFromBlock(ModBlocks.block_coke)) return single * 160; if(fuel.getItem() == ModItems.book_guide) return single; if(fuel.getItem() == ModItems.coal_infernal) return 4800; + if(fuel.getItem() == ModItems.coal_eternal) return single * 16; if(fuel.getItem() == ModItems.crystal_coal) return 6400; if(fuel.getItem() == ModItems.powder_sawdust) return single / 2; diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 5f0e52e54..0c98d5dc7 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -333,8 +333,8 @@ public class AnvilRecipes extends SerializableRecipe { new AStack[] { new OreDictStack(STEEL.plate(), 16), new OreDictStack(BE.ingot(), 6), - new OreDictStack(CU.ingot(), 8), - new ComparableStack(ModItems.coil_gold, 16), + new OreDictStack(CU.ingot(), 4), + new ComparableStack(ModItems.coil_gold, 8), new ComparableStack(ModItems.gear_large, 1, 1) }, new AnvilOutput(new ItemStack(ModBlocks.machine_stirling_steel))).setTier(2)); @@ -698,8 +698,8 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput[] { new AnvilOutput(new ItemStack(ModItems.plate_steel, 16)), new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 6)), - new AnvilOutput(new ItemStack(ModItems.ingot_copper, 8)), - new AnvilOutput(new ItemStack(ModItems.coil_gold, 16)), + new AnvilOutput(new ItemStack(ModItems.ingot_copper, 4)), + new AnvilOutput(new ItemStack(ModItems.coil_gold, 8)), new AnvilOutput(new ItemStack(ModItems.gear_large,1, 1)), } @@ -725,8 +725,8 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput[] { new AnvilOutput(new ItemStack(ModItems.plate_steel, 16)), new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 6)), - new AnvilOutput(new ItemStack(ModItems.ingot_copper, 8)), - new AnvilOutput(new ItemStack(ModItems.coil_gold, 16)), + new AnvilOutput(new ItemStack(ModItems.ingot_copper, 4)), + new AnvilOutput(new ItemStack(ModItems.coil_gold, 8)), } ).setTier(2)); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index aeae45ce9..6fe99b259 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -105,6 +105,7 @@ public class ModItems { public static Item powder_lignite; public static Item briquette; public static Item coal_infernal; + public static Item coal_eternal; public static Item cinnebar; public static Item powder_ash; public static Item powder_limestone; @@ -2338,6 +2339,7 @@ public class ModItems { briquette = new ItemEnumMulti(EnumBriquetteType.class, true, true).setUnlocalizedName("briquette").setCreativeTab(MainRegistry.partsTab); powder_lignite = new Item().setUnlocalizedName("powder_lignite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lignite"); coal_infernal = new Item().setUnlocalizedName("coal_infernal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coal_infernal"); + coal_eternal = new Item().setUnlocalizedName("coal_eternal").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":coal_eternal"); cinnebar = new Item().setUnlocalizedName("cinnebar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cinnebar"); powder_ash = new ItemEnumMulti(EnumAshType.class, true, true).setUnlocalizedName("powder_ash").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_ash"); powder_limestone = new Item().setUnlocalizedName("powder_limestone").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_limestone"); @@ -4406,6 +4408,8 @@ public class ModItems { BucketHandler.INSTANCE.buckets.put(ModBlocks.schrabidic_block, ModItems.bucket_schrabidic_acid); BucketHandler.INSTANCE.buckets.put(ModBlocks.sulfuric_acid_block, ModItems.bucket_sulfuric_acid); MinecraftForge.EVENT_BUS.register(BucketHandler.INSTANCE); + + coal_eternal.setContainerItem(coal_eternal); } private static void registerItem() { @@ -4605,6 +4609,7 @@ public class ModItems { GameRegistry.registerItem(coke, coke.getUnlocalizedName()); GameRegistry.registerItem(lignite, lignite.getUnlocalizedName()); GameRegistry.registerItem(coal_infernal, coal_infernal.getUnlocalizedName()); + GameRegistry.registerItem(coal_eternal, coal_eternal.getUnlocalizedName()); GameRegistry.registerItem(briquette, briquette.getUnlocalizedName()); GameRegistry.registerItem(sulfur, sulfur.getUnlocalizedName()); GameRegistry.registerItem(niter, niter.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 91207f605..de2992170 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -299,7 +299,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.furnace_iron), new Object[] { "III", "IFI", "BBB", 'I', IRON.ingot(), 'F', Blocks.furnace, 'B', Blocks.stonebrick }); addRecipeAuto(new ItemStack(ModBlocks.machine_mixer), new Object[] { "PIP", "GCG", "PMP", 'P', STEEL.plate(), 'I', DURA.ingot(), 'G', KEY_ANYPANE, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', STEEL.bolt(), 'P', IRON.plate(), 'R', REDSTONE.dust() }); - addRecipeAuto(new ItemStack(ModBlocks.piston_inserter), new Object[] { "ITI", "TPT", "ITI", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', IRON.plate(), 'T', STEEL.bolt() }); addRecipeAuto(new ItemStack(ModItems.upgrade_muffler, 16), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool }); addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'P', ModItems.plate_polymer }); diff --git a/src/main/java/com/hbm/particle/ParticleAshes.java b/src/main/java/com/hbm/particle/ParticleAshes.java index 4b76c52ac..f845f7185 100644 --- a/src/main/java/com/hbm/particle/ParticleAshes.java +++ b/src/main/java/com/hbm/particle/ParticleAshes.java @@ -72,14 +72,15 @@ public class ParticleAshes extends EntityFXRotating { float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ); Vec3NT vec = new Vec3NT(particleScale, 0, particleScale).rotateAroundYDeg(this.rotationPitch); + double yOff = 0.09; - tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV()); + tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV()); vec.rotateAroundYDeg(90); - tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV()); + tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV()); vec.rotateAroundYDeg(90); - tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV()); + tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV()); vec.rotateAroundYDeg(90); - tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV()); + tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV()); } else { renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, this.particleScale); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderBatterySocket.java b/src/main/java/com/hbm/render/tileentity/RenderBatterySocket.java index 0254e0669..42e35965a 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderBatterySocket.java +++ b/src/main/java/com/hbm/render/tileentity/RenderBatterySocket.java @@ -94,7 +94,7 @@ public class RenderBatterySocket extends TileEntitySpecialRenderer implements II GL11.glPushMatrix(); GL11.glTranslated(0, 0.5, 0); GL11.glScaled(1.5, 1.5, 1.5); - GL11.glRotated((socket.getWorldObj().getTotalWorldTime() % 360 + interp) * 25D, 0, -1, 0); + GL11.glRotated((socket.getWorldObj().getTotalWorldTime() % 360 + interp) * 2.5D, 0, -1, 0); if(dummy == null || dummy.worldObj != tile.getWorldObj()) { dummy = new EntityItem(tile.getWorldObj(), 0, 0, 0, render); diff --git a/src/main/java/com/hbm/render/tileentity/RenderPylon.java b/src/main/java/com/hbm/render/tileentity/RenderPylon.java index 7d295cec7..b0285d1de 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPylon.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPylon.java @@ -2,7 +2,6 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; -import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; import com.hbm.render.item.ItemRenderBase; diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileControl.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileControl.java index e01a7ad67..5566ff999 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileControl.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileControl.java @@ -7,6 +7,7 @@ import com.hbm.util.Compat; import api.hbm.redstoneoverradio.IRORInteractive; import io.netty.buffer.ByteBuf; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraftforge.common.util.ForgeDirection; @@ -98,6 +99,22 @@ public class TileEntityPileControl extends TileEntityPileDeviceBase implements I if(this.syncLevel != lastSync) this.turnProgress = 2; } + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.level = nbt.getDouble("level"); + this.targetLevel = nbt.getDouble("targetLevel"); + this.wasRedstone = nbt.getBoolean("redstone"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setDouble("level", level); + nbt.setDouble("targetLevel", targetLevel); + nbt.setBoolean("wasRedstone", wasRedstone); + } + @Override public String[] getFunctionInfo() { return new String[] { diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileLoader.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileLoader.java index 91ea334da..29520c70f 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileLoader.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileLoader.java @@ -16,6 +16,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; @@ -166,6 +167,35 @@ public class TileEntityPileLoader extends TileEntityPileDeviceBase implements IS if(this.syncLevel != lastSync) this.turnProgress = 2; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.loading = nbt.getBoolean("loading"); + this.level = nbt.getDouble("level"); + this.delay = nbt.getInteger("delay"); + this.wasRedstone = nbt.getBoolean("redstone"); + + if(nbt.hasKey("stack")) { + this.stack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("stack")); + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setBoolean("loading", loading); + nbt.setDouble("level", level); + nbt.setInteger("delay", delay); + nbt.setBoolean("wasRedstone", wasRedstone); + + if(this.stack != null) { + NBTTagCompound stackTag = new NBTTagCompound(); + this.stack.writeToNBT(stackTag); + nbt.setTag("stack", stackTag); + } + } public static boolean isItemLoadable(ItemStack stack) { return stack.getItem() == ModItems.pile_rod; diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileVent.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileVent.java index 02b2b702b..70a19b795 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileVent.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileVent.java @@ -11,6 +11,7 @@ import com.hbm.util.Compat; import api.hbm.fluidmk2.IFluidStandardReceiverMK2; import io.netty.buffer.ByteBuf; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; @@ -99,4 +100,16 @@ public class TileEntityPileVent extends TileEntityPileDeviceBase implements IFlu super.deserialize(buf); this.isActive = buf.readBoolean(); } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + compair.readFromNBT(nbt, "t"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + compair.writeToNBT(nbt, "t"); + } } diff --git a/src/main/java/com/hbm/util/ShadyUtil.java b/src/main/java/com/hbm/util/ShadyUtil.java index b40c9a783..7f991f696 100644 --- a/src/main/java/com/hbm/util/ShadyUtil.java +++ b/src/main/java/com/hbm/util/ShadyUtil.java @@ -4,7 +4,6 @@ import com.google.common.collect.Sets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import java.util.Base64; import java.util.HashSet; import java.util.Random; import java.util.Set; @@ -62,10 +61,6 @@ public class ShadyUtil { "ccd9aa1c-26b9-4dde-8f37-b96f8d99de22", //kakseao }); - // simple cryptographic utils - @Deprecated public static String encode(String msg) { return Base64.getEncoder().encodeToString(msg.getBytes()); } - @Deprecated public static String decode(String msg) { return new String(Base64.getDecoder().decode(msg)); } - /** complete fucking shit */ public static String smoosh(String s1, String s2, String s3, String s4) { @@ -81,18 +76,12 @@ public class ShadyUtil { s += s1; rand.setSeed(b1[0]); - s += rand.nextInt(0xffffff); - s += s2; + s += rand.nextInt(0xffffff) + s2; rand.setSeed(rand.nextInt(0xffffff) + b2[0]); - rand.setSeed(b2[0]); - s += rand.nextInt(0xffffff); - s += s3; + s += rand.nextInt(0xffffff) + s3; rand.setSeed(rand.nextInt(0xffffff) + b3[0]); - rand.setSeed(b3[0]); - s += rand.nextInt(0xffffff); - s += s4; + s += rand.nextInt(0xffffff) + s4; rand.setSeed(rand.nextInt(0xffffff) + b4[0]); - rand.setSeed(b4[0]); s += rand.nextInt(0xffffff); return getHash(s); } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 336065b4e..f558e61a4 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1733,6 +1733,7 @@ item.cmb_pickaxe.name=CMB-Stahlspitzhacke item.cmb_plate.name=CMB-Stahlbrustpanzer item.cmb_shovel.name=CMB-Stahlschaufel item.cmb_sword.name=CMB-Stahlschwert +item.coal_eternal.name=Ewige Kohle item.coal_infernal.name=Höllische Kohle item.cobalt_axe.name=Kobaltaxt item.cobalt_boots.name=Kobaltstiefel diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index ae818935f..e38e9fc4a 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2526,6 +2526,7 @@ item.cmb_pickaxe.name=CMB Steel Pickaxe item.cmb_plate.name=CMB Steel Chestplate item.cmb_shovel.name=CMB Steel Shovel item.cmb_sword.name=CMB Steel Sword +item.coal_eternal.name=Eternal Coal item.coal_infernal.name=Infernal Coal item.cobalt_axe.name=Cobalt Axe item.cobalt_boots.name=Cobalt Boots diff --git a/src/main/resources/assets/hbm/manual/material/etcoal.json b/src/main/resources/assets/hbm/manual/material/etcoal.json new file mode 100644 index 000000000..3bcdda69c --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/etcoal.json @@ -0,0 +1,11 @@ +{ + "name": "Eternal Coal", + "icon": ["hbm:item.nothing"], + "trigger": [["hbm:item.coal_eternal"]], + "title": { + "en_US": "█ █ █ █ █ █" + }, + "content": { + "en_US": "████████████ ███ ███ ██ ████████ ████████ ██ ████ ████ ████████ ████ ██████████ █ ████ █████ ██████ ████████ ████ █████ ██ ██ ███ ██████" + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/nullstone_demo_2_wip.png b/src/main/resources/assets/hbm/textures/blocks/playground/nullstone_demo_2_wip.png new file mode 100644 index 0000000000000000000000000000000000000000..ef10257b0423c839c4a2f030d10d3e213b98e42a GIT binary patch literal 373 zcmV-*0gC>KP)Pm#hKWQeSgCZ&59 zh5(I_R|F&|#gB~y{vGeg!}WUo0OXuWDUowVL{N({S}cT6X6Q%VJz4+4hhr}0xAj>qH2BZ`Ox0YV4`rJ8Q5&XiKo`F6Xpt}Cb0iFI9h zKA#4lO#mA2RMX;Vn&|tUZQHn9E{5v0YHHB{D^|PT@AelF6BPJTs72eeZQFi)B0}SN zFUw-VVHoT`&of=u{oF*1k;Wg6zOUDduIma)kH_N&y|@Fffzt8gdvtGYo$PfO#}R<@ z`ON$MwpA-gaY%j}9?4Vm>g!6I|B6*4