From 202a31ff2f9d12ac77e1eb7a0d7102d64af8068b Mon Sep 17 00:00:00 2001 From: Doctor17-git <60807716+Doctor17-git@users.noreply.github.com> Date: Mon, 28 Mar 2022 10:01:40 +0300 Subject: [PATCH 1/7] Updated ru_RU.lang aaaa --- src/main/resources/assets/hbm/lang/ru_RU.lang | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 2148361ee..a712dae2f 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -206,6 +206,7 @@ armor.ignoreLimit=Сопротивление не зависит от преде armor.rocketBoots=Ракетные ботинки armor.sprintBoost=Ускоренный бег armor.projectileProtection=Модификатор урона %s от снарядов +armor.dash=Даёт %s дешей hazard.prot=Защищает от: hazard.noprot=НЕ защищает от: @@ -1033,6 +1034,7 @@ chem.LUBRICANT=Смешивание машинной смазки chem.PETROIL_LEADED=Смешивание этилированного бензина chem.RUBBER=Производство резины chem.TNT=Синтез ТНТ +chem.DYNAMITE=Синтез динамита item.record.lc.desc=Valve - Diabolic Adrenaline Guitar/Lambda Core item.record.ss.desc=Valve - Sector Sweep @@ -1894,7 +1896,7 @@ item.ingot_electronium.name=Электрониевый слиток item.ingot_fiberglass.name=Стекловолокно item.ingot_fiberglass.desc=С высоким содержанием волокна, с высоким содержанием стекла. Все, что нужно организму. item.ingot_asbestos.name=Асбестовый лист -item.ingot_asbestos.desc=§o\"Наполненный жизнью, неуверенностью в себе и асбестом. Это приходит вместе с воздухом.\"§r +item.ingot_asbestos.desc=§o"Наполненный жизнью, неуверенностью в себе и асбестом. Это приходит вместе с воздухом."§r item.solid_fuel.name=Твердое топливо item.solid_fuel_presto.name=Топливное полено @@ -2365,6 +2367,9 @@ tile.tile_lab.name=Лабораторная плитка tile.tile_lab_broken.name=Разбитая лабораторная плитка tile.tile_lab_cracked.name=Треснувшая лабораторная плитка tile.spikes.name=Шипы +tile.stalactite.sulfur.name=Сернистый сталактит +tile.stalagmite.sulfur.name=Сернистый сталагмит +tile.stone_resource.sulfur.name=Сернистый камень tile.gas_asbestos.name=Частицы асбеста в воздухе tile.gas_flammable.name=Горючий газ tile.gas_monoxide.name=Угарный газ @@ -3656,6 +3661,8 @@ item.rod_quad_euphemium.name=Выгоревший счетверённый шр item.plate_euphemium.name=Составная пластина из эвфемия item.plate_dineutronium.name=Составная пластина из динейтрония item.plate_desh.name=Составная пластина из деш +item.plate_bismuth.name=Составная пластина из висмута +item.plate_bismuth.desc=Ребята, клянусь, это алхимический символ Висмута. item.plate_fuel_mox.name=МОКС-топливная пластина item.plate_fuel_pu238be.name=Плутоний-238-Бериллевая топливная пластина @@ -4002,6 +4009,10 @@ item.hev_helmet.name=Шлем H.E.V Модели IV item.hev_legs.name=Поножи H.E.V Модели IV item.hev_battery.name=Батарея костюма tile.hev_battery.name=Батарея костюма +item.bismuth_boots.name=Сандали из висмута +item.bismuth_helmet.name=Головной убор из висмута +item.bismuth_legs.name=Наколенники из висмута +item.bismuth_plate.name=Наплечники, ожерелье и набедренная повязка из висмута tile.mush.name=Светящийся гриб tile.waste_mycelium.name=Светящийся мицелий From dcb7ad550cecafedfd8436a0abb38a3a6c849356 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 28 Mar 2022 16:33:19 +0200 Subject: [PATCH 2/7] more fluidAPI, sulfuric acid, asbestos caves --- .../api/hbm/fluid/IFluidConnectorBlock.java | 11 ++++ src/main/java/api/hbm/fluid/IFluidUser.java | 58 +++++++++++++++++- src/main/java/com/hbm/blocks/BlockEnums.java | 3 +- src/main/java/com/hbm/blocks/ModBlocks.java | 20 +++++- .../java/com/hbm/blocks/fluid/AcidFluid.java | 26 ++++---- .../blocks/generic/BlockResourceStone.java | 25 ++++++++ .../hbm/blocks/generic/BlockStalagmite.java | 1 + .../com/hbm/inventory/OreDictManager.java | 2 +- src/main/java/com/hbm/main/MainRegistry.java | 5 +- .../textures/blocks/stalactite.asbestos.png | Bin 0 -> 260 bytes .../textures/blocks/stalagmite.asbestos.png | Bin 0 -> 244 bytes .../assets/hbm/textures/blocks/stone_gems.png | Bin 0 -> 768 bytes .../blocks/stone_resource.asbestos.png | Bin 0 -> 320 bytes .../hbm/textures/blocks/sulfuric_flow.png | Bin 0 -> 9859 bytes .../textures/blocks/sulfuric_flow.png.mcmeta | 3 + .../hbm/textures/blocks/sulfuric_still.png | Bin 0 -> 14357 bytes .../textures/blocks/sulfuric_still.png.mcmeta | 5 ++ .../assets/hbm/textures/blocks/water_flow.png | Bin 0 -> 10198 bytes .../hbm/textures/blocks/water_flow.png.mcmeta | 3 + .../hbm/textures/blocks/water_still.png | Bin 0 -> 14567 bytes .../textures/blocks/water_still.png.mcmeta | 5 ++ 21 files changed, 148 insertions(+), 19 deletions(-) create mode 100644 src/main/java/api/hbm/fluid/IFluidConnectorBlock.java create mode 100644 src/main/java/com/hbm/blocks/generic/BlockResourceStone.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/stalactite.asbestos.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stalagmite.asbestos.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stone_gems.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stone_resource.asbestos.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/sulfuric_flow.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/sulfuric_flow.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/sulfuric_still.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/sulfuric_still.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/water_flow.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/water_flow.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/water_still.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/water_still.png.mcmeta diff --git a/src/main/java/api/hbm/fluid/IFluidConnectorBlock.java b/src/main/java/api/hbm/fluid/IFluidConnectorBlock.java new file mode 100644 index 000000000..65ff758ba --- /dev/null +++ b/src/main/java/api/hbm/fluid/IFluidConnectorBlock.java @@ -0,0 +1,11 @@ +package api.hbm.fluid; + +import com.hbm.inventory.fluid.FluidType; + +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; + +public interface IFluidConnectorBlock { + + public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir); +} diff --git a/src/main/java/api/hbm/fluid/IFluidUser.java b/src/main/java/api/hbm/fluid/IFluidUser.java index 534380946..bf975fa3b 100644 --- a/src/main/java/api/hbm/fluid/IFluidUser.java +++ b/src/main/java/api/hbm/fluid/IFluidUser.java @@ -1,13 +1,65 @@ package api.hbm.fluid; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public interface IFluidUser extends IFluidConnector { - /*public default void updateStandardPipes(World world, int x, int y, int z) { + public default void sendFluid(FluidType type, World world, int x, int y, int z, ForgeDirection dir) { + + TileEntity te = world.getTileEntity(x, y, z); + boolean wasSubscribed = false; + boolean red = false; + + if(te instanceof IFluidConductor) { + IFluidConductor con = (IFluidConductor) te; + + if(con.getPipeNet(type) != null && con.getPipeNet(type).isSubscribed(this)) { + con.getPipeNet(type).unsubscribe(this); + wasSubscribed = true; + } + } + + if(te instanceof IFluidConnector) { + IFluidConnector con = (IFluidConnector) te; + + if(con.canConnect(type, dir.getOpposite())) { + long toSend = this.getTotalFluidForSend(type); + long transfer = toSend - con.transferFluid(type, toSend); + this.removeFluidForTransfer(type, transfer); + red = true; + } + } + + if(wasSubscribed && te instanceof IFluidConductor) { + IFluidConductor con = (IFluidConductor) te; + + if(con.getPipeNet(type) != null && !con.getPipeNet(type).isSubscribed(this)) { + con.getPipeNet(type).subscribe(this); + } + } + + if(particleDebug) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", red ? "reddust" : "greendust"); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x + world.rand.nextDouble(), y + world.rand.nextDouble(), z + world.rand.nextDouble()), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 25)); + } + } + + public long getTotalFluidForSend(FluidType type); + public void removeFluidForTransfer(FluidType type, long amount); + + public default void updateStandardPipes(FluidType type, World world, int x, int y, int z) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - this.trySubscribe(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir); - }*/ + this.trySubscribe(type, world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir); + } } diff --git a/src/main/java/com/hbm/blocks/BlockEnums.java b/src/main/java/com/hbm/blocks/BlockEnums.java index 8b069a935..945f2493d 100644 --- a/src/main/java/com/hbm/blocks/BlockEnums.java +++ b/src/main/java/com/hbm/blocks/BlockEnums.java @@ -3,6 +3,7 @@ package com.hbm.blocks; public class BlockEnums { public static enum EnumStoneType { - SULFUR + SULFUR, + ASBESTOS } } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 5f71c7651..f204f84b6 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -21,9 +21,12 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.DoorDecl; import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockFalling; import net.minecraft.block.material.*; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; @@ -1183,6 +1186,9 @@ public class ModBlocks { public static Fluid volcanic_lava_fluid; public static final Material fluidvolcanic = (new MaterialLiquid(MapColor.redColor)); + public static Block sulfuric_acid_block; + public static Fluid sulfuric_acid_fluid; + public static Block volcano_core; public static Block dummy_block_flare; @@ -1346,7 +1352,7 @@ public class ModBlocks { ore_depth_nether_neodymium = new BlockDepthOre().setBlockName("ore_depth_nether_neodymium").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_depth_nether_neodymium"); stone_porous = new BlockPorous().setBlockName("stone_porous").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":stone_porous"); - stone_resource = new BlockEnumMulti(Material.rock, BlockEnums.EnumStoneType.class, true, true).setBlockName("stone_resource").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); + stone_resource = new BlockResourceStone().setBlockName("stone_resource").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); stalagmite = new BlockStalagmite().setBlockName("stalagmite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); stalactite = new BlockStalagmite().setBlockName("stalactite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); @@ -2212,6 +2218,17 @@ public class ModBlocks { FluidRegistry.registerFluid(volcanic_lava_fluid); volcanic_lava_block = new VolcanicBlock(volcanic_lava_fluid, Material.lava).setBlockName("volcanic_lava_block").setResistance(500F); + sulfuric_acid_fluid = new SchrabidicFluid().setDensity(1840).setViscosity(1000).setTemperature(273).setUnlocalizedName("sulfuric_acid_fluid"); + FluidRegistry.registerFluid(sulfuric_acid_fluid); + sulfuric_acid_block = new SchrabidicBlock(sulfuric_acid_fluid, Material.water, ModDamageSource.acid) { //TODO: make a new block class + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister register) { + stillIcon = register.registerIcon(RefStrings.MODID + ":sulfuric_acid_still"); + flowingIcon = register.registerIcon(RefStrings.MODID + ":sulfuric_acid_flowing"); + } + }.setBlockName("sulfuric_acid_block").setResistance(500F); + dummy_block_flare = new DummyBlockFlare(Material.iron, false).setBlockName("dummy_block_flare").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); dummy_port_flare = new DummyBlockFlare(Material.iron, true).setBlockName("dummy_port_flare").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); dummy_block_drill = new DummyBlockDrill(Material.iron, false).setBlockName("dummy_block_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_lead"); @@ -3201,6 +3218,7 @@ public class ModBlocks { GameRegistry.registerBlock(schrabidic_block, schrabidic_block.getUnlocalizedName()); GameRegistry.registerBlock(corium_block, corium_block.getUnlocalizedName()); GameRegistry.registerBlock(volcanic_lava_block, volcanic_lava_block.getUnlocalizedName()); + GameRegistry.registerBlock(sulfuric_acid_block, sulfuric_acid_block.getUnlocalizedName()); //Multiblock Dummy Blocks GameRegistry.registerBlock(dummy_block_flare, dummy_block_flare.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/fluid/AcidFluid.java b/src/main/java/com/hbm/blocks/fluid/AcidFluid.java index 6b8d576c4..7914731f0 100644 --- a/src/main/java/com/hbm/blocks/fluid/AcidFluid.java +++ b/src/main/java/com/hbm/blocks/fluid/AcidFluid.java @@ -11,21 +11,25 @@ public class AcidFluid extends Fluid { super("acid_fluid"); } - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon() { - return getStillIcon(); - } + public AcidFluid(String name) { + super(name); + } @Override @SideOnly(Side.CLIENT) - public IIcon getStillIcon() { - return AcidBlock.stillIcon; - } + public IIcon getIcon() { + return getStillIcon(); + } @Override @SideOnly(Side.CLIENT) - public IIcon getFlowingIcon() { - return AcidBlock.flowingIcon; - } + public IIcon getStillIcon() { + return AcidBlock.stillIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getFlowingIcon() { + return AcidBlock.flowingIcon; + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockResourceStone.java b/src/main/java/com/hbm/blocks/generic/BlockResourceStone.java new file mode 100644 index 000000000..7100843ab --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockResourceStone.java @@ -0,0 +1,25 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.BlockEnumMulti; +import com.hbm.blocks.BlockEnums; +import com.hbm.blocks.ModBlocks; + +import net.minecraft.block.material.Material; +import net.minecraft.world.World; + +public class BlockResourceStone extends BlockEnumMulti { + + public BlockResourceStone() { + super(Material.rock, BlockEnums.EnumStoneType.class, true, true); + } + + @Override + public void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int fortune) { + + if(meta == BlockEnums.EnumStoneType.ASBESTOS.ordinal()) { + world.setBlock(x, y, z, ModBlocks.gas_asbestos); + } + + super.dropBlockAsItemWithChance(world, x, y, z, meta, chance, fortune); + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java b/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java index 9358ab147..f219fb30a 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java +++ b/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java @@ -40,6 +40,7 @@ public class BlockStalagmite extends BlockEnumMulti { switch(meta) { case 0: return ModItems.sulfur; + case 1: return ModItems.powder_asbestos; } return null; diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 753106a53..7a133f322 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -344,7 +344,7 @@ public class OreDictManager { EUPH .nugget(nugget_euphemium) .ingot(ingot_euphemium) .dust(powder_euphemium) .block(block_euphemium); DNT .nugget(nugget_dineutronium) .ingot(ingot_dineutronium) .dust(powder_dineutronium) .block(block_dineutronium); FIBER .ingot(ingot_fiberglass) .block(block_fiberglass); - ASBESTOS .asbestos(1F) .ingot(ingot_asbestos) .dust(powder_asbestos) .block(block_asbestos) .ore(ore_asbestos, ore_gneiss_asbestos, basalt_asbestos); + ASBESTOS .asbestos(1F) .ingot(ingot_asbestos) .dust(powder_asbestos) .block(block_asbestos) .ore(ore_asbestos, ore_gneiss_asbestos, basalt_asbestos, DictFrame.fromOne(stone_resource, EnumStoneType.ASBESTOS)); OSMIRIDIUM .nugget(nugget_osmiridium) .ingot(ingot_osmiridium); /* diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 1963143b1..daaecb10b 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -974,8 +974,9 @@ public class MainRegistry { //expand for the largest entity we have (currently Quackos who is 17.5m in diameter, that's one fat duck) World.MAX_ENTITY_RADIUS = Math.max(World.MAX_ENTITY_RADIUS, 8.75); - - new OreCave(ModBlocks.stone_resource, 0).setThreshold(1.5D).setRangeMult(20).setYLevel(30).setMaxRange(20); + + new OreCave(ModBlocks.stone_resource, 0).setThreshold(1.5D).setRangeMult(20).setYLevel(30).setMaxRange(20); //sulfur + new OreCave(ModBlocks.stone_resource, 1).setThreshold(1.75D).setRangeMult(20).setYLevel(25).setMaxRange(20); //asbestos //new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); } diff --git a/src/main/resources/assets/hbm/textures/blocks/stalactite.asbestos.png b/src/main/resources/assets/hbm/textures/blocks/stalactite.asbestos.png new file mode 100644 index 0000000000000000000000000000000000000000..49a66bd495d960397cacaddbd6456339ee5700d6 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfS&E z_jG&2I)yR{2nKl_v1tAEuYe)q`t`gth8@&QihzJ`e-`?i@_hUufm;2ESf{rdL ze2dPly=JzcZo#T2b7ucy*dAthOmm0zs#BFKrt^56Gv1LCuxQnc$m@@^7w}xVTloDx zzCx^edTlEj_b~eGP4a-eB-_^>bP0 Hl+XkKvV>+F literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/stalagmite.asbestos.png b/src/main/resources/assets/hbm/textures/blocks/stalagmite.asbestos.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2704ed34cd4a9eb2a07b577a3640b4863ae73a GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfN=PeZQ+fFA#K5;?`9t_pUf0Lt-AI*%kh&woI0nbt_C`r!PC{xWt~$(69A^6T1@}| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_gems.png b/src/main/resources/assets/hbm/textures/blocks/stone_gems.png new file mode 100644 index 0000000000000000000000000000000000000000..6bf8cf21b8a3d6dcc7e81af00a45b5e2ccb22e45 GIT binary patch literal 768 zcmV+b1ONPqP)76k}Q#>McG~dnM9^=ynuM! zd!u>p_rCd!@H}stWf`N+e?B8)LiCKKM<-Q{F^n>#OFu(Y%^Q&6o|XI;Pen*9&HAx%@fqa%o8k|aS& zNuKA_+HGzEQ52D7831JfA;fIwZVpFdEX(5L!Sm*Tg6x+5DK@dzE zjzh=u5JGT!rA6<#i`KI_Ns<)Q^E_v5ZLP?|Fr<8be$LJ7LYk)Zp3k1@`1qJosZ`W0 z%OcNn`u#q(Z6l?`wrxs_i;L_90ZJ*-G%Y4umWAJJBBkW3oqd}3eBRu8M73H)YfZb= zLMb(a7)22P`}gnT_Iia}uhSupW4b-~{S@K>WR<`8{zQcn3!2BjDet@TV|H;2v) zq?D4T@6!c-177z1;sdR&t`h9Mk5cL%29wDIV+;Vp;gIF!Ww^c=11bmra2gHVgM*@( ya9wwLb#;X?hDxQvU@%~7YwLd|n)8{*oYUXe1~Z4S8WSb}0000pp2CvXQDn}$rn-5CPfNi+P z>-Bs`1OTA-j?9F+Lx&^)z|3$uZH%!bk(^0NB#AKw+#T+Y%$(TE%$AO3HoK8TMBs!W z33tb(s(L(8J#|-36R1j16r0REzE272su&S)_nD;P5wWl&iKYjVOQ+0SWGT8k>eQNC zS3<2`@0FpxjWNC^o_wgXcG~xS&*Ia>-unc};eUIfiCk6d?!#{G9s!{JoB!^MHnujo z>g-j$E|$P%Hf2_ZO^Z@ZtRUShn`(TMA-{Bsf&SFWGBdvts_T+e!S!Aj3jjWWxbq9| Svxk`g0000F!db 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
  • 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 P00000NkvXXu0mjfvoR>z literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/sulfuric_still.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/sulfuric_still.png.mcmeta new file mode 100644 index 000000000..4b721e09a --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/sulfuric_still.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/water_flow.png b/src/main/resources/assets/hbm/textures/blocks/water_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..e72280c42cf4d21e80c1e1733fda94d4217beedd GIT binary patch literal 10198 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 WQVtXyOu?VYBT!Y+Qml}-3j04On!Z{9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/water_flow.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/water_flow.png.mcmeta new file mode 100644 index 000000000..de3267f0d --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/water_flow.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/textures/blocks/water_still.png b/src/main/resources/assets/hbm/textures/blocks/water_still.png new file mode 100644 index 0000000000000000000000000000000000000000..c7e90b07308c58daeab5432659e9ac45095204fc GIT binary patch literal 14567 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

    |NJRJB2jmbz# z)D!9#6^QP8TL+Henk^nm*0XHa>IWC#1RJR*O#3 zaL*qoah*PrH2SKeWNC#5Y~!d$Z%RhW*1+b_V_RyI&cT`U&F84=!>K*Hq!A+lzI(vE z3)GMUjqh^cW~*A0^OJlXk2s1A3#jLC)q>ON=rX(^l9v#AbVPc-^L9GwoM|7>GO=q%fr<9n>2`NpOn+;O6s_Jk|4^*Y(2xKLB$&!Rh$s RLHPgx002ovPDHLkV1n%S)6xI{ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/water_still.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/water_still.png.mcmeta new file mode 100644 index 000000000..4b721e09a --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/water_still.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} From ff87b1a062c773f3ba465c955e79939a7e8b7f76 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 28 Mar 2022 23:55:03 +0200 Subject: [PATCH 3/7] proper sulfuric acid --- src/main/java/com/hbm/blocks/ModBlocks.java | 11 +- .../com/hbm/blocks/fluid/GenericFluid.java | 31 ++++++ .../hbm/blocks/fluid/GenericFluidBlock.java | 96 ++++++++++++++++++ .../com/hbm/blocks/fluid/SchrabidicBlock.java | 6 +- .../blocks/stone_resource.asbestos.png | Bin 320 -> 325 bytes ...ric_flow.png => sulfuric_acid_flowing.png} | Bin ...cmeta => sulfuric_acid_flowing.png.mcmeta} | 0 ...uric_still.png => sulfuric_acid_still.png} | Bin ....mcmeta => sulfuric_acid_still.png.mcmeta} | 0 9 files changed, 133 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/fluid/GenericFluid.java create mode 100644 src/main/java/com/hbm/blocks/fluid/GenericFluidBlock.java rename src/main/resources/assets/hbm/textures/blocks/{sulfuric_flow.png => sulfuric_acid_flowing.png} (100%) rename src/main/resources/assets/hbm/textures/blocks/{sulfuric_flow.png.mcmeta => sulfuric_acid_flowing.png.mcmeta} (100%) rename src/main/resources/assets/hbm/textures/blocks/{sulfuric_still.png => sulfuric_acid_still.png} (100%) rename src/main/resources/assets/hbm/textures/blocks/{sulfuric_still.png.mcmeta => sulfuric_acid_still.png.mcmeta} (100%) diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index f204f84b6..d355520dd 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2218,16 +2218,9 @@ public class ModBlocks { FluidRegistry.registerFluid(volcanic_lava_fluid); volcanic_lava_block = new VolcanicBlock(volcanic_lava_fluid, Material.lava).setBlockName("volcanic_lava_block").setResistance(500F); - sulfuric_acid_fluid = new SchrabidicFluid().setDensity(1840).setViscosity(1000).setTemperature(273).setUnlocalizedName("sulfuric_acid_fluid"); + sulfuric_acid_fluid = new GenericFluid("sulfuric_acid_fluid").setDensity(1840).setViscosity(1000).setTemperature(273); FluidRegistry.registerFluid(sulfuric_acid_fluid); - sulfuric_acid_block = new SchrabidicBlock(sulfuric_acid_fluid, Material.water, ModDamageSource.acid) { //TODO: make a new block class - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister register) { - stillIcon = register.registerIcon(RefStrings.MODID + ":sulfuric_acid_still"); - flowingIcon = register.registerIcon(RefStrings.MODID + ":sulfuric_acid_flowing"); - } - }.setBlockName("sulfuric_acid_block").setResistance(500F); + sulfuric_acid_block = new GenericFluidBlock(sulfuric_acid_fluid, Material.water, "sulfuric_acid_still", "sulfuric_acid_flowing").setDamage(ModDamageSource.acid, 5F).setBlockName("sulfuric_acid_block").setResistance(500F); dummy_block_flare = new DummyBlockFlare(Material.iron, false).setBlockName("dummy_block_flare").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); dummy_port_flare = new DummyBlockFlare(Material.iron, true).setBlockName("dummy_port_flare").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); diff --git a/src/main/java/com/hbm/blocks/fluid/GenericFluid.java b/src/main/java/com/hbm/blocks/fluid/GenericFluid.java new file mode 100644 index 000000000..d3005cb2d --- /dev/null +++ b/src/main/java/com/hbm/blocks/fluid/GenericFluid.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.fluid; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.util.IIcon; +import net.minecraftforge.fluids.Fluid; + +public class GenericFluid extends Fluid { + + public GenericFluid(String name) { + super("corium_fluid"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon() { + return getStillIcon(); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getStillIcon() { + return this.block.getIcon(0, 0); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getFlowingIcon() { + return this.block.getIcon(1, 0); + } +} diff --git a/src/main/java/com/hbm/blocks/fluid/GenericFluidBlock.java b/src/main/java/com/hbm/blocks/fluid/GenericFluidBlock.java new file mode 100644 index 000000000..ebd04d324 --- /dev/null +++ b/src/main/java/com/hbm/blocks/fluid/GenericFluidBlock.java @@ -0,0 +1,96 @@ +package com.hbm.blocks.fluid; + +import java.util.Random; + +import com.hbm.lib.ModDamageSource; +import com.hbm.lib.RefStrings; +import com.hbm.util.ArmorUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.passive.EntitySquid; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.DamageSource; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.fluids.BlockFluidClassic; +import net.minecraftforge.fluids.Fluid; + +public class GenericFluidBlock extends BlockFluidClassic { + + @SideOnly(Side.CLIENT) + public static IIcon stillIcon; + @SideOnly(Side.CLIENT) + public static IIcon flowingIcon; + public Random rand = new Random(); + + private String stillName; + private String flowingName; + + public float damage; + public DamageSource damageSource; + + public GenericFluidBlock(Fluid fluid, Material material, String still, String flowing) { + super(fluid, material); + setCreativeTab(null); + stillName = still; + flowingName = flowing; + displacements.put(this, false); + } + + public GenericFluidBlock setDamage(DamageSource source, float amount) { + damageSource = source; + damage = amount; + return this; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return (side == 0 || side == 1) ? stillIcon : flowingIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister register) { + stillIcon = register.registerIcon(RefStrings.MODID + ":" + stillName); + flowingIcon = register.registerIcon(RefStrings.MODID + ":" + flowingName); + } + + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { + + if(damageSource != null) { + + if(entity instanceof EntityItem) { + + entity.motionX = 0; + entity.motionY = 0; + entity.motionZ = 0; + + if(entity.ticksExisted % 20 == 0 && !world.isRemote) { + entity.attackEntityFrom(damageSource, damage * 0.1F); + } + if(entity.ticksExisted % 5 == 0) { + world.spawnParticle("cloud", entity.posX, entity.posY, entity.posZ, 0.0, 0.0, 0.0); + } + } else { + + if(entity.motionY < -0.2) + entity.motionY *= 0.5; + + if(!world.isRemote) { + entity.attackEntityFrom(damageSource, damage); + } + } + + if(entity.ticksExisted % 5 == 0) { + world.playSoundAtEntity(entity, "random.fizz", 0.2F, 1F); + } + } + } +} diff --git a/src/main/java/com/hbm/blocks/fluid/SchrabidicBlock.java b/src/main/java/com/hbm/blocks/fluid/SchrabidicBlock.java index cb656986c..57e9b7b1a 100644 --- a/src/main/java/com/hbm/blocks/fluid/SchrabidicBlock.java +++ b/src/main/java/com/hbm/blocks/fluid/SchrabidicBlock.java @@ -77,7 +77,9 @@ public class SchrabidicBlock extends BlockFluidClassic { @Override public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { - entity.setInWeb(); + + if(this.getMaterial() == ModBlocks.fluidschrabidic) + entity.setInWeb(); if(entity instanceof EntityLivingBase) ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.CREATIVE, 1.0F); @@ -97,7 +99,7 @@ public class SchrabidicBlock extends BlockFluidClassic { } public boolean reactToBlocks(World world, int x, int y, int z) { - if(world.getBlock(x, y, z).getMaterial() != ModBlocks.fluidschrabidic) { + if(world.getBlock(x, y, z).getMaterial() != this.getMaterial()) { if(world.getBlock(x, y, z).getMaterial().isLiquid()) { return true; } diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_resource.asbestos.png b/src/main/resources/assets/hbm/textures/blocks/stone_resource.asbestos.png index 956204a9b016e702815ccaca6814a79c7a2da17c..d3c7c886c4694217b467ef77b7b22079c08a81fa 100644 GIT binary patch delta 282 zcmV+#0puK5G=Ka_L_t(IjeS$WjRYYK^CBup4XJ?|rsUL+_x(0Cq=nnZ$jFCg z4+$Z_3APhn@AuDdW&!}#TBs_xJGy&M05CIfxI3x}W`+?F$jl97keTht01XC!s=^?E zgF(vR3DezhcMNxjyYEA#$`KJDPMMe)rs|>uu4GeHkLTTeOMl?2Tr+bUsmbXTaovr{ zgYN$G5?$7NdZAUDG>QS5UH8h6cM)-$_~e7iI%!|mwUciX*IFAyhqW)BN?27Gs`d2Y zH1}KqVE$MC(-*e6J~FiS%&v_^u$gU{%5bt#)IXZ2$lO07*qoM6N<$g2oVqTmS$7 delta 277 zcmV+w0qXw60>A>0G=KL=L_t(IjeS$W4FfR>N%y2qwjIkt3EmX2mN zyOBgh;DjLwcgLlwdOT4*byrRks7g>2o6J1EPYLR(7!h#ynSZ3>5wWl&iKYjVOQ+0S zWGT8k>eQNCS3<2`@0FpxjWNC^o_wgXcG~xS&*Ia>-unc};eUIfiCk6d?!#{G9s!{J zoB!^MHnujo>g-j$E|$P%Hf2_ZO^Z@ZtRUShn`(TMA-{Bsf&SFWGBdvts_T+e!S!Aj b3jjWWxbq9|vkr%u00000NkvXXu0mjf3^Ilf diff --git a/src/main/resources/assets/hbm/textures/blocks/sulfuric_flow.png b/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_flowing.png similarity index 100% rename from src/main/resources/assets/hbm/textures/blocks/sulfuric_flow.png rename to src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_flowing.png diff --git a/src/main/resources/assets/hbm/textures/blocks/sulfuric_flow.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_flowing.png.mcmeta similarity index 100% rename from src/main/resources/assets/hbm/textures/blocks/sulfuric_flow.png.mcmeta rename to src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_flowing.png.mcmeta diff --git a/src/main/resources/assets/hbm/textures/blocks/sulfuric_still.png b/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_still.png similarity index 100% rename from src/main/resources/assets/hbm/textures/blocks/sulfuric_still.png rename to src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_still.png diff --git a/src/main/resources/assets/hbm/textures/blocks/sulfuric_still.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_still.png.mcmeta similarity index 100% rename from src/main/resources/assets/hbm/textures/blocks/sulfuric_still.png.mcmeta rename to src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_still.png.mcmeta From 957b07cca3b3b0c338499ec351e685bc2735d909 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 29 Mar 2022 16:39:54 +0200 Subject: [PATCH 4/7] more fluid API, tank labels (finally) --- .../java/api/hbm/energy/IEnergyConductor.java | 10 +++ .../java/api/hbm/fluid/IFluidConductor.java | 9 ++ .../api/hbm/fluid/IFluidStandardReceiver.java | 49 +++++++++++ .../api/hbm/fluid/IFluidStandardSender.java | 40 +++++++++ src/main/java/api/hbm/fluid/IFluidUser.java | 4 +- .../com/hbm/blocks/fluid/GenericFluid.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 5 +- .../java/com/hbm/items/machine/ItemStamp.java | 3 +- .../items/tool/ItemCraftingDegradation.java | 1 + .../render/tileentity/RenderFluidTank.java | 82 +++++++----------- .../hbm/textures/gui/fluids/sulfuric_acid.png | Bin 0 -> 1784 bytes .../models/{ => tank_label}/tank_ACID.png | Bin .../models/{ => tank_label}/tank_AMAT.png | Bin .../models/tank_label/tank_AROMATICS.png | Bin 0 -> 3082 bytes .../models/{ => tank_label}/tank_ASCHRAB.png | Bin .../models/{ => tank_label}/tank_BALEFIRE.png | Bin .../models/{ => tank_label}/tank_BIOFUEL.png | Bin .../models/{ => tank_label}/tank_BIOGAS.png | Bin .../models/{ => tank_label}/tank_BITUMEN.png | Bin .../{ => tank_label}/tank_CARBONDIOXIDE.png | Bin .../models/tank_label/tank_COALGAS.png | Bin 0 -> 2527 bytes .../models/tank_label/tank_COALGAS_LEADED.png | Bin 0 -> 2554 bytes .../models/tank_label/tank_COALOIL.png | Bin 0 -> 1720 bytes .../models/{ => tank_label}/tank_COOLANT.png | Bin .../models/{ => tank_label}/tank_CRYOGEL.png | Bin .../textures/models/tank_label/tank_DEATH.png | Bin 0 -> 5782 bytes .../{ => tank_label}/tank_DEUTERIUM.png | Bin .../models/{ => tank_label}/tank_DIESEL.png | Bin .../models/tank_label/tank_DIESEL_CRACK.png | Bin 0 -> 2655 bytes .../models/tank_label/tank_ENDERJUICE.png | Bin 0 -> 2051 bytes .../models/{ => tank_label}/tank_ETHANOL.png | Bin .../models/tank_label/tank_FRACKSOL.png | Bin 0 -> 3499 bytes .../models/{ => tank_label}/tank_GAS.png | Bin .../models/tank_label/tank_GASOLINE.png | Bin 0 -> 2653 bytes .../tank_label/tank_GASOLINE_LEADED.png | Bin 0 -> 1822 bytes .../{ => tank_label}/tank_HEATINGOIL.png | Bin .../models/{ => tank_label}/tank_HEAVYOIL.png | Bin .../models/tank_label/tank_HEAVYWATER.png | Bin 0 -> 2604 bytes .../models/{ => tank_label}/tank_HELIUM3.png | Bin .../models/tank_label/tank_HOTCRACKOIL.png | Bin 0 -> 2151 bytes .../models/{ => tank_label}/tank_HOTOIL.png | Bin .../models/{ => tank_label}/tank_HOTSTEAM.png | Bin .../models/{ => tank_label}/tank_HYDROGEN.png | Bin .../models/{ => tank_label}/tank_KEROSENE.png | Bin .../models/{ => tank_label}/tank_LAVA.png | Bin .../models/{ => tank_label}/tank_LIGHTOIL.png | Bin .../models/tank_label/tank_LIGHTOIL_CRACK.png | Bin 0 -> 2807 bytes .../models/{ => tank_label}/tank_LPG.png | Bin .../{ => tank_label}/tank_LUBRICANT.png | Bin .../models/{ => tank_label}/tank_MERCURY.png | Bin .../models/{ => tank_label}/tank_NAPHTHA.png | Bin .../models/tank_label/tank_NAPHTHA_CRACK.png | Bin 0 -> 2810 bytes .../models/{ => tank_label}/tank_NITAN.png | Bin .../models/{ => tank_label}/tank_NONE.png | Bin .../models/{ => tank_label}/tank_OIL.png | Bin .../models/{ => tank_label}/tank_OXYGEN.png | Bin .../textures/models/tank_label/tank_PAIN.png | Bin 0 -> 2765 bytes .../models/{ => tank_label}/tank_PETROIL.png | Bin .../models/tank_label/tank_PETROIL_LEADED.png | Bin 0 -> 2188 bytes .../{ => tank_label}/tank_PETROLEUM.png | Bin .../models/{ => tank_label}/tank_PUF6.png | Bin .../{ => tank_label}/tank_RECLAIMED.png | Bin .../models/tank_label/tank_SALIENT.png | Bin 0 -> 2206 bytes .../models/{ => tank_label}/tank_SAS3.png | Bin .../{ => tank_label}/tank_SCHRABIDIC.png | Bin .../models/{ => tank_label}/tank_SMEAR.png | Bin .../models/tank_label/tank_SPENTSTEAM.png | Bin 0 -> 1775 bytes .../models/{ => tank_label}/tank_STEAM.png | Bin .../models/tank_label/tank_SULFURIC_ACID.png | Bin 0 -> 2331 bytes .../{ => tank_label}/tank_SUPERHOTSTEAM.png | Bin .../models/{ => tank_label}/tank_TRITIUM.png | Bin .../models/{ => tank_label}/tank_UF6.png | Bin .../{ => tank_label}/tank_ULTRAHOTSTEAM.png | Bin .../models/tank_label/tank_UNSATURATEDS.png | Bin 0 -> 3514 bytes .../models/tank_label/tank_WASTEFLUID.png | Bin 0 -> 4090 bytes .../models/tank_label/tank_WASTEGAS.png | Bin 0 -> 4990 bytes .../models/{ => tank_label}/tank_WATER.png | Bin .../models/{ => tank_label}/tank_WATZ.png | Bin .../models/{ => tank_label}/tank_XENON.png | Bin .../models/tank_label/tank_XPJUICE.png | Bin 0 -> 2342 bytes 80 files changed, 150 insertions(+), 55 deletions(-) create mode 100644 src/main/java/api/hbm/fluid/IFluidStandardReceiver.java create mode 100644 src/main/java/api/hbm/fluid/IFluidStandardSender.java create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/sulfuric_acid.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_ACID.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_AMAT.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_AROMATICS.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_ASCHRAB.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_BALEFIRE.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_BIOFUEL.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_BIOGAS.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_BITUMEN.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_CARBONDIOXIDE.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_COALGAS.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_COALGAS_LEADED.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_COALOIL.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_COOLANT.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_CRYOGEL.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_DEATH.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_DEUTERIUM.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_DIESEL.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_DIESEL_CRACK.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_ENDERJUICE.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_ETHANOL.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_FRACKSOL.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_GAS.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_GASOLINE.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_GASOLINE_LEADED.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_HEATINGOIL.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_HEAVYOIL.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_HEAVYWATER.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_HELIUM3.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_HOTCRACKOIL.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_HOTOIL.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_HOTSTEAM.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_HYDROGEN.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_KEROSENE.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_LAVA.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_LIGHTOIL.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_LIGHTOIL_CRACK.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_LPG.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_LUBRICANT.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_MERCURY.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_NAPHTHA.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_NAPHTHA_CRACK.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_NITAN.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_NONE.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_OIL.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_OXYGEN.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_PAIN.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_PETROIL.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_PETROIL_LEADED.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_PETROLEUM.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_PUF6.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_RECLAIMED.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_SALIENT.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_SAS3.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_SCHRABIDIC.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_SMEAR.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_SPENTSTEAM.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_STEAM.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_SULFURIC_ACID.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_SUPERHOTSTEAM.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_TRITIUM.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_UF6.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_ULTRAHOTSTEAM.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_UNSATURATEDS.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_WASTEFLUID.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_WASTEGAS.png rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_WATER.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_WATZ.png (100%) rename src/main/resources/assets/hbm/textures/models/{ => tank_label}/tank_XENON.png (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_XPJUICE.png diff --git a/src/main/java/api/hbm/energy/IEnergyConductor.java b/src/main/java/api/hbm/energy/IEnergyConductor.java index 84f9bbfad..572ef0dc8 100644 --- a/src/main/java/api/hbm/energy/IEnergyConductor.java +++ b/src/main/java/api/hbm/energy/IEnergyConductor.java @@ -94,4 +94,14 @@ public interface IEnergyConductor extends IEnergyConnector { return pos; } + + //TODO: check if this standard implementation doesn't break anything (it shouldn't but right now it's a bit redundant) also: remove duplicate implementations + @Override + public default long transferPower(long power) { + + if(this.getPowerNet() == null) + return power; + + return this.getPowerNet().transferPower(power); + } } diff --git a/src/main/java/api/hbm/fluid/IFluidConductor.java b/src/main/java/api/hbm/fluid/IFluidConductor.java index 6c8298a54..95ae30766 100644 --- a/src/main/java/api/hbm/fluid/IFluidConductor.java +++ b/src/main/java/api/hbm/fluid/IFluidConductor.java @@ -7,4 +7,13 @@ public interface IFluidConductor extends IFluidConnector { public IPipeNet getPipeNet(FluidType type); public void setPipeNet(FluidType type, IPipeNet network); + + @Override + public default long transferFluid(FluidType type, long amount) { + + if(this.getPipeNet(type) == null) + return amount; + + return this.getPipeNet(type).transferFluid(amount); + } } diff --git a/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java b/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java new file mode 100644 index 000000000..2d198d1f4 --- /dev/null +++ b/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java @@ -0,0 +1,49 @@ +package api.hbm.fluid; + +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.fluid.FluidType; + +/** + * Uses default implementation to make the underlying interfaces easier to use for the most common fluid users. + * Only handles a single input tank of the same type. + * Uses standard FluidTanks which use int32. + * Don't use this as part of the API! + * @author hbm + * + */ +public interface IFluidStandardReceiver extends IFluidUser { + + @Override + public default long transferFluid(FluidType type, long amount) { + + for(FluidTank tank : getReceivingTanks()) { + if(tank.getTankType() == type) { + tank.setFill(tank.getFill() + (int) amount); + + if(tank.getFill() > tank.getMaxFill()) { + long overshoot = tank.getFill() - tank.getMaxFill(); + tank.setFill(tank.getMaxFill()); + return overshoot; + } + + return 0; + } + } + + return amount; + } + + public FluidTank[] getReceivingTanks(); + + @Override + public default long getDemand(FluidType type) { + + for(FluidTank tank : getReceivingTanks()) { + if(tank.getTankType() == type) { + return tank.getMaxFill() - tank.getFill(); + } + } + + return 0; + } +} diff --git a/src/main/java/api/hbm/fluid/IFluidStandardSender.java b/src/main/java/api/hbm/fluid/IFluidStandardSender.java new file mode 100644 index 000000000..83a0a9d98 --- /dev/null +++ b/src/main/java/api/hbm/fluid/IFluidStandardSender.java @@ -0,0 +1,40 @@ +package api.hbm.fluid; + +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.fluid.FluidType; + +/** + * Uses default implementation to make the underlying interfaces easier to use for the most common fluid users. + * Only handles a single output tank of the same type. + * Uses standard FluidTanks which use int32. + * Don't use this as part of the API! + * @author hbm + * + */ +public interface IFluidStandardSender extends IFluidUser { + + public FluidTank[] getSendingTanks(); + + @Override + public default long getTotalFluidForSend(FluidType type) { + + for(FluidTank tank : getSendingTanks()) { + if(tank.getTankType() == type) { + return tank.getFill(); + } + } + + return 0; + } + + @Override + public default void removeFluidForTransfer(FluidType type, long amount) { + + for(FluidTank tank : getSendingTanks()) { + if(tank.getTankType() == type) { + tank.setFill(tank.getFill() - (int) amount); + return; + } + } + } +} diff --git a/src/main/java/api/hbm/fluid/IFluidUser.java b/src/main/java/api/hbm/fluid/IFluidUser.java index bf975fa3b..d36dd105b 100644 --- a/src/main/java/api/hbm/fluid/IFluidUser.java +++ b/src/main/java/api/hbm/fluid/IFluidUser.java @@ -54,8 +54,8 @@ public interface IFluidUser extends IFluidConnector { } } - public long getTotalFluidForSend(FluidType type); - public void removeFluidForTransfer(FluidType type, long amount); + public default long getTotalFluidForSend(FluidType type) { return 0; } + public default void removeFluidForTransfer(FluidType type, long amount) { } public default void updateStandardPipes(FluidType type, World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/fluid/GenericFluid.java b/src/main/java/com/hbm/blocks/fluid/GenericFluid.java index d3005cb2d..6d7d0c29c 100644 --- a/src/main/java/com/hbm/blocks/fluid/GenericFluid.java +++ b/src/main/java/com/hbm/blocks/fluid/GenericFluid.java @@ -8,7 +8,7 @@ import net.minecraftforge.fluids.Fluid; public class GenericFluid extends Fluid { public GenericFluid(String name) { - super("corium_fluid"); + super(name); } @Override diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 014ef133a..469c370a2 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -938,6 +938,7 @@ public class ModItems { public static Item can_luna; public static Item can_bepis; public static Item can_breen; + public static Item can_mug; public static Item mucho_mango; public static Item bottle_empty; public static Item bottle_nuka; @@ -3458,8 +3459,9 @@ public class ModItems { can_mrsugar = new ItemEnergy().setUnlocalizedName("can_mrsugar").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_mrsugar"); can_overcharge = new ItemEnergy().setUnlocalizedName("can_overcharge").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_overcharge"); can_luna = new ItemEnergy().setUnlocalizedName("can_luna").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_luna"); - can_bepis = new ItemEnergy().setUnlocalizedName("can_bepis").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_bepis");; + can_bepis = new ItemEnergy().setUnlocalizedName("can_bepis").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_bepis"); can_breen = new ItemEnergy().setUnlocalizedName("can_breen").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_breen"); + can_mug = new ItemEnergy().setUnlocalizedName("can_mug").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_mug"); bottle_empty = new Item().setUnlocalizedName("bottle_empty").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bottle_empty"); bottle_nuka = new ItemEnergy().setUnlocalizedName("bottle_nuka").setContainerItem(ModItems.bottle_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bottle_nuka"); bottle_cherry = new ItemEnergy().setUnlocalizedName("bottle_cherry").setContainerItem(ModItems.bottle_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bottle_cherry"); @@ -7602,6 +7604,7 @@ public class ModItems { GameRegistry.registerItem(can_luna, can_luna.getUnlocalizedName()); GameRegistry.registerItem(can_bepis, can_bepis.getUnlocalizedName()); GameRegistry.registerItem(can_breen, can_breen.getUnlocalizedName()); + GameRegistry.registerItem(can_mug, can_mug.getUnlocalizedName()); //Coffee GameRegistry.registerItem(coffee, coffee.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemStamp.java b/src/main/java/com/hbm/items/machine/ItemStamp.java index ea8c3b4c9..fe6986d90 100644 --- a/src/main/java/com/hbm/items/machine/ItemStamp.java +++ b/src/main/java/com/hbm/items/machine/ItemStamp.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import com.hbm.items.ModItems; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -29,7 +28,7 @@ public class ItemStamp extends Item { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - if(this.type == StampType.PLATE || this.type == StampType.WIRE || this.type == StampType.CIRCUIT) + if((this.type == StampType.PLATE || this.type == StampType.WIRE || this.type == StampType.CIRCUIT) && this.getMaxDamage() > 0) list.add("[CREATED USING TEMPLATE FOLDER]"); } diff --git a/src/main/java/com/hbm/items/tool/ItemCraftingDegradation.java b/src/main/java/com/hbm/items/tool/ItemCraftingDegradation.java index 58099e460..53957b239 100644 --- a/src/main/java/com/hbm/items/tool/ItemCraftingDegradation.java +++ b/src/main/java/com/hbm/items/tool/ItemCraftingDegradation.java @@ -10,6 +10,7 @@ public class ItemCraftingDegradation extends Item { public ItemCraftingDegradation(int durability) { this.setMaxStackSize(1); this.setMaxDamage(durability); + this.setNoRepair(); } @Override diff --git a/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java b/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java index 165729f45..ab1f0e139 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java +++ b/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java @@ -14,68 +14,52 @@ import net.minecraftforge.client.model.IModelCustom; public class RenderFluidTank extends TileEntitySpecialRenderer { - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); GL11.glShadeModel(GL11.GL_SMOOTH); GL11.glRotatef(180, 0F, 1F, 0F); GL11.glRotatef(90, 0F, 1F, 0F); - switch(tileEntity.getBlockMetadata()) - { - case 2: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 4: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(0, 0F, 1F, 0F); break; + switch(tileEntity.getBlockMetadata()) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; } - bindTexture(ResourceManager.tank_tex); + bindTexture(ResourceManager.tank_tex); ResourceManager.fluidtank.renderPart("Tank"); GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix(); - - renderTileEntityAt2(tileEntity, x, y, z, f); - } - - public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glPopMatrix(); + + renderTileEntityAt2(tileEntity, x, y, z, f); + } + + public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); GL11.glRotatef(180, 0F, 1F, 0F); GL11.glRotatef(90, 0F, 1F, 0F); - switch(tileEntity.getBlockMetadata()) - { - case 2: - GL11.glRotatef(90, 0F, 1F, 0F); break; - //GL11.glTranslated(0.5D, 0.0D, 0.0D); - case 4: - GL11.glRotatef(180, 0F, 1F, 0F); break; - //GL11.glTranslated(0.5D, 0.0D, 0.0D); - case 3: - GL11.glRotatef(270, 0F, 1F, 0F); break; - //GL11.glTranslated(0.5D, 0.0D, 0.0D); - case 5: - GL11.glRotatef(0, 0F, 1F, 0F); break; - //GL11.glTranslated(0.5D, 0.0D, 0.0D); + switch(tileEntity.getBlockMetadata()) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; } String s = "NONE"; if(tileEntity instanceof TileEntityMachineFluidTank) - s = ((TileEntityMachineFluidTank)tileEntity).tank.getTankType().name(); - - bindTexture(new ResourceLocation(RefStrings.MODID, "textures/models/tank_" + s + ".png")); - ResourceManager.fluidtank.renderPart("Label"); + s = ((TileEntityMachineFluidTank) tileEntity).tank.getTankType().name(); - GL11.glPopMatrix(); - } + bindTexture(new ResourceLocation(RefStrings.MODID, "textures/models/tank_label/tank_" + s + ".png")); + ResourceManager.fluidtank.renderPart("Label"); + + GL11.glPopMatrix(); + } } diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/sulfuric_acid.png b/src/main/resources/assets/hbm/textures/gui/fluids/sulfuric_acid.png new file mode 100644 index 0000000000000000000000000000000000000000..18eac93ac573b9691da3f06cbff8fdac41097b6f GIT binary patch literal 1784 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 Y0anpf7!7%*tpET307*qoM6N<$f~gAN4FCWD literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank_ASCHRAB.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_ASCHRAB.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_ASCHRAB.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_ASCHRAB.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_BALEFIRE.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_BALEFIRE.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_BALEFIRE.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_BALEFIRE.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_BIOFUEL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_BIOFUEL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_BIOFUEL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_BIOFUEL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_BIOGAS.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_BIOGAS.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_BIOGAS.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_BIOGAS.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_BITUMEN.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_BITUMEN.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_BITUMEN.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_BITUMEN.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_CARBONDIOXIDE.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_CARBONDIOXIDE.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_CARBONDIOXIDE.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_CARBONDIOXIDE.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_COALGAS.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_COALGAS.png new file mode 100644 index 0000000000000000000000000000000000000000..bf7871d698c990c2ca5e8727ab1741b6f727b87f GIT binary patch literal 2527 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 UbUeKh3IG5A07*qoM6N<$f<3up5C8xG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank_DEUTERIUM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_DEUTERIUM.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_DEUTERIUM.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_DEUTERIUM.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_DIESEL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_DIESEL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_DIESEL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_DIESEL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_DIESEL_CRACK.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_DIESEL_CRACK.png new file mode 100644 index 0000000000000000000000000000000000000000..4e0714109d3c9142da0bcf6e0ee20b01bcc1366c GIT binary patch literal 2655 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank_ETHANOL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_ETHANOL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_ETHANOL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_ETHANOL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_FRACKSOL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_FRACKSOL.png new file mode 100644 index 0000000000000000000000000000000000000000..7ff623141ea5a976033b000821d666d9e10560e9 GIT binary patch literal 3499 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 ZKLII&i#zp$c*6hy002ovPDHLkV1lBS!`%P? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank_GAS.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_GAS.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_GAS.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_GAS.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_GASOLINE.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_GASOLINE.png new file mode 100644 index 0000000000000000000000000000000000000000..0cee2a546e79c3b8dca44b0125489eb56b1c2675 GIT binary patch literal 2653 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 M07*qoM6N<$f@S@A4gdfE literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank_HEATINGOIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HEATINGOIL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_HEATINGOIL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_HEATINGOIL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_HEAVYOIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HEAVYOIL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_HEAVYOIL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_HEAVYOIL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_HEAVYWATER.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HEAVYWATER.png new file mode 100644 index 0000000000000000000000000000000000000000..7686c05db6cbbcbe07a23266a294a61be9d65297 GIT binary patch literal 2604 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank_HOTOIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HOTOIL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_HOTOIL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_HOTOIL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_HOTSTEAM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HOTSTEAM.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_HOTSTEAM.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_HOTSTEAM.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_HYDROGEN.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HYDROGEN.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_HYDROGEN.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_HYDROGEN.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_KEROSENE.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_KEROSENE.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_KEROSENE.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_KEROSENE.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_LAVA.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_LAVA.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_LAVA.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_LAVA.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_LIGHTOIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_LIGHTOIL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_LIGHTOIL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_LIGHTOIL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_LIGHTOIL_CRACK.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_LIGHTOIL_CRACK.png new file mode 100644 index 0000000000000000000000000000000000000000..b6231173dbd9de16ad6e3f2e6f2bf0a1c0dd0d3a GIT binary patch literal 2807 zcmV#z}m{i4$^>m_Py~S!jU}C}V6DrL<)g zXiTcgiq@*?)=MkvsHw`uFfrgo@zyFXe=>C{rraf=GqAefEl7D)i=Y7BL>&MUUeSdxoEbxB~DV2jUMcK8b`Lf65BF<_yg%Cu7K8xLE zZWz#N-)tT79FdjPyjCe?+{dC(#1t~YjD>?9kIT_zH0VBQ?KSVv2HssI3FKC@y?_4%cIq8wqH`{Jn!)ospb z+n8-4EFI?$p4Qd^fMVI2164A{b|#e&kPt&89CGj z<>~HPa}r;+>^@q8#wYdK;Q{wmGA1 z)0sPs#mZ$-A-H};0y&M!Ve^D4HczO^RVp6UG^lr;Gx$H5PM@Xso)hF z00bR2O}GA!L++3!jn0w?GcxL-H+?Y9!KLdudCBldh{_UXDi`lrn!(sWNnc!9nWOvJ zSABth#GCSRa~_cppvJ;scO)&1%~a&<%xSYc(;tRwMjA$0R8qNbwUoXMh{D|2^t*42 zfkU?#Ikc@u8wYoeOHX0H`&PTY)-Toi2Lcp2moJjsRaPW_PDo+%3szQqU^{mHO1m39 zQ(DkjBqae*P%Qfm697VH=eH*>R&;q{+Ofu-?myq+5b`+s&DOJk6$VrIE8dTnJ8}pT zRV?6Fqt6r<06bD*4tF;YgR!msIbX@r7xSqZ>4kFY1O3|ITQkxCKrCOrqpp~@kBk`H zy36k$>#)C=aDoxP*I;)xPr4A1fOp8{?gZShTFq*mJ$h-|YQ=FT!KbP6g-^6MTlP-c z$1Fq4`3MvlS1KS?0f0~6`{B5Sp9;}PFcL!;07#_qdWl8yHF+%LA~Njn(HY+D84Uaz zAVHEN`}vGDuyS(ORAwDy00<0s96#E0ZMP4ICA1|dG%=Hr!ybFlb7%yplMN9bZadLo zLlXcn#G<-MHO&EYp8*&Q8GH1Db2we?Q}Q7ZWImN92-8`anRx|!bI4!-6rg$@{ zLb8hiAT(q+(i@67NIK(tUS;m1Oo6PboYPm->_S)48fXkL8vvq~U{gc?E=Lrh+uHK; z%YU>fKQ5?zXgPUuMWYRklMUl=MZ1trRDeN~PD$4+Gxr$)B;v-7iy#Qvlw8saE4OZ0 zZ`od7-F}ynw}%WM;?%Y^_WS-dW<$=P=SeABfiQIX;ST{IW-)%(=S4rjfl|)hF(VB( zAcWM4Rrwza)4-aR-xMK{Kn4KBZj)W+n7PjYe*cgc01p6<$0Z~3P zV{BuUmL=Viodyn&hP>)~4&~kC!k0@PLWlE(q&3*I4Qi*jV}*jXizX^uy`j?g?&lW_ z+dPSG1Mx@3X_C$(N&x^qzdjlNnKJhoAgHsLMpH3OrhIS-o5-Kk$J(hr_{o1r#|C_F z0{}RZ;^GYIhIkW&T>Q|4(aV_c>$WFaR*5s;zZJ+~+6tn+7!L zvaQ8jlmdX;G;(w{`<^N(IR$8XEpL>S3*R7%PE0$DD{o zl-fX^GXC>r>DaoMeut&8dJjMmIkTxbb(mDzN{egS9AafTingvwuC2o~KJ!_lg~v|Z!F|L83M0Ak)~ zkNVv9BTc=#wPyDjZzy7q#-fpM&}XrZ7*DnKj{Jp=w1khP1IFghE)7Rc002i>w5Nng zR%FW-Z6gDK&#WKY>BnI(*^U7Kn3>sQw}BaGh&p@Q&UQIojshTYltnd**-uSp`hK^o z+Z~KruWue=u}CQBblFCldb(O(`Qq#IB@L$F*VE~5fdv*=V1We|SYUw#7Fb|`1(GBs zC1DB6tfpbZ6e()U7R#QL3)!`73W*;M`Yleo^^#sc@X=+RB&|r8f-?e$lSc z{r;LSW|(YlQ(2Q#kg}4nWLZ>L_4I~P;j8gwTvR$MQo+eEz65yDrM~=Nj~4>~5cYWo6Zxiz%j(yE zuW7iWbKs>RAM|XoqOLqou$N912rH{gJ~bb0Ei^{pO?K|7VqOP8L9zS=CICdt-fvG_ zthnlnjXf{dYPE0O-g9F7Zo9@m`kr8ga<0FN!0WJI8BXwM`6f-*OUoiwzxvdLs*W4g zMMmS{K~MF-R+Zon1Vb)cs?h8*_5}_kt1(ri=C^=kpvbtg(K4=pzVD;>4}U_^m>h*j zP@8e%C1BM|uL5KeO+r!)00ahmKkm4xw9MJt_l7nECqP0*hA45l_&j6&W&j35#u_W* za(9kvqjAMD0evM25jf43Gma3PV{KeTN!{IwvvZ}1JzBxzaJX7-X^)x$b`N^M$8v(n zkk5&RS!Vub0Du&CL>XU&BgkD@SF_?seU0i!J`2h_p(z%N-H{Tm*=GJ`0Kebp0b)FW z#O1Jyr(8-l!7*^g`1}Uz+h?}@V_&q4yU;$vrTFPAkhZR*nIflcZPctnfrB3ADkB6 z^@DXv&K@#dBvCCFy{Srx(AyI*UOsfPi}}j>BK~s}x-hG3negvr@dhD>v-v{%w!ydx z<_VeRn#?xycMmX%{_>e$d^VhaT&2v~BjK|u7!-mRi-f#BuV=t&HK~n07$)y!b{T3v z|NJ4d@*7pYzj9fDwZNJ*T-{6h*r&?38{1;Hz=vJ1~B0c~B002ov JPDHLkV1i>QVG{rV literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank_LPG.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_LPG.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_LPG.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_LPG.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_LUBRICANT.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_LUBRICANT.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_LUBRICANT.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_LUBRICANT.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_MERCURY.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_MERCURY.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_MERCURY.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_MERCURY.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_NAPHTHA.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_NAPHTHA.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_NAPHTHA.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_NAPHTHA.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_NAPHTHA_CRACK.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_NAPHTHA_CRACK.png new file mode 100644 index 0000000000000000000000000000000000000000..3903e7eea319ebb3a38a79ea5dac22e8f66295f9 GIT binary patch literal 2810 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 M07*qoM6N<$f?KyuZvX%Q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank_NITAN.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_NITAN.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_NITAN.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_NITAN.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_NONE.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_NONE.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_NONE.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_NONE.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_OIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_OIL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_OIL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_OIL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_OXYGEN.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_OXYGEN.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_OXYGEN.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_OXYGEN.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_PAIN.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_PAIN.png new file mode 100644 index 0000000000000000000000000000000000000000..6a188996055095c20db4f88590192e06701f0833 GIT binary patch literal 2765 zcmV;;3NrPHP)o}>*srdD}5PYsoSWU28lagD0!Ak_aVqis;pPi)!Eto;C5lv=^ry{KCTl(ptiG) zjoWx=Df<(Oq+WPrTaM#3Av!e2S^Y^;R}8I-e*REq{5KWSYyg0lx{l2TIx%yg}nJU^X}%1#%9bc<%F3q`4+6 zJg|2jbE~}i<}b_k-455Zn)^oLWLr~Q8HQRT_l`M25PakY8L*4DV%!1;&bL!81KAHf) z+RE4o0H`iLVXLQ6;~$3L5fru9ixLX}HdZFi>UPsooomT#DG&YKR?k;Cdi&heZz`#!iBoxJUW(?5&F=fJRLB`)X8_Z~*{h8|q6d+`h0SE2*_v*+({P zNoBwJm$N==cHWp)*o`LoRKL)b(ag2_<)Rxp#SI`J*glZ~Ir4IA|D~6ptWo?^UT+Gh z93niBcplI?0R|vbDFg)oluD%nPy#?yto?cdeEf8&=!1+x*%_ERv*!g9iNn45xLG1d zCE0p-yuRGw@2uel!;$cNGEP@+tpz}F<<1(s?3*AWG2&qIYY``sUyC@Ayu|Tu>K+yg zY@iDjcV$~fi{%iQRL{Wd8eW!OA5ftlN}9codBkY zSvlv}yE_)-eYVy6DhEJsSxtJ52z+q;eCN86W-EEs`KRmUw~BIkU-3b~jA)nPzZl5z z>&Yu`o~)MtVi6L$balA#D`SeVUC3(%01`nmWx{Hp!w8Q4PV>Wqof5-?of5@KO0C)14FINu>O!*Uwq^j(DX7brL98j=(jvI4 z=(ib{Tt-2sxXF%G3sbNm5_V^c(5&7^`TltZE(%7)E!BLe_m+&uis>5xmGLM8_Q zP(Y)B4hebyfJURx0YKiTkm?*anM|ROKti8VK9#)??VdUbdO+dOqQgv<0RY3nJ|Jec>#CU9oRw@6$N&q`v#nQY(^Gcx>W&_- zSu3DX=%Z~wNlZ(tMK60E^w$kdlDG%AB8Wn9nV z9p=k zc8vU8=7%w1t>hKwFWp-nqHZU91;-qH!#&F;WNMPn>9(!q{r6N&1Vy=LzAm0}ZhfH9 z^TS7GB6>yim;O{^VhY#H*OE>$RrWNsef?e4hM{&*%cK9{B}K2gMf_{&r9&k~sm1^x z>k|Wju%P19#W;&iVX|uRg;M!>0FX){0+mJ>Gr)qdrQ_5$_tpfib3Nl67rW`xFu}4W z0lC%M*2JAb231n~Ytg^6dp;ZKIy^d;0Wz~YK8;&sxjX!i&!tR#MzB?3W#Pm%g^jZ1 zPSvGb%5<0+ade9t9o0N#evG&E9QUaRxn70bN9m7*y_#ehd@n&!|azc z0Ng96J*nBQsI1Ak!ACR9oH&s_&ysuT3vNts(`Teq| zcuFV$Kq^HqKm&uWdI7>Oxsm$k{du!5m3F3elZ`1{HsK~~YrB8_LhimD@0Uj1(|8Xs z)?9}2ApNI(yT7mAe5XTMYw2hiXhRWEt8bS7=c7Z#@pt8r=o9zNlC~cepd&Pxt>vM6 z43Nx7vx3Z*0DKe_3sUtO!@v`Suw!ogIH~Q#kr+W#|2|$9Os3CT^u-rR%3~W{9^T@{ zyaE`Q1W4+8zCBsDSwL7bBd0SL>*^jDHf0%8(ke_jd4J2}2+zO-VP|LTr%|5<(Ods(3un-oJ{9x29GYfOw$6M(A5p*gcj0-@ShUE?rOJdp`- z^M~y1H~YV@J(AQDMF>o?zRF&a)()Q9MzijqA=qt+e~jlkzw{gXZ)qIfJf#1uzGhEB z(CtAT^6}Rim9c56P}MkSTTv#8N&6z`vDO{vtu@|^T;niNOwI`~5p@T8X^l4{*EmcR zPvjOb8WU1?ps&`rGD3~R1Ty(nfC;EO_^n$1OH8^I;PKTRjE9yfVphf;^OLHNi>0{n z{k2UQ^(fOX+YxFUvN{ew%4q0@-jubHvg;N7Oju; z42$vC_~(c5)1rdo%9%BA4lBk32F!I%@*%1k2d+j-FTZj^w}A!>7%*Vq|Cav(u8HW? TEHCx<00000NkvXXu0mjfV}eR) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank_PETROIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_PETROIL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_PETROIL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_PETROIL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_PETROIL_LEADED.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_PETROIL_LEADED.png new file mode 100644 index 0000000000000000000000000000000000000000..bdef4b0ad439bcc674afa4abe38f5628c99412e2 GIT binary patch literal 2188 zcmV;72y^#|P)Nkl%|*yh<}o$**oW+b3FIx+CN9V~jU%MwF@>?023IH~2s~{Cj zbtJFMyqZl-?p91|xE4Q_tM_7nT5SiG1=Ae%i_F&9A1?U(-XF{-Msv>2*+l{X0z$C@ z%X>Epfv!hdyRJUgEbw>NV!mE_R}*Hn9RL96@nho?iS32*G0Tw872|v@54Z?8SVh^Q zXb<0iyzC@+rTtN z09b~qYL>INGji?`a!3JD?*q^7f`=9`BS! z+`iEL3;;_?yp*%-EV9XG3;yW$8E0fmkc+RIF>t&ZQ-*FGhl9En3>U4%kDBy0FpZG` zmVyKwqQKk*6d~tQ&jSFo%OmQRRr|hrM;pq)=6)@X^af8NT~<_lo0x= zn}Pt)5L<8DE1q+o6GPjOR35L!6vtD2002`TTdp59>uq2ziVWZp1KSpLlneEQoY=gS z9$M(V%g>_^08AzQ%1ZfHFTEFn`ey*jA$VM3f3bY5sLg1)IdE2nbGaSvt18MbSSaY) zM@16i1rK#Q0BDKBkBw)HXU@v_+2)?!QGw!Jf+%cFYSN)f+nmeAyZbDf_w(+^ErDS0 z$20&~8F?lp{qB5U7xBY}QM29^pm%-$qFc-0zyVT{D_vJZ{R4n+xgy%p@j;76S0tcW%k<@)w5t*|xNhs>&uL~Y>2P-sv9aGYe zDs4wMv~@*~Rg773HZ?xDHEZJhRK18Fsq)%>xq3e(OD%p$rj{URj5EN3(C~=9P4v`idg$hex~vY*Ty4IkGva;ZV^~PnZtJCU*9ft!-NcsbDB4G&%W7CY{)=73_&x zys4MoYFTJe%L8O^-~j1e-)~nN1a$7 zmyfH`BC zH99Mv0cg(EJ-he-KnS5&fpz$<_BQoC-Vy70+fBp2(l!Brafny)9M?@#lt4geLUAJJ z3~cs=uXrjJYyYo*)TEUl8tOX}XCJnxi?P+Y{)1sJ&~$(SVcMR1ZHJ zjrvsqb8S-=?Fc%39p4Rk-P;M*+!OLo>`1b<*M)qO-x^CBPXhqu?)h>w z?0u33fI>Ero}S#L7BI%TT5b*o#2qv(21C)V7xKeHy{ZMZZqKL=lq!MJ^-}Wn3xKk= zsk~~v$$R>~;-wMbot{l7f2NDHVHFMO<5J!xtQnh|fI?n6sx8z2Qq;1NntcPvLXitE zbG_@b0wJ8k>A3;v)YAaqZHoMi0RTIjPmF%BC2iWXO(0TopJHx28HV#N)V-G+-H+v27dX>@}$jx*FTCs=~Gm+eQJH?coIgP+`&SA~ym+F&F>)nZ=*O zNRR(PvXBD^oNnLzXOs&_H6Ma%ku6cz7eNdNWiigM)7SMqfk6ZSOkMr3Lg-VpVa*Gn zXpUwBHsfq|`rCI16kGt1&&%%u09Z#Wi`niSBd@%F-h4Zy8wQ5pz%_*B+G_IQBBFi) z;OxAcY=3`2kDGwa0fggSeSlsmPXav0p$7nL z)3~VGyK13+X8?WT!}#ct>qm#*=^Hx!KVf8S`1YJ$JU`{GG}_3)!GQxLp4I;X0N}&x zeQx&FGxv*A8C9FzUTAOYeLj|SluzgUtvdt?B49&PGW+Z9?r!9Bw-Ob9pNFFaQ*#!MzjH z&R<5GJUc1I+Y)H@R-Q{NIX4sk~r$%ne$nw90JXHVTL&x@ zHg&We?bu4kx~@b0qg#cvHj}1Ft-7)S1+81zhC0evS)dK;Ky-j0fkMa&33(%N?D*~C z_-vnFZhsIUPF!%Qv5oLYI?29!e!qL}?(6&A%VQwJJq?kXwF*dOweG2++4AQUS)!Q~ z84+?0Ux%~Zxv%##PlGQEZlYZGc-ebZm4fd90bJhJRnaqoi<7%FuB&J?m*61`T2D5; zYo8x$wXrnU=fz@R_;}N9$D)b4V2|aK)9*VUW+Mn)lj&EM|FyD$SOcr=T+<&%stxrO zA6Cr7w{ErzyhpoUJMrJZuWq%g?lfd7R;pfF)KK?m){bl=J%^?VB}oaSVuQTKI9s+s z6h<&gEYs-o%LVmUztG65ll?damajt<8J1Noll~@^9ukQ#>1&i}^~DS5pAi6py(33D zj(Zz8LO@CkvKmc@@iPD)C7-Q*Rx5yr=OSYf5hJPGw>bDVG4?|w3> z`nb^8R3QP`y!@Y*_jEU1ycGT@R#%Ru%P*fkjyC{+D9%|{yI8gr;4t`)D^FP5=mUVT zCwL{H{%@1y7l4w=7mp7;-cHv6>*e5K0C07WHV#b@O9*4N_-TNL>xktQZgJjg2C+h8 ztPrlTwS;yg)K@UXI*0vd;}cWJ{ibo3{hfgd8;g-CT{(Q6%=l+Q9X4J4#3Nw!on!21 zPmJNjko+OQ6}ZfX5dZ-764S5mTcUYgqb5zUq=ZSm*q}xcLSuf*=gglht)agG1hh4( zXA-K6DMBYScR+Z}eA^_n|=D=`(XI!5%?*#x5d7Ak}*(gh>FN3bSZqtmO zh1aK|9+MtbQ*`X8z5QSA4FLdDS?*rGlKXn;EP5>|Q|gOq=^xsT1-1%i zs2?63)SLGiCbgGUsMg|B|Emczbd%f1SU3(3ZoXnNeIs9^D$Xs&g9-DIWKwbl zm`IrM_6_W_e%BTR3jk8BXgUDsDimu4H*2U>m6jSYHyIvd!gk9u(_cEV4hq>lpnB>HT+QnK5QUKuCkPRZ0BBzvm7yy{2t}SPqLw~s5n3PlI7xH`c z6eZ26kkoe#`A$W3E}|5=Y0^bew{t$u;kJj`Zfc4WO0@=Yb@W3B9)Xd-MQ+lAscVG0 z1`l?3D;v!v2KL^(|LCU^E5v5ickr?ArKmo1+VZOP+GA1kItKSQ{oVceO?~OJDr+`mwM5VK zqx

    Ag;LeNi*Z;gJ{fpUYXMAX7J-eif2F1Q4U61AU({4bEZiEXVO4p6A11FK1=i z>>sr5>R&kEKu5M&zM2Gp(XoM^828Q2%f62R04ilcN{0aeyxrc`d7AruDm`S#kRd~c z3>h+H$dDmJh756%nn+k2(9^Vw3g)X{)D_T+Xff0gHsoN3z0LLu&OJTn{eK34tffT_ zrDoA8T1M)H6d~ogu-EVKwY%C}AM~B_yyXkQcdfrK8~ut`7f(biaeF24r2Jh#ERdy>N+=f@l%<+SiWew;eoaT`Nbi$tge8=SR1gFqAZejeYE;b4 zTUyXCZ@uoQQULl+d%fEuVrlpIQcz-isA{R~4GI9yvLiz$nBTeW!8Tqh%2pIA7t1Wn znJJCzuJ-dExt|S5=qyd0ZlkG~dQgz7t1GE?J=Jn16dl@#H~N*ph*&z4b_I}kzxq`g z0D@k&V|!oi;3z+EZJD*j5jzGJ;22v!dkkRV><%|dU!KP31%ybIFIj*yp6CLIH~N*p zh*&z4UIjp_mD)UFJ^%zS*!N64_;C~Fxkv;d2p}Se7(?86^eZr7R>%_^3Qd0F7q4!_ z+v<|abQ+mbU$#QE&9;|W^`$+hkn}15C6zB8KWMBy5dHdACe~*esksCqVEesC*#Jhb zFCz(oOd`~VPueSidq-tCuax`%P&^qi}&oBxvD zF;O0|IWBa!1b5z1x8q!mh{<+V*HF*smmA&;TX8NK>rDjdRREsQPypa%03pq$&6xBb zk+`ut+M0I_FJL%Ky=aR!`gM;)#M0|F(C>1&#(&w=tgLl;N=(U&#AMKVvT188aqe7j zHvk}8WzH`aB=;cPr4h08DgXdOCp^Cm0RSbJ&V1T*vb09=18sryeocQ+y!?2Usj z3^C{jgfKjk`%bnvMp}0~`lX1P=xWjA{{Y0Ro50nGSfuebHalgc*AM`JJKz78)@h{+ zD{JYEq(Wvad{nl*Fz&`)&!t1mPjvOFeUwb4pYee6m-a*K<|s|P(XV?XB9?Y%006Kb z?E2BEy|z`B9{(o+f5gS}d?dn!$NVE~tNpC&UFRqUzo>1fTpvR zW^~hJo3CkR)VM5|Y19}Kr*6Jx98-r1Dx%X_5fQL}Vo=*cOL-RPlm7OHV(3c>^kK1| zq)C70o_l-l?|gsvo?m}0fEO=bym)y}LAg7CcM%dJh{xrQPhe2V93lZrGwL;cT6J${ zmr^2@HMc(OH6R*y$LJ`WCx8hbrL0?#dB?}ZsDzvQx5r*Pi_-HydBq?ik zT5{r7d_SVV=85U=(aRgFu2fgvK3XA`o>Lp4f7o+*hrqf!0K4%C+VM zacn`_EVdwRR%GdpjR(r)KaFNu?gl-yi-&{vrwFDj+K|6;sVJ6(n`GG@O3hxj{JLGq zH$e_!vHZM)qI4T$UjVPcFk*Of7R@ON!U1`(Juvf=Es1`Zuwf6_EUGM1K&`_9bQ7Ml z1z1H3a&g7^7v23*K;y7@63LfDX0q5^ZX%t4rkQ)Am{UV%rrazzRNlG^007Y8*!Wo1 zGK>A**lBor=UQRaGihl@pSBgj5by-Dum89JUOYcCE;rPl7%r)*IPQW8Ivo!efC}ob zpZd|FsKhbJg7n4T&CB3#B$+gzARsa(7s{``5&(-A5kv+*^HG~`?B90$hJ3rZ{aM}p zqPy2lZ}APDoIz=Af9%kyxCsvzfDQEReGR31H(d$X6F)Z$mu=F<<_g16fT}|P0V<76 zwd@QnGI_<@hVN{uE$eh_#5UQwtq?Ie-n_=4cWz_429QeH?pYYoG%S?_OaK7TX;oSa z2ONaP#C=9Xx&Pb@B!BDXHK>8an+syJxP6k&ghV1SEv-7x8{pL!IjyofML+1xJ!p|j za`Qi(b2*wzO>ky>TelS=121cB0I!oj;O7Jpj9mdxqQ@mg(sM2Bn(nSD9rV6>f3LH$ zPHp8@4h?kv^cnNM+$LJTI=?bIRk)TzM*BN5yn%$id07*InSHPb9L1Qa0ZcYx&yZu#AT~T}3#ME{F<(Z?ztc7{=|N6ie zGtp*O3=Pi}W-nS8H7#$-qkm3ZxK#GFL=7Dy4&4fGR)vA(-~8CdN--Kd=UIT&@rDBe zT@Mc*{pDQEQmf6x0J<=J_7BsNB33c+D9f7zGYsvbr+*$fF-_c!NJkoxy~#A+`yIIr zc=!rnCx`}-{derwlf^Y_ZTe_rU5~CD+E88Qznv#c&5Msq%olKd5^S9yEHg25{>QSj z2M%9LZ9`y0SEa3@&LZK1>i};JU_VA}TeqbC{sqyk8@sDp`l{^dgJ_kiMp4nhMp4m0 zqJMaJR6_a}DG8HT_~F4~RlrTiN|_o~o^!rIe{nQ%4pr(*7=;_sfaVA*dU@@ZM79%Kj; z1m{4*lTis^0Bd`^Gm{VC@dD_E$Cr<+A5l#)42(UEEjLe|S-|;rxio?RCeIiseylKn zCl328XD8eo4;O$7(N?LHDv$yJ!cFXW!jJ`{J-FlQ2k;62(A?yNsVsTKgPNvODg#)4 zGyEEqZ$@x11NasVeZ6gtipAAeKY+^x-~&;!SM3YXfoe$C4pGzbzwfVfc0|0yxhpf{ zD4%EKwC;W0@c80$spOtq+0~%dYPxj>M1vvHefQc1KPYaW-g8R{^^T3owY=9g0DF93?1-)aM2*Pq9xMF4r0IJ{$K-0> zYXL|~cWm1GB&j$qE`IqW0Y7IP6~}pN6=vwx%AP#9RB^jxPsIz>zpjeYnRx#gG6)i5 z0*}KU7sa6a1d<4NIu>O_8}yo9tyF9m&;QNwqK3`^ R#g700002ovPDHLkV1fhSNc8{! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank_STEAM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_STEAM.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_STEAM.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_STEAM.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_SULFURIC_ACID.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_SULFURIC_ACID.png new file mode 100644 index 0000000000000000000000000000000000000000..5f67bb26daa1dd34ad80ade311618cf74af63451 GIT binary patch literal 2331 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 BgWCWA literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank_SUPERHOTSTEAM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_SUPERHOTSTEAM.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_SUPERHOTSTEAM.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_SUPERHOTSTEAM.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_TRITIUM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_TRITIUM.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_TRITIUM.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_TRITIUM.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_UF6.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_UF6.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_UF6.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_UF6.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_ULTRAHOTSTEAM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_ULTRAHOTSTEAM.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_ULTRAHOTSTEAM.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_ULTRAHOTSTEAM.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_UNSATURATEDS.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_UNSATURATEDS.png new file mode 100644 index 0000000000000000000000000000000000000000..2874679cb012ccfc34878b2aa4f5cb39f23826ae GIT binary patch literal 3514 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_WASTEFLUID.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_WASTEFLUID.png new file mode 100644 index 0000000000000000000000000000000000000000..028463ab46f3f2ffbe8e1ff5cb1382e9d7d841fc GIT binary patch literal 4090 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_WASTEGAS.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_WASTEGAS.png new file mode 100644 index 0000000000000000000000000000000000000000..881c6f3382b22425495f6a7a4bc4cb9bb4aab4d8 GIT binary patch literal 4990 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%0AMJCVL}3cTK4nUdQ<}a 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 Date: Wed, 30 Mar 2022 16:10:17 +0200 Subject: [PATCH 5/7] classic cable --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../com/hbm/blocks/network/BlockCable.java | 8 +++ src/main/java/com/hbm/main/ClientProxy.java | 1 + .../hbm/render/block/RenderCableClassic.java | 66 ++++++++++++++++++ .../hbm/textures/blocks/block_smore_side.png | Bin 219 -> 210 bytes .../hbm/textures/blocks/red_cable_classic.png | Bin 0 -> 229 bytes 6 files changed, 78 insertions(+) create mode 100644 src/main/java/com/hbm/render/block/RenderCableClassic.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/red_cable_classic.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index d355520dd..5420a428a 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -720,6 +720,7 @@ public class ModBlocks { public static Block red_wire_coated; public static Block red_cable; + public static Block red_cable_classic; public static Block red_connector; public static Block red_pylon; public static Block red_pylon_large; @@ -1847,6 +1848,7 @@ public class ModBlocks { red_wire_coated = new WireCoated(Material.iron).setBlockName("red_wire_coated").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_wire_coated"); red_cable = new BlockCable(Material.iron).setBlockName("red_cable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_neo"); + red_cable_classic = new BlockCable(Material.iron).setBlockName("red_cable_classic").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_cable_classic"); rf_cable = new BlockRFCable(Material.iron).setBlockName("rf_cable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rf_cable_icon"); red_connector = new ConnectorRedWire(Material.iron).setBlockName("red_connector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector"); red_pylon = new PylonRedWire(Material.iron).setBlockName("red_pylon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); @@ -2963,6 +2965,7 @@ public class ModBlocks { GameRegistry.registerBlock(pribris_digamma, pribris_digamma.getUnlocalizedName()); GameRegistry.registerBlock(red_cable, red_cable.getUnlocalizedName()); + GameRegistry.registerBlock(red_cable_classic, red_cable_classic.getUnlocalizedName()); GameRegistry.registerBlock(red_wire_coated, red_wire_coated.getUnlocalizedName()); GameRegistry.registerBlock(red_connector, ItemBlockBase.class, red_connector.getUnlocalizedName()); GameRegistry.registerBlock(red_pylon, ItemBlockBase.class, red_pylon.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/network/BlockCable.java b/src/main/java/com/hbm/blocks/network/BlockCable.java index 85a55ff90..ffc7c7f36 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCable.java +++ b/src/main/java/com/hbm/blocks/network/BlockCable.java @@ -1,9 +1,11 @@ package com.hbm.blocks.network; +import com.hbm.blocks.ModBlocks; import com.hbm.blocks.test.TestConductor; import com.hbm.lib.Library; import com.hbm.tileentity.network.TileEntityCableBaseNT; +import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.tileentity.TileEntity; @@ -21,9 +23,15 @@ public class BlockCable extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityCableBaseNT(); } + + public static int renderIDClassic = RenderingRegistry.getNextAvailableRenderId(); @Override public int getRenderType() { + + if(this == ModBlocks.red_cable_classic) + return renderIDClassic; + return TestConductor.renderID; } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 21cb9e94c..b24f96d5c 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -679,6 +679,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderAnvil()); RenderingRegistry.registerBlockHandler(new RenderCrystal()); RenderingRegistry.registerBlockHandler(new RenderTestCable()); + RenderingRegistry.registerBlockHandler(new RenderCableClassic()); RenderingRegistry.registerBlockHandler(new RenderTestPipe()); RenderingRegistry.registerBlockHandler(new RenderBlockCT()); RenderingRegistry.registerBlockHandler(new RenderDetCord()); diff --git a/src/main/java/com/hbm/render/block/RenderCableClassic.java b/src/main/java/com/hbm/render/block/RenderCableClassic.java new file mode 100644 index 000000000..1ccfbcd7b --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderCableClassic.java @@ -0,0 +1,66 @@ +package com.hbm.render.block; + +import com.hbm.blocks.network.BlockCable; +import com.hbm.lib.Library; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class RenderCableClassic implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + IIcon iicon = block.getIcon(0, 0); + tessellator.setColorOpaque_F(1, 1, 1); + + if(renderer.hasOverrideBlockTexture()) { + iicon = renderer.overrideBlockTexture; + } + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + boolean pX = Library.canConnect(world, x + 1, y, z, Library.NEG_X); + boolean nX = Library.canConnect(world, x - 1, y, z, Library.POS_X); + boolean pY = Library.canConnect(world, x, y + 1, z, Library.NEG_Y); + boolean nY = Library.canConnect(world, x, y - 1, z, Library.POS_Y); + boolean pZ = Library.canConnect(world, x, y, z + 1, Library.NEG_Z); + boolean nZ = Library.canConnect(world, x, y, z - 1, Library.POS_Z); + + double spanU = iicon.getMaxU() - iicon.getMinU(); + double spanV = iicon.getMaxV() - iicon.getMinV(); + double px = 0.0625D; + + double uv_cL = iicon.getMinU(); + double uv_cR = iicon.getMinU() + spanU * 5 / px; + double uv_cT = iicon.getMaxV(); + double uv_cB = iicon.getMaxV() - spanV * 5 / px; + + double pos_min = px * 5.5D; + double pos_max = px * 10.5D; + + //TODO: all that manual tessellator crap + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return false; + } + + @Override + public int getRenderId() { + return BlockCable.renderIDClassic; + } + +} diff --git a/src/main/resources/assets/hbm/textures/blocks/block_smore_side.png b/src/main/resources/assets/hbm/textures/blocks/block_smore_side.png index f00014e1a9576adfb3f144564b0e1373131cce43..071a015ff380e23f1f6c725fff0c300713cc0474 100644 GIT binary patch delta 166 zcmV;X09pUr0n!1GG=GUnL_t(IjqQ-J2|_^-MCU+EG!YaG6v5Qsj7+S<0t{`yDy+lS zu7>@$vt#hTAPU!jKbp5Q(Z2M2TvVN?9;i2}_VAut4L$Pg%iA*|+8 zwDwd=k(r_EI+z*0Ip_S-eR8^APjUuGfed)`{O;Dv8Cv_~cpum`e;gf*4*tZ!3pmQP UM3R^#tpET307*qoM6N<$g4P*N3;+NC delta 175 zcmV;g08szZ0owtPG=GvwL_t(IjqQ-J4FW+71oxyD5h)=ee}W??padd{pap7pi7u#z zgaU{zL*g^vd2ND!Bm~kmz(+e?JMeC}bO$d=6g3njbkt!s^v@nj1L+_QY6HK$aNI7P z=Ab#~qnd*b&>V~T47GhoDY=Ls=L`|SH^&%%yiab4-uc`;v+kNU_ d>fj$bcmbDGz$<1#rSbp(002ovPDHLkV1i8jNwEL` diff --git a/src/main/resources/assets/hbm/textures/blocks/red_cable_classic.png b/src/main/resources/assets/hbm/textures/blocks/red_cable_classic.png new file mode 100644 index 0000000000000000000000000000000000000000..0990a1e90594503c50498196e876f410cd2c6e9e GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfs@(Xnud#4*_<~vbo;)Eh3UXYAxX9s*%t5lLPEE)%qi|Tv0IN}QjnAAt+M9t327DY zITiot=(9cMsI5P0nK7$vj>);uK&AS(ISUz7brmbCn afcNi8eNEM?Q-RK8VDNPHb6Mw<&;$U!cv6x8 literal 0 HcmV?d00001 From c1b9ef3e173387b509b614257986d6c27e8f1e0b Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 30 Mar 2022 23:23:38 +0200 Subject: [PATCH 6/7] fixed energy voids, sulfuric acid puddles --- .../java/api/hbm/energy/IEnergyConductor.java | 10 ++ .../java/api/hbm/energy/IEnergyConnector.java | 2 +- src/main/java/api/hbm/energy/ILoadedTile.java | 6 + .../com/hbm/blocks/network/CableDiode.java | 3 +- .../missile/EntityMissileAntiBallistic.java | 119 +++++++++--------- src/main/java/com/hbm/main/MainRegistry.java | 4 +- .../java/com/hbm/main/ResourceManager.java | 2 +- .../hbm/tileentity/TileEntityLoadedBase.java | 20 +++ .../hbm/tileentity/TileEntityMachineBase.java | 3 +- .../hbm/tileentity/TileEntityProxyBase.java | 2 +- .../hbm/tileentity/TileEntityTickingBase.java | 2 +- .../bomb/TileEntityCompactLauncher.java | 3 +- .../tileentity/bomb/TileEntityLaunchPad.java | 3 +- .../bomb/TileEntityLaunchTable.java | 3 +- .../tileentity/machine/TileEntityChungus.java | 3 +- .../machine/TileEntityCoreAdvanced.java | 3 +- .../machine/TileEntityCoreTitanium.java | 3 +- .../machine/TileEntityFWatzCore.java | 6 +- .../machine/TileEntityForceField.java | 3 +- .../machine/TileEntityFusionMultiblock.java | 3 - .../tileentity/machine/TileEntityGeiger.java | 1 - .../machine/TileEntityHadronPower.java | 4 +- .../machine/TileEntityMachineAmgen.java | 9 +- .../machine/TileEntityMachineArcFurnace.java | 3 +- .../TileEntityMachineBoilerElectric.java | 3 +- .../machine/TileEntityMachineCMBFactory.java | 7 +- .../TileEntityMachineChemplantBase.java | 1 - .../machine/TileEntityMachineCoal.java | 7 +- .../machine/TileEntityMachineDetector.java | 5 +- .../machine/TileEntityMachineEPress.java | 4 +- .../TileEntityMachineElectricFurnace.java | 4 +- .../machine/TileEntityMachineMiniRTG.java | 3 +- .../machine/TileEntityMachineRTG.java | 4 +- .../machine/TileEntityMachineSPP.java | 7 +- .../TileEntityMachineSeleniumEngine.java | 6 +- .../machine/TileEntityMachineShredder.java | 5 +- .../machine/TileEntityMachineTeleporter.java | 3 +- .../machine/TileEntityMachineTurbine.java | 4 +- .../machine/TileEntityMachineTurbofan.java | 4 +- .../machine/TileEntityRadiobox.java | 5 +- .../machine/TileEntityWatzCore.java | 4 +- .../oil/TileEntityMachineGasFlare.java | 5 +- .../network/TileEntityConnector.java | 1 - .../network/TileEntityConverterHeRf.java | 3 +- .../network/TileEntityConverterRfHe.java | 4 +- .../java/com/hbm/world/feature/OreCave.java | 41 +++++- .../models/tank_label/tank_ENDERJUICE.png | Bin 2051 -> 2091 bytes 47 files changed, 204 insertions(+), 146 deletions(-) create mode 100644 src/main/java/api/hbm/energy/ILoadedTile.java create mode 100644 src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java diff --git a/src/main/java/api/hbm/energy/IEnergyConductor.java b/src/main/java/api/hbm/energy/IEnergyConductor.java index 572ef0dc8..1744c5f79 100644 --- a/src/main/java/api/hbm/energy/IEnergyConductor.java +++ b/src/main/java/api/hbm/energy/IEnergyConductor.java @@ -94,6 +94,16 @@ public interface IEnergyConductor extends IEnergyConnector { return pos; } + + /** + * Since isLoaded is only currently used for weeding out unwanted subscribers, and cables shouldn't (although technically can) be + * subscribers, we just default to true because I don't feel like wasting time implementing things that we don't actually need. + * Perhaps this indicates a minor flaw in the new API, but I physically lack the ability to worry about it. + */ + @Override + public default boolean isLoaded() { + return true; + } //TODO: check if this standard implementation doesn't break anything (it shouldn't but right now it's a bit redundant) also: remove duplicate implementations @Override diff --git a/src/main/java/api/hbm/energy/IEnergyConnector.java b/src/main/java/api/hbm/energy/IEnergyConnector.java index 87a0f0a88..40ad4e647 100644 --- a/src/main/java/api/hbm/energy/IEnergyConnector.java +++ b/src/main/java/api/hbm/energy/IEnergyConnector.java @@ -14,7 +14,7 @@ import net.minecraftforge.common.util.ForgeDirection; * This is mean for TILE ENTITIES * @author hbm */ -public interface IEnergyConnector { +public interface IEnergyConnector extends ILoadedTile { /** * Returns the amount of power that remains in the source after transfer diff --git a/src/main/java/api/hbm/energy/ILoadedTile.java b/src/main/java/api/hbm/energy/ILoadedTile.java new file mode 100644 index 000000000..1f6d0f88b --- /dev/null +++ b/src/main/java/api/hbm/energy/ILoadedTile.java @@ -0,0 +1,6 @@ +package api.hbm.energy; + +public interface ILoadedTile { + + public boolean isLoaded(); +} diff --git a/src/main/java/com/hbm/blocks/network/CableDiode.java b/src/main/java/com/hbm/blocks/network/CableDiode.java index 8e260d42b..25da7bb68 100644 --- a/src/main/java/com/hbm/blocks/network/CableDiode.java +++ b/src/main/java/com/hbm/blocks/network/CableDiode.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; @@ -119,7 +120,7 @@ public class CableDiode extends BlockContainer implements ILookOverlay, IToolabl return new TileEntityDiode(); } - public static class TileEntityDiode extends TileEntity implements IEnergyUser { + public static class TileEntityDiode extends TileEntityLoadedBase implements IEnergyUser { @Override public void readFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java index 8090eae78..b350038be 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -17,29 +17,29 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; public class EntityMissileAntiBallistic extends Entity implements IRadarDetectable { - + int activationTimer; public EntityMissileAntiBallistic(World p_i1582_1_) { super(p_i1582_1_); } - + @Override - public void onUpdate() { - + public void onUpdate() { + if(activationTimer < 40) { activationTimer++; - + motionY = 1.5D; this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); - this.rotation(); - - if(!this.worldObj.isRemote) + this.rotation(); + + if(!this.worldObj.isRemote && this.posY < 400) this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); - + } else { - + if(activationTimer == 40) { ExplosionLarge.spawnParticlesRadial(worldObj, posX, posY, posZ, 15); activationTimer = 100; @@ -50,9 +50,9 @@ public class EntityMissileAntiBallistic extends Entity implements IRadarDetectab targetMissile(); this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); - this.rotation(); - - if(!this.worldObj.isRemote) + this.rotation(); + + if(!this.worldObj.isRemote && this.posY < 400) this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 5, posY - 5, posZ - 5, posX + 5, posY + 5, posZ + 5)); @@ -66,70 +66,66 @@ public class EntityMissileAntiBallistic extends Entity implements IRadarDetectab } } } + + if(this.posY > 2000) + this.setDead(); - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air && - this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.water && - this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.flowing_water) { - - if(!this.worldObj.isRemote) - { + if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.water && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.flowing_water) { + + if(!this.worldObj.isRemote) { ExplosionLarge.explode(worldObj, posX, posY, posZ, 10F, true, true, true); } this.setDead(); return; - } + } - } - - protected void rotation() { - float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - for (this.rotationPitch = (float)(Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) - { - ; - } - - while (this.rotationPitch - this.prevRotationPitch >= 180.0F) - { - this.prevRotationPitch += 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw < -180.0F) - { - this.prevRotationYaw -= 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw >= 180.0F) - { - this.prevRotationYaw += 360.0F; - } } - + + protected void rotation() { + float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + + for(this.rotationPitch = (float) (Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { + ; + } + + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { + this.prevRotationPitch += 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw < -180.0F) { + this.prevRotationYaw -= 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { + this.prevRotationYaw += 360.0F; + } + } + private void targetMissile() { - + List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 500, 0, posZ - 500, posX + 500, 5000, posZ + 500)); - + Entity target = null; double closest = 1000D; - + for(Entity e : list) { if(e instanceof EntityMissileBaseAdvanced || e instanceof EntityMissileCustom) { double dis = Math.sqrt(Math.pow(e.posX - posX, 2) + Math.pow(e.posY - posY, 2) + Math.pow(e.posZ - posZ, 2)); - + if(dis < closest) { closest = dis; target = e; } } } - + if(target != null) { - + Vec3 vec = Vec3.createVectorHelper(target.posX - posX, target.posY - posY, target.posZ - posZ); vec.normalize(); - + this.motionX = vec.xCoord * 0.065D; this.motionY = vec.yCoord * 0.065D; this.motionZ = vec.zCoord * 0.065D; @@ -138,25 +134,24 @@ public class EntityMissileAntiBallistic extends Entity implements IRadarDetectab @Override protected void entityInit() { - + } @Override protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { - + } @Override protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { - + } - - @Override + + @Override @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 500000; - } + public boolean isInRangeToRenderDist(double distance) { + return distance < 500000; + } @Override public RadarTargetType getTargetType() { diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index daaecb10b..0297c2d0a 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -975,8 +975,8 @@ public class MainRegistry { //expand for the largest entity we have (currently Quackos who is 17.5m in diameter, that's one fat duck) World.MAX_ENTITY_RADIUS = Math.max(World.MAX_ENTITY_RADIUS, 8.75); - new OreCave(ModBlocks.stone_resource, 0).setThreshold(1.5D).setRangeMult(20).setYLevel(30).setMaxRange(20); //sulfur - new OreCave(ModBlocks.stone_resource, 1).setThreshold(1.75D).setRangeMult(20).setYLevel(25).setMaxRange(20); //asbestos + new OreCave(ModBlocks.stone_resource, 0).setThreshold(1.5D).setRangeMult(20).setYLevel(30).setMaxRange(20).withFluid(ModBlocks.sulfuric_acid_block); //sulfur + new OreCave(ModBlocks.stone_resource, 1).setThreshold(1.75D).setRangeMult(20).setYLevel(25).setMaxRange(20); //asbestos //new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); } diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 8c32969af..430a16e73 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -366,7 +366,7 @@ public class ResourceManager { //Tank public static final ResourceLocation tank_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank.png"); - public static final ResourceLocation tank_label_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank_NONE.png"); + public static final ResourceLocation tank_label_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank_label/tank_NONE.png"); public static final ResourceLocation bat9000_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/bat9000.png"); public static final ResourceLocation orbus_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/orbus.png"); diff --git a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java new file mode 100644 index 000000000..baec2d8d4 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java @@ -0,0 +1,20 @@ +package com.hbm.tileentity; + +import api.hbm.energy.ILoadedTile; +import net.minecraft.tileentity.TileEntity; + +public class TileEntityLoadedBase extends TileEntity implements ILoadedTile { + + public boolean isLoaded = true; + + @Override + public boolean isLoaded() { + return isLoaded; + } + + @Override + public void onChunkUnload() { + super.onChunkUnload(); + this.isLoaded = false; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index c9542a9dc..de2396047 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -5,6 +5,7 @@ import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import api.hbm.energy.ILoadedTile; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; @@ -15,7 +16,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidTank; -public abstract class TileEntityMachineBase extends TileEntity implements ISidedInventory, INBTPacketReceiver { +public abstract class TileEntityMachineBase extends TileEntityLoadedBase implements ISidedInventory, INBTPacketReceiver { public ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java b/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java index c1f3c07f7..0bcf59043 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java @@ -8,7 +8,7 @@ import com.hbm.tileentity.machine.TileEntityHadron; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityProxyBase extends TileEntity { +public class TileEntityProxyBase extends TileEntityLoadedBase { public boolean canUpdate() { return false; diff --git a/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java b/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java index 4d4bf2d13..cc82f97ee 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java @@ -8,7 +8,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.fluids.FluidTank; -public abstract class TileEntityTickingBase extends TileEntity implements INBTPacketReceiver { +public abstract class TileEntityTickingBase extends TileEntityLoadedBase implements INBTPacketReceiver { public TileEntityTickingBase() { } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java index d974caa5c..cbe1fac9c 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java @@ -21,6 +21,7 @@ import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEMissileMultipartPacket; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import api.hbm.item.IDesignatorItem; @@ -39,7 +40,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCompactLauncher extends TileEntity implements ISidedInventory, IFluidContainer, IFluidAcceptor, IEnergyUser { +public class TileEntityCompactLauncher extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index 1182aa426..c17fe69f8 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -4,6 +4,7 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEMissilePacket; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -18,7 +19,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityLaunchPad extends TileEntity implements ISidedInventory, IEnergyUser { +public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser { public ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 12c4130e4..a001e3748 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -21,6 +21,7 @@ import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEMissileMultipartPacket; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import api.hbm.item.IDesignatorItem; @@ -36,7 +37,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityLaunchTable extends TileEntity implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor { +public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index ed3ab7486..eb7c80bb8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -15,6 +15,7 @@ import com.hbm.lib.Library; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -25,7 +26,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityChungus extends TileEntity implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver { +public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver { public long power; public static final long maxPower = 100000000000L; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreAdvanced.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreAdvanced.java index e6605700f..a945201d1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreAdvanced.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreAdvanced.java @@ -4,6 +4,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IFactory; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -17,7 +18,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCoreAdvanced extends TileEntity implements ISidedInventory, IFactory, IEnergyUser { +public class TileEntityCoreAdvanced extends TileEntityLoadedBase implements ISidedInventory, IFactory, IEnergyUser { public int progress = 0; public long power = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreTitanium.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreTitanium.java index 0c5ec6e28..21c51712d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreTitanium.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreTitanium.java @@ -5,6 +5,7 @@ import com.hbm.interfaces.IFactory; import com.hbm.interfaces.Spaghetti; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -18,7 +19,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCoreTitanium extends TileEntity implements ISidedInventory, IFactory, IEnergyUser { +public class TileEntityCoreTitanium extends TileEntityLoadedBase implements ISidedInventory, IFactory, IEnergyUser { public int progress = 0; public long power = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFWatzCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFWatzCore.java index f20c67ce3..e5f462543 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFWatzCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFWatzCore.java @@ -1,7 +1,5 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; import java.util.Random; import com.hbm.interfaces.IFluidAcceptor; @@ -14,6 +12,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.world.machine.FWatz; import api.hbm.energy.IEnergyGenerator; @@ -24,10 +23,9 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class TileEntityFWatzCore extends TileEntity implements ISidedInventory, IReactor, IEnergyGenerator, IFluidContainer, IFluidAcceptor { +public class TileEntityFWatzCore extends TileEntityLoadedBase implements ISidedInventory, IReactor, IEnergyGenerator, IFluidContainer, IFluidAcceptor { public long power; public final static long maxPower = 10000000000L; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java b/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java index e62b9862f..1208805c8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java @@ -7,6 +7,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEFFPacket; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -24,7 +25,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityForceField extends TileEntity implements ISidedInventory, IEnergyUser { +public class TileEntityForceField extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java index 4c8dff60c..fdab6bcb5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java @@ -1,8 +1,5 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java index 1ea71a9ea..e9b9e17db 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.handler.radiation.ChunkRadiationManager; import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.chunk.Chunk; public class TileEntityGeiger extends TileEntity { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java index 348e78347..1b5e9ecd1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java @@ -1,14 +1,14 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.machine.BlockHadronPower; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHadronPower extends TileEntity implements IEnergyUser { +public class TileEntityHadronPower extends TileEntityLoadedBase implements IEnergyUser { public long power; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java index c3326f584..a88a7db69 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java @@ -1,20 +1,15 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ModBlocks; import com.hbm.handler.radiation.ChunkRadiationManager; -import com.hbm.lib.Library; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import net.minecraft.block.Block; import net.minecraft.init.Blocks; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.chunk.Chunk; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineAmgen extends TileEntity implements IEnergyGenerator { +public class TileEntityMachineAmgen extends TileEntityLoadedBase implements IEnergyGenerator { public long power; public long maxPower = 500; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java index a2916c09b..9e34acd3f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java @@ -7,6 +7,7 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -19,7 +20,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; -public class TileEntityMachineArcFurnace extends TileEntity implements ISidedInventory, IEnergyUser { +public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java index cb959e033..10a765f0c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java @@ -16,6 +16,7 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -29,7 +30,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineBoilerElectric extends TileEntity implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyUser { +public class TileEntityMachineBoilerElectric extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java index 780276af0..819467f45 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java @@ -1,8 +1,5 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.inventory.FluidTank; @@ -12,6 +9,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -22,10 +20,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCMBFactory extends TileEntity implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor { +public class TileEntityMachineCMBFactory extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java index 1a3aeeb53..3ad9b2723 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java @@ -18,7 +18,6 @@ import com.hbm.util.InventoryUtil; import api.hbm.energy.IEnergyUser; import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java index d4503636a..878d3ad21 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java @@ -6,13 +6,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraftforge.common.util.ForgeDirection; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.machine.MachineCoal; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -25,12 +21,13 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -public class TileEntityMachineCoal extends TileEntity implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { +public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java index eea44c005..e71df5eab 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java @@ -1,10 +1,11 @@ package com.hbm.tileentity.machine; +import com.hbm.tileentity.TileEntityLoadedBase; + import api.hbm.energy.IEnergyUser; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineDetector extends TileEntity implements IEnergyUser { +public class TileEntityMachineDetector extends TileEntityLoadedBase implements IEnergyUser { long power; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java index 013b5f70f..feea1ffaf 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java @@ -1,12 +1,12 @@ package com.hbm.tileentity.machine; -import com.hbm.inventory.recipes.MachineRecipes; import com.hbm.inventory.recipes.PressRecipes; import com.hbm.items.machine.ItemStamp; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEPressPacket; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -22,7 +22,7 @@ import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineEPress extends TileEntity implements ISidedInventory, IEnergyUser { +public class TileEntityMachineEPress extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 75a49e388..92fe3a0d0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -5,6 +5,7 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -15,10 +16,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineElectricFurnace extends TileEntity implements ISidedInventory, IEnergyUser { +public class TileEntityMachineElectricFurnace extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiniRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiniRTG.java index 6a2224074..a013fbc17 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiniRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiniRTG.java @@ -5,12 +5,13 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.lib.Library; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineMiniRTG extends TileEntity implements IEnergyGenerator { +public class TileEntityMachineMiniRTG extends TileEntityLoadedBase implements IEnergyGenerator { public long power; boolean tact = false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java index 027653669..cbfe5b0a4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java @@ -4,6 +4,7 @@ import com.hbm.config.VersatileConfig; import com.hbm.items.machine.ItemRTGPellet; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.RTGUtil; import api.hbm.energy.IEnergyGenerator; @@ -13,10 +14,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineRTG extends TileEntity implements ISidedInventory, IEnergyGenerator { +public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSPP.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSPP.java index 127ba36c5..ad3adb63d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSPP.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSPP.java @@ -1,16 +1,13 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ModBlocks; import com.hbm.lib.Library; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import net.minecraft.init.Blocks; -import net.minecraft.tileentity.TileEntity; -public class TileEntityMachineSPP extends TileEntity implements IEnergyGenerator { +public class TileEntityMachineSPP extends TileEntityLoadedBase implements IEnergyGenerator { public long power; public static final long maxPower = 100000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java index d19fe1d12..5060a0753 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java @@ -1,8 +1,6 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -17,6 +15,7 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; @@ -26,10 +25,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineSeleniumEngine extends TileEntity implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { +public class TileEntityMachineSeleniumEngine extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java index 63a11d0ef..d4367bf41 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java @@ -1,11 +1,11 @@ package com.hbm.tileentity.machine; -import com.hbm.interfaces.Untested; import com.hbm.inventory.recipes.ShredderRecipes; import com.hbm.items.machine.ItemBlades; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -15,10 +15,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineShredder extends TileEntity implements ISidedInventory, IEnergyUser { +public class TileEntityMachineShredder extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java index 82928346b..ed2457752 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.lib.ModDamageSource; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -14,7 +15,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -public class TileEntityMachineTeleporter extends TileEntity implements IEnergyUser { +public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements IEnergyUser { public long power = 0; public int targetX = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index fe29fa2d5..4acfb031a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -13,6 +13,7 @@ import com.hbm.inventory.recipes.MachineRecipes; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; @@ -22,10 +23,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbine extends TileEntity implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator { +public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index 44a4c684d..df88f1c23 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -1,6 +1,5 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -19,6 +18,7 @@ import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.LoopedSoundPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TETurbofanPacket; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -34,7 +34,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @Spaghetti("a") -public class TileEntityMachineTurbofan extends TileEntity implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { +public class TileEntityMachineTurbofan extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java index 0038e9a1a..6db0cc2fd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java @@ -3,19 +3,18 @@ package com.hbm.tileentity.machine; import java.util.List; import com.hbm.lib.ModDamageSource; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; -import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.monster.IMob; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityRadiobox extends TileEntity implements IEnergyUser { +public class TileEntityRadiobox extends TileEntityLoadedBase implements IEnergyUser { long power; public static long maxPower = 500000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java index b26d62d7e..1351f0f38 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java @@ -21,6 +21,7 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -30,12 +31,11 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityWatzCore extends TileEntity implements ISidedInventory, IReactor, IEnergyGenerator, IFluidContainer, IFluidSource { +public class TileEntityWatzCore extends TileEntityLoadedBase implements ISidedInventory, IReactor, IEnergyGenerator, IFluidContainer, IFluidSource { public long power; public final static long maxPower = 100000000; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index 0699d4b30..56c4bbf22 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -1,7 +1,5 @@ package com.hbm.tileentity.machine.oil; -import java.util.ArrayList; -import java.util.List; import java.util.Random; import com.hbm.entity.particle.EntityGasFlameFX; @@ -14,6 +12,7 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; @@ -28,7 +27,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -public class TileEntityMachineGasFlare extends TileEntity implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { +public class TileEntityMachineGasFlare extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConnector.java b/src/main/java/com/hbm/tileentity/network/TileEntityConnector.java index a98ccec0a..cda2f59ca 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConnector.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConnector.java @@ -1,7 +1,6 @@ package com.hbm.tileentity.network; import api.hbm.energy.IEnergyConductor; -import net.minecraft.init.Blocks; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java index 4d267f71f..941f83c1c 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.network; import com.hbm.calc.Location; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyConnector; import cofh.api.energy.IEnergyHandler; @@ -8,7 +9,7 @@ import cofh.api.energy.IEnergyReceiver; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityConverterHeRf extends TileEntity implements IEnergyConnector, IEnergyHandler { +public class TileEntityConverterHeRf extends TileEntityLoadedBase implements IEnergyConnector, IEnergyHandler { //Thanks to the great people of Fusion Warfare for helping me with the original implementation of the RF energy API diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java index f17de5f83..4308103a6 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java @@ -1,13 +1,13 @@ package com.hbm.tileentity.network; import com.hbm.interfaces.Untested; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import cofh.api.energy.IEnergyHandler; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityConverterRfHe extends TileEntity implements IEnergyGenerator, IEnergyHandler { +public class TileEntityConverterRfHe extends TileEntityLoadedBase implements IEnergyGenerator, IEnergyHandler { @Override public void setPower(long power) { diff --git a/src/main/java/com/hbm/world/feature/OreCave.java b/src/main/java/com/hbm/world/feature/OreCave.java index 17ec19c43..26a701d02 100644 --- a/src/main/java/com/hbm/world/feature/OreCave.java +++ b/src/main/java/com/hbm/world/feature/OreCave.java @@ -28,6 +28,7 @@ public class OreCave { private int maxRange = 4; /** The y-level around which the stratum is centered. */ private int yLevel = 30; + private Block fluid; public OreCave(Block ore) { this(ore, 0); @@ -57,6 +58,11 @@ public class OreCave { this.yLevel = yLevel; return this; } + + public OreCave withFluid(Block fluid) { + this.fluid = fluid; + return this; + } @SubscribeEvent public void onDecorate(DecorateBiomeEvent.Pre event) { @@ -95,15 +101,48 @@ public class OreCave { if(genTarget.isNormalCube() && (genTarget.getMaterial() == Material.rock || genTarget.getMaterial() == Material.ground)) { boolean shouldGen = false; + boolean canGenFluid = event.rand.nextBoolean(); for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { Block neighbor = world.getBlock(MathHelper.clamp_int(x + dir.offsetX, cX, cX + 16), y + dir.offsetY, MathHelper.clamp_int(z + dir.offsetZ, cZ, cZ + 16)); if(neighbor.getMaterial() == Material.air || neighbor instanceof BlockStalagmite) { shouldGen = true; + } + + if(shouldGen && (fluid == null || !canGenFluid)) break; + + if(fluid != null) { + switch(dir) { + case UP: if(neighbor.getMaterial() != Material.air && !(neighbor instanceof BlockStalagmite)) canGenFluid = false; break; + case DOWN: if(!neighbor.isNormalCube()) canGenFluid = false; break; + case NORTH: + case SOUTH: + case EAST: + case WEST: + if(!neighbor.isNormalCube() && neighbor != fluid) canGenFluid = false; break; + } } } - if(shouldGen) world.setBlock(x, y, z, ore.block, ore.meta, 2); + + if(fluid != null && canGenFluid) { + world.setBlock(x, y, z, fluid, 0, 2); + world.setBlock(x, y - 1, z, ore.block, ore.meta, 2); + + for(int i = 2; i < 6; i++) { + ForgeDirection dir = ForgeDirection.getOrientation(i); + int clX = MathHelper.clamp_int(x + dir.offsetX, cX, cX + 16); + int clZ = MathHelper.clamp_int(z + dir.offsetZ, cZ, cZ + 16); + Block neighbor = world.getBlock(clX, y, clZ); + + if(neighbor.isNormalCube()) + world.setBlock(clX, y, clZ, ore.block, ore.meta, 2); + } + + } else if(shouldGen) { + world.setBlock(x, y, z, ore.block, ore.meta, 2); + } + } else { if((genTarget.getMaterial() == Material.air || !genTarget.isNormalCube()) && event.rand.nextInt(5) == 0) { diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_ENDERJUICE.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_ENDERJUICE.png index 36776becf25ad2008eb39efbd83dc9a5ef2c301c..4573c3d26ea74d8f97f7ce2e0681c67a4735dbdb 100644 GIT binary patch delta 2062 zcmV+p2=VuW5UUW7G=JhrL_t(|ob8%za8%V9$N%TP?A@EY*=5%xgcuS?3<`}Y3Q{Nt zNJJ<_88e;AOlJyXr!%D;tsUA9rS?VWR2X%fY3Yo%9UVkVWnxi_q5{Q4qdO^~fFzI- zLWm_VCM5fs-TQVn7Pi=mBRAvud4)azfFKH% zc0)G+0H3rTBY>R&COpFE5}O-AYNU@<=Qdpc0L|1a?GD~yvF!{n!Lc*IIOUhI0RX_p zl=jp;f6Ju|kbkPH;_tB7skOl6b^rkJ@$&kbBXR*ZJ56DBs?ip(`50XLE6`Q zLO<2=*Z3zrJ1K>pz3<$B^!4RC@U>1!p_8>Ycdm_` zcGo8Qh}lM6?WT}Fu>JByC7;JJx9TzJ)|g5O$wu7?-Q04o`irO{+z=*mRJ8lzPRsntlMZD`SKJ-!|RFbIdWY><-GOEvht_- z;yV{93obk!e82anWAja6)Yonf`2*XDt6++>YUPVL)152C+shv2j~)Ay$zWzR>T80N zIDe`aKP%-4v!M2e)WiOb@%DlJ)D(5Dps-3n7fc4z()W?ZcLTYK8i0X@qUVXbphR9h zf0wbVVS$m&X<9g996hun>dUWi&v8G>&n$mPsPFx`!9d5}2Y?Ml`e=+MQYXh<|60a1 zy-=!<*8m1HJ~;4;=<)EM69?ijJHiLQ=zmIl##5Sjzhoz?eF36Hw?$6;-hU>gHgLyX z7F)P9MI5o#{V5a2L0Iz5ZN4Sgmar*I{~Ozab$ve@)-cef_jjnp%N8jWGuJ4~yM7;T z$2-{$%AF{=)T*et!U7 zZw1f80U9v$^N~ZNpODS?u0QFKqsD?%qmhKcz*HJa)6lT4?yvujkbhsLG;`tF9B0&* z^({q`T!QTK%UFC9#Z$;DC`?E~ruNqU^^xY_%h|fWX0WT+yR(_wOT>*K0Dx1-0We(s zcLzH&>O-+a9C=(`06-p}$PAPv5`Szm@>6Sr^cukb_b0R3r(&HKhu%K50uY3Q7feeLn2m1=qpo&S==7A@+;xi@MQ5&8nCf0knuD)oRZMZ@QvPHt zAvPIIrUD!xvgkuHiSUv{M4|vDgTdk%uN4Y*m=q?*PZEU^Whwe2&7bdl41aTb9r;3g zC;QZ2A8nfYJNG>AMvU@Yf#moK#5?DIKc`Yz2bj!kKC{c9&@IJfwggU{9cn1w;;t@w zmb-nydiiAc&Y}Mp4QV>h&C?t=MQ7?AfdkB0%ZWbL-V1EX5<03tku@B)-FX&yy$Kq6BiMaUQ-{k22sMcJyF6xV*`pePsQ zIafXKqVvk*(bgXN$A7wi=sIGfj;}@AooQ~b2k99=5M?4j9&Ru}IO0gtCDFRVvBPaY zaXdKVwc%MZK!cGE=5YD25# z1v55_lihPT-V|w||D4`@d{?Zo^J)4yTMPT_#PP_^!FkgB%1u&P{tC_|6%nc#ba3FT zajxfGmYUthFg~73oLbkmFQe~Sg>x)+OHUI3z^mjXrY9xRQ=bVWu^$JIQ@lzZ1AxJ3 zf5zjZEr8o=)CJJm)D-n(tNs>5-o#nE^(M{3Lb;nBds|2N>tvRkGA#$MnP00000Ne4wvM6N<$f~tfayZ`_I delta 2021 zcmVxodUoG$I0{6+|#moqNJlXEq=J zAm8}UQG1=`DF6U8_km|3wkP}?)l!KF3IxcKBy-%H?3l5N<6~F3?!FVOW$r>K+R&`x zYHdNn^QewaL4Qa*0>OZkIrp4ow+)KJx0~4ZzC*l299}t1K4k8EBxdhDZvy~G?Pp(| zX&8GB0D!D|wpMF|hXCfmef;D$W(=-)eb9Sx?N9FKNdSPk8>6;EEy;n;!Pg%r5yjXxJLQQtC~kdCt*4&?M?@ZA}Vzx5@(1+;|w{(=G>>L{wwd!o#}o|6u`AE zNil{D+z^%L*QcVRFaw>B8ItqKyqxc|wPzllH@n_nPyD+^L~0UURbHz$kokW7lva-= zYm2eulz(ExVYN7WxRap_6Vw6_Z?^uO9Ti&qdwCFM;MNjjEJj6DmYx=mHs*0o7!Ov6 z*n73cZ55gk6&-~orhJ)9*Y80P3_~+^RO$Azr|j=V1`o;<( znlu6)MX7cd9_3zbPU1!2g4KIh!Sp2c@Xk7QJb#u8005GU7p)T)1v_g-XpJ7#$LHYM z(FAUQdoR#+O>+f7E&$2W+vE=1o>oG;DM3@2`w#Kd^-@s+A*eB|eHU2o7_Go06>N`q zWJ@EC1BDoiD(RG4rHoZ-4n>=2?yU3LUQGCf=9!9{DjlQ(m8>T=z*gRO+x`qebGJQ9 zEq_kFb9j9Ioe%D3r-fcW8y%e{@xTQ7u63@^kktkXa5Ccn07z27cI|!fzgce_d9<~K zX>+{dY0*HM4Ew^PZ~q7`hP)n9QsA9sQhR2?bD4*mT8a(w?`V}qO2DY z06_IoSpZ`pX#)TN6ekdkE*>{+{iZq*3Ox=sL70XmN&c+BH^3Ip)dcW^?3uOrt~DRw zEdl`mgeezOdvzcF z7T-k(W6Ive%t@2e*Fx1Mb~GJghUf;>SBnml8ZZE&!BCuA)4LzRFx8#GCEk0@ON^(a zQUj_*69J?{d6g6(o030B`)=PK+)pnorX)1?Q{;nF4#eOS+QrybX3(~kqbfueSq4!LW3cP%m0=Vj}j z%50Z!S>6|>m>Zx=OeM3m-}2mKK$w{KY7%<~-w}5d{t`m~Lo&*$qJOHBo4GOf6(lw} zlT44P@L2J{bq}xl;YMg{dzsHIf0|H33}{mm>Bsk9R^1+H5N6pSz|}Mw8)w1|a=!aW zO`dBCIz!1vPzwOdEZk3L!u};UdK+t2TmS$db)P%#+I-*uor;&OIEJZkA8mqwqaG&< z9T#77Hd=oWZf)F!|9`&78_OyQ5+aa|1v@qOn)l3`xwF1DM1JNEF^nd`XsX1GQ0ezv z16OMqt9;ShVY}AnJfHkiU3uc45I_M<$tY2$K#7kBNZrjRoHx0@EvLzgb8y^wI=P+IJPPMK`g+G%!;daHBb31fVJi${HK6V!Cl|}J%94sh1c-K>UIIyVYi5k zb`qlqJs^OBEJ`xRIwZTzERKwP#C7$*#Z9`e-xX2L{&D7V_8%fk<6Z(#gQ_IwcW!fg zo#-v*0ECZQUU8u&oJ`Y~qZ(BLB5{IbpBmtMI#0P;M_vvLDYl;d^Xw-%9aMqwM?_*& z5vsIr<7W{C%#00000NkvXXu0mjf DsI9bi From 6af5a8eb35e0207cec77ba331c1e33a317fbadd5 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 31 Mar 2022 16:36:26 +0200 Subject: [PATCH 7/7] some small fixes, ore rendering with layers --- src/main/java/api/hbm/energy/PowerNet.java | 12 +- .../java/com/hbm/blocks/ILookOverlay.java | 1 + src/main/java/com/hbm/blocks/ModBlocks.java | 4 + .../blocks/generic/BlockMotherOfAllOres.java | 109 ++++++++++++ .../hbm/items/machine/ItemChemistryIcon.java | 9 +- .../render/block/RenderBlockMultipass.java | 3 - .../com/hbm/render/model/ModelGasMask.java | 18 +- src/main/java/com/hbm/util/ColorUtil.java | 159 ++++++++++++++++++ .../java/com/hbm/world/feature/OreCave.java | 1 + .../assets/hbm/textures/blocks/ore_cobalt.png | Bin 382 -> 326 bytes .../assets/hbm/textures/blocks/ore_copper.png | Bin 288 -> 229 bytes .../hbm/textures/blocks/ore_random_1.png | Bin 0 -> 190 bytes .../hbm/textures/blocks/ore_random_10.png | Bin 0 -> 269 bytes .../hbm/textures/blocks/ore_random_2.png | Bin 0 -> 234 bytes .../hbm/textures/blocks/ore_random_3.png | Bin 0 -> 153 bytes .../hbm/textures/blocks/ore_random_4.png | Bin 0 -> 211 bytes .../hbm/textures/blocks/ore_random_5.png | Bin 0 -> 257 bytes .../hbm/textures/blocks/ore_random_6.png | Bin 0 -> 213 bytes .../hbm/textures/blocks/ore_random_7.png | Bin 0 -> 168 bytes .../hbm/textures/blocks/ore_random_8.png | Bin 0 -> 234 bytes .../hbm/textures/blocks/ore_random_9.png | Bin 0 -> 250 bytes 21 files changed, 304 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java create mode 100644 src/main/java/com/hbm/util/ColorUtil.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_random_1.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_random_10.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_random_2.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_random_3.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_random_4.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_random_5.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_random_6.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_random_7.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_random_8.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_random_9.png diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index 12012eb1e..2969e9e4d 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -96,12 +96,18 @@ public class PowerNet implements IPowerNet { return this.valid; } + public long lastCleanup = System.currentTimeMillis(); + @Override public long transferPower(long power) { - this.subscribers.removeIf(x -> - x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid() - ); + if(lastCleanup + 45 < System.currentTimeMillis()) { + this.subscribers.removeIf(x -> + x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid() || !x.isLoaded() + ); + + lastCleanup = System.currentTimeMillis(); + } if(this.subscribers.isEmpty()) return power; diff --git a/src/main/java/com/hbm/blocks/ILookOverlay.java b/src/main/java/com/hbm/blocks/ILookOverlay.java index 47ff64eea..d100ed767 100644 --- a/src/main/java/com/hbm/blocks/ILookOverlay.java +++ b/src/main/java/com/hbm/blocks/ILookOverlay.java @@ -49,6 +49,7 @@ public interface ILookOverlay { } GL11.glDisable(GL11.GL_BLEND); + GL11.glColor3f(1F, 1F, 1F); GL11.glPopMatrix(); Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 5420a428a..4e768e7ed 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -83,6 +83,8 @@ public class ModBlocks { public static Block ore_cinnebar; public static Block ore_coltan; public static Block ore_alexandrite; + + public static Block ore_random; public static Block ore_bedrock_coltan; @@ -1342,6 +1344,8 @@ public class ModBlocks { cluster_depth_titanium = new BlockDepthOre().setBlockName("cluster_depth_titanium").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cluster_depth_titanium"); cluster_depth_tungsten = new BlockDepthOre().setBlockName("cluster_depth_tungsten").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cluster_depth_tungsten"); ore_alexandrite = new BlockDepthOre().setBlockName("ore_alexandrite").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_alexandrite"); + + ore_random = new BlockMotherOfAllOres().setBlockName("ore_random").setCreativeTab(MainRegistry.blockTab); depth_brick = new BlockDepth().setBlockName("depth_brick").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_brick"); depth_tiles = new BlockDepth().setBlockName("depth_tiles").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_tiles"); diff --git a/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java b/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java new file mode 100644 index 000000000..6a093fe80 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java @@ -0,0 +1,109 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.IBlockMultiPass; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.lib.RefStrings; +import com.hbm.render.block.RenderBlockMultipass; + +import cpw.mods.fml.relauncher.Side; +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.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class BlockMotherOfAllOres extends BlockContainer implements IBlockMultiPass { + + public BlockMotherOfAllOres() { + super(Material.rock); + this.blockIcon = Blocks.stone.getIcon(0, 0); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityRandomOre(); + } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRandomOre) { + return ((TileEntityRandomOre) te).getStack().copy(); + } + + return super.getPickBlock(target, world, x, y, z); + } + + @Override + public int getRenderType(){ + return IBlockMultiPass.getRenderType(); + } + + @Override + public int getPasses() { + return 2; + } + + private IIcon[] overlays = new IIcon[10]; + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + for(int i = 0; i < overlays.length; i++) { + overlays[i] = reg.registerIcon(RefStrings.MODID + ":ore_random_" + (i + 1)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + + if(RenderBlockMultipass.currentPass == 0) + return this.blockIcon; + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRandomOre) { + TileEntityRandomOre ore = (TileEntityRandomOre) te; + ItemStack item = ore.getStack(); + + if(item != null) { + ComparableStack stack = new ComparableStack(item); + int index = stack.hashCode() % overlays.length; + return overlays[index]; + } + } + + return this.getIcon(side, world.getBlockMetadata(x, y, z)); + } + + @Override + @SideOnly(Side.CLIENT) + public int colorMultiplier(IBlockAccess world, int x, int y, int z) { + + if(RenderBlockMultipass.currentPass == 0) + return 0xffffff; + + return super.colorMultiplier(world, x, y, z); + } + + public static class TileEntityRandomOre extends TileEntity { + + public ItemStack getStack() { + return new ItemStack(Blocks.dirt); + } + + @Override + public boolean canUpdate() { + return false; + } + } +} diff --git a/src/main/java/com/hbm/items/machine/ItemChemistryIcon.java b/src/main/java/com/hbm/items/machine/ItemChemistryIcon.java index 6e67efada..f3e190dc5 100644 --- a/src/main/java/com/hbm/items/machine/ItemChemistryIcon.java +++ b/src/main/java/com/hbm/items/machine/ItemChemistryIcon.java @@ -13,7 +13,6 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; import net.minecraft.util.StatCollector; public class ItemChemistryIcon extends Item { @@ -59,6 +58,12 @@ public class ItemChemistryIcon extends Item { @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int i) { - return this.icons[ChemplantRecipes.indexMapping.get(i).listing % this.icons.length]; + ChemRecipe rec = ChemplantRecipes.indexMapping.get(i); + + if(rec != null) { + return this.icons[rec.listing % this.icons.length]; + } else { + return ModItems.nothing.getIconFromDamage(i); + } } } diff --git a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java index bd4090f1e..9a3e26d03 100644 --- a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java +++ b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java @@ -66,7 +66,6 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { Tessellator tessellator = Tessellator.instance; - //int meta = world.getBlockMetadata(x, y, z); tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); @@ -82,8 +81,6 @@ 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)); renderer.renderStandardBlock(block, x, y, z); } diff --git a/src/main/java/com/hbm/render/model/ModelGasMask.java b/src/main/java/com/hbm/render/model/ModelGasMask.java index 3fc9d8bd3..a32833c9b 100644 --- a/src/main/java/com/hbm/render/model/ModelGasMask.java +++ b/src/main/java/com/hbm/render/model/ModelGasMask.java @@ -100,10 +100,20 @@ public class ModelGasMask extends ModelBiped { @Override public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) { setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity); - GL11.glPushMatrix(); - GL11.glScalef(1.15F, 1.15F, 1.15F); - this.mask.render(par7); - GL11.glPopMatrix(); + + if(this.isChild) { + float f6 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.5F / f6, 1.5F / f6, 1.5F / f6); + GL11.glTranslatef(0.0F, 16.0F * par7, 0.0F); + this.mask.render(par7); + GL11.glPopMatrix(); + } else { + GL11.glPushMatrix(); + GL11.glScalef(1.15F, 1.15F, 1.15F); + this.mask.render(par7); + GL11.glPopMatrix(); + } } protected void convertToChild(ModelRenderer parParent, ModelRenderer parChild) { diff --git a/src/main/java/com/hbm/util/ColorUtil.java b/src/main/java/com/hbm/util/ColorUtil.java new file mode 100644 index 000000000..60779593e --- /dev/null +++ b/src/main/java/com/hbm/util/ColorUtil.java @@ -0,0 +1,159 @@ +package com.hbm.util; + +import java.awt.Color; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; + +import javax.imageio.ImageIO; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class ColorUtil { + + @SideOnly(Side.CLIENT) + public static BufferedImage getImageFromStack(ItemStack stack) throws IOException { + String iconName = stack.getItem().getIconFromDamage(stack.getItemDamage()).getIconName(); + String domain = "minecraft"; + + if(iconName.contains(":")) { + String[] parts = iconName.split(":"); + domain = parts[0]; + iconName = parts[1]; + } + + ResourceLocation loc = new ResourceLocation(domain, "textures/items/" + iconName + ".png"); + + return ImageIO.read(Minecraft.getMinecraft().getResourceManager().getResource(loc).getInputStream()); + } + + @SideOnly(Side.CLIENT) + public static int getAverageColorFromStack(ItemStack stack) { + + try { + BufferedImage tex = getImageFromStack(stack); + + int r = 0; + int g = 0; + int b = 0; + int pixels = 0; + + for(int i = 0; i < tex.getWidth(); i++) { + for(int j = 0; j < tex.getHeight(); j++) { + + Color pixel = new Color(tex.getRGB(i, j)); + + if(pixel.getAlpha() == 255) { + r += pixel.getRed(); + g += pixel.getGreen(); + b += pixel.getBlue(); + pixels++; + } + } + } + + int avgR = r / pixels; + int avgG = g / pixels; + int avgB = b / pixels; + + return (r << 16) | (g << 8) | b; + + } catch(Exception ex) { + return 0xFFFFFF; + } + } + + @SideOnly(Side.CLIENT) + public static int getMedianBrightnessColorFromStack(ItemStack stack) { + + try { + BufferedImage tex = getImageFromStack(stack); + + HashMap brightMap = new HashMap(); + List brightnesses = new ArrayList(); + + for(int i = 0; i < tex.getWidth(); i++) { + for(int j = 0; j < tex.getHeight(); j++) { + + Color pixel = new Color(tex.getRGB(i, j)); + int brightness = pixel.getRed() * pixel.getRed() + pixel.getGreen() * pixel.getGreen() + pixel.getBlue() * pixel.getBlue(); + brightnesses.add(brightness); + brightMap.put(brightness, pixel); //overlap possible, but we don't differentiate between colors anyway. + } + } + + Collections.sort(brightnesses); + int median = brightnesses.get(brightnesses.size() / 2); + Color medianColor = brightMap.get(median); + + return medianColor.getRGB(); + + } catch(Exception ex) { + return 0xFFFFFF; + } + } + + /** + * Decides whether a color is considered "colorful", i.e. weeds out colors that are too dark or too close to gray. + * @param hex + * @return + */ + public static boolean isColorColorful(int hex) { + Color color = new Color(hex); + + /*double r = color.getRed(); + double g = color.getBlue(); + double b = color.getGreen(); + + if(r < 50 && g < 50 && b < 50) + return false; + + if(r / g > 1.5) return true; + if(r / b > 1.5) return true; + if(g / r > 1.5) return true; + if(g / b > 1.5) return true; + if(b / r > 1.5) return true; + if(b / g > 1.5) return true;*/ + + float[] hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), new float[0]); + + // saturation brightness + return hsb[1] > 0.25 && hsb[2] > 0.25; + } + + /** + * Raises the highest RGB component to the specified limit, scaling the other components with it. + * @param hex + * @param limit + * @return + */ + public static int amplifyColor(int hex, int limit) { + Color color = new Color(hex); + int r = color.getRed(); + int g = color.getGreen(); + int b = color.getBlue(); + int max = Math.max(r, Math.max(g, b)); + + r = r * limit / max; + g = g * limit / max; + b = b * limit / max; + + return new Color(r, g, b).getRGB(); + } + + /** + * Same as the regular amplifyColor but it uses 255 as the limit. + * @param hex + * @return + */ + public static int amplifyColor(int hex) { + return amplifyColor(hex, 255); + } +} diff --git a/src/main/java/com/hbm/world/feature/OreCave.java b/src/main/java/com/hbm/world/feature/OreCave.java index 26a701d02..0dba4397b 100644 --- a/src/main/java/com/hbm/world/feature/OreCave.java +++ b/src/main/java/com/hbm/world/feature/OreCave.java @@ -64,6 +64,7 @@ public class OreCave { return this; } + @SuppressWarnings("incomplete-switch") @SubscribeEvent public void onDecorate(DecorateBiomeEvent.Pre event) { diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_cobalt.png b/src/main/resources/assets/hbm/textures/blocks/ore_cobalt.png index 63c77c56f5907b20fcf5b1f0c001ed24a33849e3..2553fad8480e107443760fcf1333db0a14afeca2 100644 GIT binary patch delta 300 zcmV+{0n`5e0>%Q6BYyw{b3#c}2nYxWdzq_*Vt4xr2M$dp_y#5j^kR_v20_Nm7Ji2oiA|LzZQPAPDG- zHCLa)0rCMuHp+UnI--X>kOm+NH|O~k=JPk>F|#pPkye0(?SJ+geE$fZ_X4ff6SUh? zqj5aWp;mivTX4y?VOwlA1IkC0e^Q9Zj0|>I_!}FgZv@v=Ijvx+r5fFYwcYLqCX*91 z8ouFQZb)yzW?rv9;BdG=x4Wbvoz6211}XIWE0TW`V!i&TckW8P*NcpB8On7?|M_Q& zH-}^=&SBxVQe7G9x>TpihC&w7^b7X;U)sA2&9-EO$jpnyJ4Df$d@`h(&E^wkv)B8F zBw>3-Hrxi^iV-5Fiz(j=(zaqK;7gQDF5j*TMf?E;O>EtCMNV)40000M{oII24%(Oc)O~@AO8HbW&?rgJKOy}u1ZfxP?*D~!F1yitE2kfnN$D7 zUvQZE@NesF9&x{WNeMtOVTwr7g}j>`E5*Z4?T&hE@1QwJf`MUyWSsD#t2Z_Q9m?S8 L>gTe~DWM4fCns6q literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFto{fBm3`CgaC9NKJ7^zRYv@T@TjZD?D5S43c&Hoqt zKi_<`*}r_6;MJcJscSf`TH=>9LA`fp>p#+ zDEumQGQL)AyYeEFa_GF@{0}#um3uS2rZS*@?x~9n>kOOYkDL_WoU`_;Ey&59u6{1- HoD!M diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_1.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4734b44ffb26f8eb394fd87ed2d78253ee8bc46e GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfTfhJt$iSd;z9d8vfFWw8bJHh1m;C%>@N0;#ODp=G$+x^TuYH>m;|!M+l?g6P-NN#+r&gG(n#w-yV#=Of=1Lz$ zeuaEGm)2Wx|9f+3Ipg)RsJpK!c6ep3eQGxUM2dWcWvble8>_{m?$$8|`3s)87rt&c P&_4{Gu6{1-oD!M#v=?m^b|r@qBaE6M$nm%jdQgJ=_{YTjnGsJTG189ZJ6T-G@yGywny`7<~G literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_4.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_4.png new file mode 100644 index 0000000000000000000000000000000000000000..df4ffe5c16a3383ee2e0d6ff773b7d86f5865d6d GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf9_0HQI70~(SEQ*K-(JQxDI}Yindt}Xhry?EP9O*#L+x@BC8Hgp9_uXqJ?6@#a%pUXO@ GgeCwgSW!#> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_5.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_5.png new file mode 100644 index 0000000000000000000000000000000000000000..34b4c9d9ab69d46330d54f5e194b67a032d6caee GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf{fFB!z3vyk;s>ex zc|!NT^CtI5m7i>#S-ED>RyGEOMeFj`{$2S=$W-Z-3Im7YjB8RsUYCFCbqee{bYt~| zCmCyB%oH{FY+3i!<#5U)4-x+*a}95<_&2e;N9&k{<`kfF@BOy(QhN3O_Rpy7o0iv4 zZVfBt4|x+~UsY5T+HuQB@%fqMxzXQ~y2GEC|6t;0ozkqd=GYsc9~eAc{an^LB{Ts5 Dy)I-9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_6.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_6.png new file mode 100644 index 0000000000000000000000000000000000000000..64be59eba2d8cb99f15fe3d35af1db2acfd66c73 GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfTf?TujiUy$BVpPVM8<{@;l@KWFL zeH*s6opEttU{Ffht*$vKKRvi4=uYhNU+*^kGR&%3;Xa9B!L_a+E~DaZ!Hd;}-~NO? zI-eT%>{H65U7u&pn}2j>XKJLwrrBDa@BZy&Z`U^6yz`v#9)>%~>5IRGoc02`i^0>? K&t;ucLK6UQ+f|$Z literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_7.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_7.png new file mode 100644 index 0000000000000000000000000000000000000000..9983624756e9f33b30f4a47fd2f16aa447aad97b GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfSg?0xX+ zd0WK7wB|ofNbBeb%1dKl2(?|t#8B{k<$_7~Sr+eH#P#Cw^xNUmy`z8fWI=hMUyXgE|TW&q}mzQv0{nxUpC~CrzRY5Kl%6k^f@maO? z+t!%}?=mtd1$C|3v^A{h%{zgKLWcqc773?EhhKJk5^q@csb%(Dftc&9C-yy)Tm0?K zMdz{zj{Rr hDLHZS{pmS>8RYw~oJtFsBLs9TgQu&X%Q~loCIBBJVeS9` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_9.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_9.png new file mode 100644 index 0000000000000000000000000000000000000000..78fb424b2166c265b5c041ea3192b69bc3ce04b8 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf