diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 8b980c6d3..f35805a69 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -486,6 +486,7 @@ public class ModBlocks { public static Block rejuvinator; public static Block fireworks; public static Block dynamite; + public static Block tnt; public static Block charge_dynamite; public static Block charge_miner; @@ -1698,7 +1699,8 @@ public class ModBlocks { mine_he = new Landmine(Material.iron).setBlockName("mine_he").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_he"); mine_shrap = new Landmine(Material.iron).setBlockName("mine_shrap").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_shrap"); mine_fat = new Landmine(Material.iron).setBlockName("mine_fat").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_fat"); - dynamite = new BlockDynamite().setBlockName("dynamite").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":dynamite"); + dynamite = new BlockDynamite().setBlockName("dynamite").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":dynamite"); + tnt = new BlockTNT().setBlockName("tnt_ntm").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":tnt"); machine_difurnace_off = new MachineDiFurnace(false).setBlockName("machine_difurnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_difurnace_on = new MachineDiFurnace(true).setBlockName("machine_difurnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); @@ -2666,6 +2668,7 @@ public class ModBlocks { GameRegistry.registerBlock(crashed_balefire, crashed_balefire.getUnlocalizedName()); GameRegistry.registerBlock(fireworks, fireworks.getUnlocalizedName()); GameRegistry.registerBlock(dynamite, dynamite.getUnlocalizedName()); + GameRegistry.registerBlock(tnt, tnt.getUnlocalizedName()); //Turrets GameRegistry.registerBlock(turret_light, turret_light.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/BlockTNT.java b/src/main/java/com/hbm/blocks/bomb/BlockTNT.java new file mode 100644 index 000000000..ddb8fdbb5 --- /dev/null +++ b/src/main/java/com/hbm/blocks/bomb/BlockTNT.java @@ -0,0 +1,13 @@ +package com.hbm.blocks.bomb; + +import com.hbm.entity.item.EntityTNTPrimedBase; + +import net.minecraft.world.World; + +public class BlockTNT extends BlockTNTBase { + + @Override + public void explodeEntity(World world, double x, double y, double z, EntityTNTPrimedBase entity) { + world.createExplosion(entity, x, y, z, 12F, true); + } +} diff --git a/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java b/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java index 48ec12b5b..4bd824e32 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java @@ -2,33 +2,36 @@ package com.hbm.blocks.bomb; import java.util.Random; +import com.hbm.blocks.generic.BlockFlammable; import com.hbm.entity.item.EntityTNTPrimedBase; +import com.hbm.util.ChatBuilder; +import api.hbm.block.IToolable; +import api.hbm.block.IToolable.ToolType; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.init.Items; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.world.Explosion; import net.minecraft.world.World; -public abstract class BlockTNTBase extends Block { - +public abstract class BlockTNTBase extends BlockFlammable implements IToolable { + @SideOnly(Side.CLIENT) private IIcon topIcon; @SideOnly(Side.CLIENT) private IIcon bottomIcon; public BlockTNTBase() { - super(Material.tnt); - this.setCreativeTab(CreativeTabs.tabRedstone); + super(Material.tnt, 15, 100); } @Override @@ -122,4 +125,33 @@ public abstract class BlockTNTBase extends Block { this.topIcon = p_149651_1_.registerIcon(this.getTextureName() + "_top"); this.bottomIcon = p_149651_1_.registerIcon(this.getTextureName() + "_bottom"); } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + + if(tool == ToolType.DEFUSER) { + if(!world.isRemote) { + world.func_147480_a(x, y, z, true); + this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); + } + return true; + } + + if(tool != ToolType.SCREWDRIVER) + return false; + + if(!world.isRemote) { + int meta = world.getBlockMetadata(x, y, z); + + if(meta == 0) { + world.setBlockMetadataWithNotify(x, y, z, 1, 3); + player.addChatComponentMessage(ChatBuilder.start("[ Ignite On Break: Enabled ]").color(EnumChatFormatting.RED).flush()); + } else { + world.setBlockMetadataWithNotify(x, y, z, 0, 3); + player.addChatComponentMessage(ChatBuilder.start("[ Ignite On Break: Disabled ]").color(EnumChatFormatting.GOLD).flush()); + } + } + + return true; + } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockConverterHeRf.java b/src/main/java/com/hbm/blocks/machine/BlockConverterHeRf.java index fa7f38a3c..d4e442bfc 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockConverterHeRf.java +++ b/src/main/java/com/hbm/blocks/machine/BlockConverterHeRf.java @@ -1,6 +1,6 @@ package com.hbm.blocks.machine; -import com.hbm.tileentity.machine.TileEntityConverterHeRf; +import com.hbm.tileentity.network.TileEntityConverterHeRf; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; diff --git a/src/main/java/com/hbm/blocks/machine/BlockConverterRfHe.java b/src/main/java/com/hbm/blocks/machine/BlockConverterRfHe.java index 34b3cfadf..a59e6f5f7 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockConverterRfHe.java +++ b/src/main/java/com/hbm/blocks/machine/BlockConverterRfHe.java @@ -1,6 +1,6 @@ package com.hbm.blocks.machine; -import com.hbm.tileentity.machine.TileEntityConverterRfHe; +import com.hbm.tileentity.network.TileEntityConverterRfHe; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; diff --git a/src/main/java/com/hbm/crafting/PowderRecipes.java b/src/main/java/com/hbm/crafting/PowderRecipes.java index fcb8a19e8..ae62ef24b 100644 --- a/src/main/java/com/hbm/crafting/PowderRecipes.java +++ b/src/main/java/com/hbm/crafting/PowderRecipes.java @@ -18,7 +18,7 @@ public class PowderRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_power, 5), new Object[] { REDSTONE.dust(), "dustGlowstone", DIAMOND.dust(), NP237.dust(), MAGTUNG.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.ballistite, 3), new Object[] { Items.gunpowder, KNO.dust(), Items.sugar }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ball_dynamite, 2), new Object[] { KNO.dust(), Items.sugar, Blocks.sand }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ball_dynamite, 2), new Object[] { KNO.dust(), Items.sugar, Blocks.sand, KEY_TOOL_CHEMISTRYSET }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.ingot_steel_dusted, 1), new Object[] { STEEL.ingot(), COAL.dust() }); //Gunpowder @@ -42,8 +42,8 @@ public class PowderRecipes { //Metal powders CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { REDSTONE.dust(), IRON.dust(), COAL.dust(), CU.dust() }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 3), new Object[] { IRON.dust(), COAL.dust(), MINGRADE.dust() }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 3), new Object[] { REDSTONE.dust(), STEEL.dust(), CU.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { IRON.dust(), COAL.dust(), MINGRADE.dust(), MINGRADE.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { REDSTONE.dust(), CU.dust(), STEEL.dust(), STEEL.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 2), new Object[] { MINGRADE.dust(), STEEL.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_magnetized_tungsten, 1), new Object[] { W.dust(), SA326.nugget() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_tcalloy, 1), new Object[] { STEEL.dust(), TC99.nugget() }); diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 8aba6c2f8..43ff59f86 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -131,7 +131,15 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.mirror_tool), new Object[] { " A ", " IA", "I ", 'A', AL.ingot(), 'I', IRON.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.rbmk_tool), new Object[] { " A ", " IA", "I ", 'A', PB.ingot(), 'I', IRON.ingot() }); + + CraftingManager.addRecipeAuto(new ItemStack(ModItems.kit_toolbox_empty), new Object[] { "CCC", "CIC", 'C', CU.plate(), 'I', IRON.ingot() }); + + CraftingManager.addRecipeAuto(new ItemStack(ModItems.screwdriver, 1), new Object[] { " I", " I ", "S ", 'S', STEEL.ingot(), 'I', IRON.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.screwdriver_desh, 1), new Object[] { " I", " I ", "S ", 'S', ANY_PLASTIC.ingot(), 'I', DESH.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.hand_drill), new Object[] { " D", "S ", " S", 'D', DURA.ingot(), 'S', KEY_STICK }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.hand_drill_desh), new Object[] { " D", "S ", " S", 'D', DESH.ingot(), 'S', ANY_PLASTIC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.chemistry_set), new Object[] { "GIG", "GCG", 'G', KEY_ANYGLASS, 'I', IRON.ingot(), 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.chemistry_set_boron), new Object[] { "GIG", "GCG", 'G', ModBlocks.glass_boron, 'I', STEEL.ingot(), 'C', CO.ingot() }); //Bobmazon CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_materials), new Object[] { Items.book, Items.gold_nugget, Items.string }); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index e7f7c306a..c5d2f8fef 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -349,7 +349,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_pink_cloud), new Object[] { " S ", "ECE", " E ", 'S', ModItems.powder_spark_mix, 'E', ModItems.powder_magic, 'C', ModItems.grenade_cloud }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.nuclear_waste_pearl), new Object[] { "WWW", "WFW", "WWW", 'W', ModItems.nuclear_waste_tiny, 'F', ModBlocks.block_fallout }); //CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_nuke), new Object[] { "CGC", "CGC", "PAP", 'C', ModBlocks.det_charge, 'G', ModItems.grenade_mk2, 'P', ALLOY.plate(), 'A', Blocks.anvil }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.stick_dynamite, 4), new Object[] { " S ", "PDP", "PDP", 'S', Items.string, 'P', Items.paper, 'D', ModItems.ball_dynamite }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.stick_dynamite, 4), new Object[] { " S ", "PDP", "PDP", 'S', ModItems.safety_fuse, 'P', Items.paper, 'D', ModItems.ball_dynamite }); //IF Grenades diff --git a/src/main/java/com/hbm/crafting/handlers/ToolboxCraftingHandler.java b/src/main/java/com/hbm/crafting/handlers/ToolboxCraftingHandler.java new file mode 100644 index 000000000..761c59262 --- /dev/null +++ b/src/main/java/com/hbm/crafting/handlers/ToolboxCraftingHandler.java @@ -0,0 +1,64 @@ +package com.hbm.crafting.handlers; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemKitNBT; + +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.world.World; + +public class ToolboxCraftingHandler implements IRecipe { + + @Override + public boolean matches(InventoryCrafting inventory, World world) { + + int itemCount = 0; + int kitCount = 0; + + for(int i = 0; i < 9; i++) { + ItemStack stack = inventory.getStackInRowAndColumn(i % 3, i / 3); + + if(stack != null) { + itemCount++; + + if(stack.getItem() == ModItems.kit_toolbox_empty) { + kitCount++; + } + } + } + + return itemCount > 1 && kitCount == 1; + } + + @Override + public ItemStack getCraftingResult(InventoryCrafting inventory) { + + List stacks = new ArrayList(); + + for(int i = 0; i < 9; i++) { + ItemStack stack = inventory.getStackInRowAndColumn(i % 3, i / 3); + + if(stack != null && stack.getItem() != ModItems.kit_toolbox_empty) { + ItemStack copy = stack.copy(); + copy.stackSize = 1; + stacks.add(copy); + } + } + + return ItemKitNBT.create(stacks.toArray(new ItemStack[0])); + } + + @Override + public int getRecipeSize() { + return 9; + } + + @Override + public ItemStack getRecipeOutput() { + return new ItemStack(ModItems.kit_toolbox); + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/BlockAllocatorStandard.java b/src/main/java/com/hbm/explosion/vanillant/BlockAllocatorStandard.java new file mode 100644 index 000000000..21e430136 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/BlockAllocatorStandard.java @@ -0,0 +1,76 @@ +package com.hbm.explosion.vanillant; + +import java.util.HashSet; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +public class BlockAllocatorStandard implements IBlockAllocator { + + protected int resolution; + + public BlockAllocatorStandard() { + this(16); + } + + public BlockAllocatorStandard(int resolution) { + this.resolution = resolution; + } + + @Override + public HashSet allocate(ExplosionVNT explosion, World world, double x, double y, double z, float size) { + + HashSet affectedBlocks = new HashSet(); + + for(int i = 0; i < this.resolution; ++i) { + for(int j = 0; j < this.resolution; ++j) { + for(int k = 0; k < this.resolution; ++k) { + + if(i == 0 || i == this.resolution - 1 || j == 0 || j == this.resolution - 1 || k == 0 || k == this.resolution - 1) { + + double d0 = (double) ((float) i / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d1 = (double) ((float) j / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d2 = (double) ((float) k / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d3 = Math.sqrt(d0 * d0 + d1 * d1 + d2 * d2); + + d0 /= d3; + d1 /= d3; + d2 /= d3; + + float powerRemaining = size * (0.7F + world.rand.nextFloat() * 0.6F); + double currentX = x; + double currentY = y; + double currentZ = z; + + for(float stepSize = 0.3F; powerRemaining > 0.0F; powerRemaining -= stepSize * 0.75F) { + + int blockX = MathHelper.floor_double(currentX); + int blockY = MathHelper.floor_double(currentY); + int blockZ = MathHelper.floor_double(currentZ); + + Block block = world.getBlock(blockX, blockY, blockZ); + + if(block.getMaterial() != Material.air) { + float blockResistance = block.getExplosionResistance(explosion.exploder, world, blockX, blockY, blockZ, x, y, z); + powerRemaining -= (blockResistance + 0.3F) * stepSize; + } + + if(powerRemaining > 0.0F) { + affectedBlocks.add(new ChunkPosition(blockX, blockY, blockZ)); + } + + currentX += d0 * (double) stepSize; + currentY += d1 * (double) stepSize; + currentZ += d2 * (double) stepSize; + } + } + } + } + } + + return affectedBlocks; + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/BlockProcessorStandard.java b/src/main/java/com/hbm/explosion/vanillant/BlockProcessorStandard.java new file mode 100644 index 000000000..45debcd59 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/BlockProcessorStandard.java @@ -0,0 +1,58 @@ +package com.hbm.explosion.vanillant; + +import java.util.HashSet; +import java.util.Iterator; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +public class BlockProcessorStandard implements IBlockProcessor { + + protected IDropChanceMutator chance; + + public BlockProcessorStandard() { } + + public BlockProcessorStandard(IDropChanceMutator chance) { + this.chance = chance; + } + + @Override + public void process(ExplosionVNT explosion, World world, double x, double y, double z, HashSet affectedBlocks) { + + Iterator iterator = affectedBlocks.iterator(); + float dropChance = 1.0F / explosion.size; + + while(iterator.hasNext()) { + ChunkPosition chunkposition = (ChunkPosition) iterator.next(); + int blockX = chunkposition.chunkPosX; + int blockY = chunkposition.chunkPosY; + int blockZ = chunkposition.chunkPosZ; + Block block = world.getBlock(blockX, blockY, blockZ); + + if(block.getMaterial() != Material.air) { + if(block.canDropFromExplosion(null)) { + + if(chance != null) { + dropChance = chance.mutateDropChance(explosion, block, blockX, blockY, blockZ, dropChance); + } + + block.dropBlockAsItemWithChance(world, blockX, blockY, blockZ, world.getBlockMetadata(blockX, blockY, blockZ), dropChance, 0); + } + + block.onBlockExploded(world, blockX, blockY, blockZ, null); + } + } + } + + public BlockProcessorStandard setNoDrop() { + this.chance = new DropChanceNever(); + return this; + } + public BlockProcessorStandard setAllDrop() { + this.chance = new DropChanceAlways(); + return this; + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/DropChanceAlways.java b/src/main/java/com/hbm/explosion/vanillant/DropChanceAlways.java new file mode 100644 index 000000000..017e4b7fd --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/DropChanceAlways.java @@ -0,0 +1,16 @@ +package com.hbm.explosion.vanillant; + +import net.minecraft.block.Block; + +/** + * Now it's getting ridiculously over-engineered + * @author hbm + * + */ +public class DropChanceAlways implements IDropChanceMutator { + + @Override + public float mutateDropChance(ExplosionVNT explosion, Block block, int x, int y, int z, float chance) { + return 1F; + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/DropChanceNever.java b/src/main/java/com/hbm/explosion/vanillant/DropChanceNever.java new file mode 100644 index 000000000..12842fd7e --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/DropChanceNever.java @@ -0,0 +1,11 @@ +package com.hbm.explosion.vanillant; + +import net.minecraft.block.Block; + +public class DropChanceNever implements IDropChanceMutator { + + @Override + public float mutateDropChance(ExplosionVNT explosion, Block block, int x, int y, int z, float chance) { + return 0; + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java b/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java new file mode 100644 index 000000000..324b3bc03 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java @@ -0,0 +1,87 @@ +package com.hbm.explosion.vanillant; + +import java.util.HashMap; +import java.util.HashSet; + +import net.minecraft.entity.Entity; +import net.minecraft.util.Vec3; +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +/** + * Time to over-engineer this into fucking oblivion so that I never have to write a vanilla-esque explosion class ever again + * @author hbm + * + */ +public class ExplosionVNT { + + //explosions only need one of these, in the unlikely event that we do need to combine different types we can just write a wrapper that acts as a chainloader + private IBlockAllocator blockAllocator; + private IEntityAllocator entityAllocator; + private IBlockProcessor blockProcessor; + private IEntityProcessor entityProcessor; + //since we want to reduce each effect to the bare minimum (sound, particles, etc. being separate) we definitely need multiple most of the time + private IExplosionSFX[] sfx; + + protected World world; + protected double posX; + protected double posY; + protected double posZ; + protected float size; + public Entity exploder; + + public ExplosionVNT(World world, double x, double y, double z, float size) { + this(world, x, y, z, size, null); + } + + public ExplosionVNT(World world, double x, double y, double z, float size, Entity exploder) { + this.world = world; + this.posX = x; + this.posY = y; + this.posZ = z; + this.size = size; + this.exploder = exploder; + } + + public void explode() { + + boolean processBlocks = blockAllocator != null && blockProcessor != null; + boolean processEntities = entityAllocator != null && entityProcessor != null; + + HashSet affectedBlocks = null; + HashMap affectedEntities = null; + + if(processBlocks) affectedBlocks = blockAllocator.allocate(this, world, posX, posY, posZ, size); + if(processEntities) affectedEntities = entityAllocator.allocate(this, world, posX, posY, posZ, size); + + if(processBlocks) blockProcessor.process(this, world, posX, posY, posZ, affectedBlocks); + if(processEntities) entityProcessor.process(this, world, posX, posY, posZ, affectedEntities); + + if(sfx != null) { + for(IExplosionSFX fx : sfx) { + fx.doEffect(this, world, posX, posY, posZ, size); + } + } + } + + public ExplosionVNT setBlockAllocator(IBlockAllocator blockAllocator) { + this.blockAllocator = blockAllocator; + return this; + } + public ExplosionVNT setEntityAllocator(IEntityAllocator entityAllocator) { + this.entityAllocator = entityAllocator; + return this; + } + public ExplosionVNT setBlockProcessor(IBlockProcessor blockProcessor) { + this.blockProcessor = blockProcessor; + return this; + } + public ExplosionVNT setEntityprocessor(IEntityProcessor entityProcessor) { + this.entityProcessor = entityProcessor; + return this; + } + public ExplosionVNT setSFX(IExplosionSFX... sfx) { + this.sfx = sfx; + return this; + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/IBlockAllocator.java b/src/main/java/com/hbm/explosion/vanillant/IBlockAllocator.java new file mode 100644 index 000000000..2407a3960 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/IBlockAllocator.java @@ -0,0 +1,11 @@ +package com.hbm.explosion.vanillant; + +import java.util.HashSet; + +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +public interface IBlockAllocator { + + public HashSet allocate(ExplosionVNT explosion, World world, double x, double y, double z, float size); +} diff --git a/src/main/java/com/hbm/explosion/vanillant/IBlockProcessor.java b/src/main/java/com/hbm/explosion/vanillant/IBlockProcessor.java new file mode 100644 index 000000000..0b0d93cbd --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/IBlockProcessor.java @@ -0,0 +1,11 @@ +package com.hbm.explosion.vanillant; + +import java.util.HashSet; + +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +public interface IBlockProcessor { + + public void process(ExplosionVNT explosion, World world, double x, double y, double z, HashSet affectedBlocks); +} diff --git a/src/main/java/com/hbm/explosion/vanillant/IDropChanceMutator.java b/src/main/java/com/hbm/explosion/vanillant/IDropChanceMutator.java new file mode 100644 index 000000000..107358af8 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/IDropChanceMutator.java @@ -0,0 +1,8 @@ +package com.hbm.explosion.vanillant; + +import net.minecraft.block.Block; + +public interface IDropChanceMutator { + + public float mutateDropChance(ExplosionVNT explosion, Block block, int x, int y, int z, float chance); +} diff --git a/src/main/java/com/hbm/explosion/vanillant/IEntityAllocator.java b/src/main/java/com/hbm/explosion/vanillant/IEntityAllocator.java new file mode 100644 index 000000000..997afa96f --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/IEntityAllocator.java @@ -0,0 +1,12 @@ +package com.hbm.explosion.vanillant; + +import java.util.HashMap; + +import net.minecraft.entity.Entity; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public interface IEntityAllocator { + + public HashMap allocate(ExplosionVNT explosion, World world, double x, double y, double z, float size); +} diff --git a/src/main/java/com/hbm/explosion/vanillant/IEntityProcessor.java b/src/main/java/com/hbm/explosion/vanillant/IEntityProcessor.java new file mode 100644 index 000000000..c9416aed3 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/IEntityProcessor.java @@ -0,0 +1,14 @@ +package com.hbm.explosion.vanillant; + +import java.util.HashMap; +import java.util.HashSet; + +import net.minecraft.entity.Entity; +import net.minecraft.util.Vec3; +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +public interface IEntityProcessor { + + public void process(ExplosionVNT explosion, World world, double x, double y, double z, HashMap affectedBlocks); +} diff --git a/src/main/java/com/hbm/explosion/vanillant/IExplosionSFX.java b/src/main/java/com/hbm/explosion/vanillant/IExplosionSFX.java new file mode 100644 index 000000000..2b4846e2e --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/IExplosionSFX.java @@ -0,0 +1,11 @@ +package com.hbm.explosion.vanillant; + +import java.util.HashSet; + +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +public interface IExplosionSFX { + + public void doEffect(ExplosionVNT explosion, World world, double x, double y, double z, float size); +} diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 4978a9a92..735d4c36d 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -62,6 +62,10 @@ public class OreDictManager { public static final String KEY_OIL_TAR = "oiltar"; public static final String KEY_CRACK_TAR = "cracktar"; public static final String KEY_COAL_TAR = "coaltar"; + + public static final String KEY_TOOL_SCREWDRIVER = "ntmscrewdriver"; + public static final String KEY_TOOL_HANDDRILL = "ntmhanddrill"; + public static final String KEY_TOOL_CHEMISTRYSET = "ntmchemistryset"; /* * PREFIXES @@ -376,6 +380,13 @@ public class OreDictManager { OreDictionary.registerOre(KEY_OIL_TAR, fromOne(oil_tar, EnumTarType.CRUDE)); OreDictionary.registerOre(KEY_CRACK_TAR, fromOne(oil_tar, EnumTarType.CRACK)); OreDictionary.registerOre(KEY_COAL_TAR, fromOne(oil_tar, EnumTarType.COAL)); + + OreDictionary.registerOre(KEY_TOOL_SCREWDRIVER, new ItemStack(screwdriver, 1, OreDictionary.WILDCARD_VALUE)); + OreDictionary.registerOre(KEY_TOOL_SCREWDRIVER, new ItemStack(screwdriver_desh, 1, OreDictionary.WILDCARD_VALUE)); + OreDictionary.registerOre(KEY_TOOL_HANDDRILL, new ItemStack(hand_drill, 1, OreDictionary.WILDCARD_VALUE)); + OreDictionary.registerOre(KEY_TOOL_HANDDRILL, new ItemStack(hand_drill_desh, 1, OreDictionary.WILDCARD_VALUE)); + OreDictionary.registerOre(KEY_TOOL_CHEMISTRYSET, new ItemStack(chemistry_set, 1, OreDictionary.WILDCARD_VALUE)); + OreDictionary.registerOre(KEY_TOOL_CHEMISTRYSET, new ItemStack(chemistry_set_boron, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre(getReflector(), neutron_reflector); OreDictionary.registerOre("oreRareEarth", ore_rare); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 7ea076dcd..8c67af6a0 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -306,6 +306,7 @@ public class ModItems { public static Item photo_panel; public static Item sat_base; public static Item thruster_nuclear; + public static Item safety_fuse; public static Item undefined; @@ -1862,8 +1863,14 @@ public class ModItems { public static Item fuse; public static Item redcoil_capacitor; public static Item titanium_filter; + //by using these in crafting table recipes, i'm running the risk of making my recipes too greg-ian (which i don't like) + //in the event that i forget about the meaning of the word "sparingly", please throw a brick at my head public static Item screwdriver; + public static Item screwdriver_desh; public static Item hand_drill; + public static Item hand_drill_desh; + public static Item chemistry_set; + public static Item chemistry_set_boron; public static Item overfuse; public static Item arc_electrode; public static Item arc_electrode_burnt; @@ -2274,6 +2281,8 @@ public class ModItems { public static Item hazmat_red_kit; public static Item hazmat_grey_kit; public static Item kit_custom; + public static Item kit_toolbox_empty; + public static Item kit_toolbox; public static Item loot_10; public static Item loot_15; @@ -2621,6 +2630,7 @@ public class ModItems { photo_panel = new Item().setUnlocalizedName("photo_panel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":photo_panel"); sat_base = new Item().setUnlocalizedName("sat_base").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sat_base"); thruster_nuclear = new Item().setUnlocalizedName("thruster_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thruster_nuclear"); + safety_fuse = new Item().setUnlocalizedName("safety_fuse").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":safety_fuse"); undefined = new ItemCustomLore().setUnlocalizedName("undefined").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":undefined"); @@ -4516,8 +4526,12 @@ public class ModItems { fuse = new ItemCustomLore().setUnlocalizedName("fuse").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fuse"); redcoil_capacitor = new ItemCapacitor(10).setUnlocalizedName("redcoil_capacitor").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":redcoil_capacitor"); titanium_filter = new ItemCapacitor(6 * 60 * 60 * 20).setUnlocalizedName("titanium_filter").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":titanium_filter"); - screwdriver = new ItemTooling(ToolType.SCREWDRIVER, 100).setUnlocalizedName("screwdriver").setTextureName(RefStrings.MODID + ":screwdriver"); - hand_drill = new ItemTooling(ToolType.HAND_DRILL, 100).setUnlocalizedName("hand_drill").setTextureName(RefStrings.MODID + ":hand_drill"); + screwdriver = new ItemTooling(ToolType.SCREWDRIVER, 100).setUnlocalizedName("screwdriver"); + screwdriver_desh = new ItemTooling(ToolType.SCREWDRIVER, 0).setUnlocalizedName("screwdriver_desh"); + hand_drill = new ItemTooling(ToolType.HAND_DRILL, 100).setUnlocalizedName("hand_drill"); + hand_drill_desh = new ItemTooling(ToolType.HAND_DRILL, 0).setUnlocalizedName("hand_drill_desh"); + chemistry_set = new ItemCraftingDegradation(100).setUnlocalizedName("chemistry_set"); + chemistry_set_boron = new ItemCraftingDegradation(0).setUnlocalizedName("chemistry_set_boron"); overfuse = new ItemCustomLore().setUnlocalizedName("overfuse").setMaxStackSize(1).setFull3D().setTextureName(RefStrings.MODID + ":overfuse"); arc_electrode = new ItemCustomLore().setUnlocalizedName("arc_electrode").setMaxDamage(250).setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setFull3D().setTextureName(RefStrings.MODID + ":arc_electrode"); arc_electrode_burnt = new Item().setUnlocalizedName("arc_electrode_burnt").setMaxStackSize(1).setFull3D().setTextureName(RefStrings.MODID + ":arc_electrode_burnt"); @@ -4607,7 +4621,9 @@ public class ModItems { hazmat_kit = new ItemStarterKit().setUnlocalizedName("hazmat_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":hazmat_kit"); hazmat_red_kit = new ItemStarterKit().setUnlocalizedName("hazmat_red_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":hazmat_red_kit"); hazmat_grey_kit = new ItemStarterKit().setUnlocalizedName("hazmat_grey_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":hazmat_grey_kit"); - kit_custom = new ItemKitCustom().setUnlocalizedName("kit_custom").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":kit"); + kit_custom = new ItemKitCustom().setUnlocalizedName("kit_custom").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":kit"); + kit_toolbox_empty = new Item().setUnlocalizedName("kit_toolbox_empty").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":kit_toolbox_empty"); + kit_toolbox = new ItemKitNBT().setUnlocalizedName("kit_toolbox").setCreativeTab(MainRegistry.consumableTab).setContainerItem(kit_toolbox_empty).setTextureName(RefStrings.MODID + ":kit_toolbox"); loot_10 = new ItemLootCrate().setUnlocalizedName("loot_10").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_10"); loot_15 = new ItemLootCrate().setUnlocalizedName("loot_15").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_15"); @@ -6011,6 +6027,7 @@ public class ModItems { GameRegistry.registerItem(coil_gold_torus, coil_gold_torus.getUnlocalizedName()); GameRegistry.registerItem(coil_tungsten, coil_tungsten.getUnlocalizedName()); GameRegistry.registerItem(coil_magnetized_tungsten, coil_magnetized_tungsten.getUnlocalizedName()); + GameRegistry.registerItem(safety_fuse, safety_fuse.getUnlocalizedName()); GameRegistry.registerItem(tank_steel, tank_steel.getUnlocalizedName()); GameRegistry.registerItem(motor, motor.getUnlocalizedName()); GameRegistry.registerItem(motor_desh, motor_desh.getUnlocalizedName()); @@ -6473,7 +6490,11 @@ public class ModItems { GameRegistry.registerItem(redcoil_capacitor, redcoil_capacitor.getUnlocalizedName()); GameRegistry.registerItem(titanium_filter, titanium_filter.getUnlocalizedName()); GameRegistry.registerItem(screwdriver, screwdriver.getUnlocalizedName()); + GameRegistry.registerItem(screwdriver_desh, screwdriver_desh.getUnlocalizedName()); GameRegistry.registerItem(hand_drill, hand_drill.getUnlocalizedName()); + GameRegistry.registerItem(hand_drill_desh, hand_drill_desh.getUnlocalizedName()); + GameRegistry.registerItem(chemistry_set, chemistry_set.getUnlocalizedName()); + GameRegistry.registerItem(chemistry_set_boron, chemistry_set_boron.getUnlocalizedName()); GameRegistry.registerItem(overfuse, overfuse.getUnlocalizedName()); GameRegistry.registerItem(arc_electrode, arc_electrode.getUnlocalizedName()); GameRegistry.registerItem(arc_electrode_burnt, arc_electrode_burnt.getUnlocalizedName()); @@ -7883,6 +7904,8 @@ public class ModItems { GameRegistry.registerItem(hazmat_grey_kit, hazmat_grey_kit.getUnlocalizedName()); GameRegistry.registerItem(kit_custom, kit_custom.getUnlocalizedName()); GameRegistry.registerItem(euphemium_kit, euphemium_kit.getUnlocalizedName()); + GameRegistry.registerItem(kit_toolbox_empty, kit_toolbox_empty.getUnlocalizedName()); + GameRegistry.registerItem(kit_toolbox, kit_toolbox.getUnlocalizedName()); GameRegistry.registerItem(letter, letter.getUnlocalizedName()); //Misile Loot Boxes diff --git a/src/main/java/com/hbm/items/special/ItemHoloTape.java b/src/main/java/com/hbm/items/special/ItemHoloTape.java index ffeff8b82..3d79e0245 100644 --- a/src/main/java/com/hbm/items/special/ItemHoloTape.java +++ b/src/main/java/com/hbm/items/special/ItemHoloTape.java @@ -6,5 +6,6 @@ public class ItemHoloTape extends ItemEnumMulti { public ItemHoloTape(Class theEnum, boolean multiName, boolean multiTexture) { super(theEnum, multiName, multiTexture); + this.setMaxStackSize(1); } } diff --git a/src/main/java/com/hbm/items/special/ItemKitCustom.java b/src/main/java/com/hbm/items/special/ItemKitCustom.java index 2e921294a..7e013a018 100644 --- a/src/main/java/com/hbm/items/special/ItemKitCustom.java +++ b/src/main/java/com/hbm/items/special/ItemKitCustom.java @@ -14,32 +14,13 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.world.World; -public class ItemKitCustom extends Item { +public class ItemKitCustom extends ItemKitNBT { @SideOnly(Side.CLIENT) IIcon overlay1; @SideOnly(Side.CLIENT) IIcon overlay2; - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - ItemStack[] stacks = ItemStackUtil.readStacksFromNBT(stack); - - if(stacks != null) { - - for(ItemStack item : stacks) { - if(item != null) { - player.inventory.addItemStackToInventory(item.copy()); - } - } - } - - stack.stackSize--; - - return stack; - } - @Override @SideOnly(Side.CLIENT) public int getRenderPasses(int metadata) { diff --git a/src/main/java/com/hbm/items/special/ItemKitNBT.java b/src/main/java/com/hbm/items/special/ItemKitNBT.java new file mode 100644 index 000000000..e310c04de --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemKitNBT.java @@ -0,0 +1,77 @@ +package com.hbm.items.special; + +import java.util.List; + +import com.hbm.items.ModItems; +import com.hbm.util.ItemStackUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class ItemKitNBT extends Item { + + public ItemKitNBT() { + this.setMaxStackSize(1); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + + ItemStack[] stacks = ItemStackUtil.readStacksFromNBT(stack); + + if(stacks != null) { + + for(ItemStack item : stacks) { + if(item != null) { + player.inventory.addItemStackToInventory(item.copy()); + } + } + } + + ItemStack container = stack.getItem().getContainerItem(stack); + + stack.stackSize--; + + if(container != null) { + + if(stack.stackSize > 0) { + player.inventory.addItemStackToInventory(container.copy()); + } else { + stack = container.copy(); + } + } + + world.playSoundAtEntity(player, "hbm:item.unpack", 1.0F, 1.0F); + + return stack; + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + + ItemStack[] stacks = ItemStackUtil.readStacksFromNBT(stack); + + if(stacks != null) { + + list.add("Contains:"); + + for(ItemStack item : stacks) { + list.add("-" + item.getDisplayName()); + } + } + } + + public static ItemStack create(ItemStack... contents) { + ItemStack stack = new ItemStack(ModItems.kit_toolbox); + stack.stackTagCompound = new NBTTagCompound(); + ItemStackUtil.addStacksToNBT(stack, contents); + + return stack; + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemCraftingDegradation.java b/src/main/java/com/hbm/items/tool/ItemCraftingDegradation.java new file mode 100644 index 000000000..58099e460 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemCraftingDegradation.java @@ -0,0 +1,42 @@ +package com.hbm.items.tool; + +import com.hbm.lib.RefStrings; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class ItemCraftingDegradation extends Item { + + public ItemCraftingDegradation(int durability) { + this.setMaxStackSize(1); + this.setMaxDamage(durability); + } + + @Override + public boolean doesContainerItemLeaveCraftingGrid(ItemStack stack) { + return false; + } + + @Override + public boolean hasContainerItem(ItemStack stack) { + return true; + } + + @Override + public ItemStack getContainerItem(ItemStack stack) { + if(this.getMaxDamage() > 0) { + stack.setItemDamage(stack.getItemDamage() + 1); + return stack; + + } else { + return stack; + } + } + + @Override + public Item setUnlocalizedName(String unlocalizedName) { + super.setUnlocalizedName(unlocalizedName); + this.setTextureName(RefStrings.MODID + ":"+ unlocalizedName); + return this; + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemTooling.java b/src/main/java/com/hbm/items/tool/ItemTooling.java index e0438232f..8131a076a 100644 --- a/src/main/java/com/hbm/items/tool/ItemTooling.java +++ b/src/main/java/com/hbm/items/tool/ItemTooling.java @@ -10,16 +10,15 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -public class ItemTooling extends Item { +public class ItemTooling extends ItemCraftingDegradation { ToolType type; public ItemTooling(ToolType type, int durability) { + super(durability); this.type = type; - this.setMaxStackSize(1); this.setFull3D(); this.setCreativeTab(MainRegistry.controlTab); - this.setMaxDamage(durability); } @Override diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 197295558..7898ba3bd 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -24,7 +24,6 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; -import net.minecraft.item.ItemDye; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraftforge.oredict.OreDictionary; @@ -51,9 +50,11 @@ public class CraftingManager { GameRegistry.addRecipe(new RBMKFuelCraftingHandler()); GameRegistry.addRecipe(new MKUCraftingHandler()); + GameRegistry.addRecipe(new ToolboxCraftingHandler()); //TODO: find out what this actually did RecipeSorter.register("hbm:rbmk", RBMKFuelCraftingHandler.class, RecipeSorter.Category.SHAPELESS, "after:minecraft:shapeless"); + RecipeSorter.register("hbm:toolbox", ToolboxCraftingHandler.class, RecipeSorter.Category.SHAPELESS, "after:minecraft:shapeless"); RecipeSorter.register("hbm:mku", MKUCraftingHandler.class, RecipeSorter.Category.SHAPED, "after:minecraft:shaped before:minecraft:shapeless"); } @@ -292,9 +293,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.black_hole, 1), new Object[] { "SSS", "SCS", "SSS", 'C', ModItems.singularity, 'S', ModItems.crystal_xen }); addRecipeAuto(new ItemStack(ModItems.crystal_xen, 1), new Object[] { "EEE", "EIE", "EEE", 'E', ModItems.powder_power, 'I', EUPH.ingot() }); - addRecipeAuto(new ItemStack(ModItems.screwdriver, 1), new Object[] { " I", " I ", "S ", 'S', STEEL.ingot(), 'I', IRON.ingot() }); - addShapelessAuto(new ItemStack(ModItems.overfuse, 1), new Object[] { ModItems.screwdriver, NP237.dust(), I.dust(), TH232.dust(), AT.dust(), ND.dust(), ModItems.board_copper, ModItems.black_hole, CS.dust() }); - addShapelessAuto(new ItemStack(ModItems.overfuse, 1), new Object[] { ModItems.screwdriver, ST.dust(), BR.dust(), CO.dust(), TS.dust(), NB.dust(), ModItems.board_copper, ModItems.black_hole, CE.dust() }); + addShapelessAuto(new ItemStack(ModItems.overfuse, 1), new Object[] { ModItems.bolt_tungsten, NP237.dust(), I.dust(), TH232.dust(), AT.dust(), ND.dust(), ModItems.board_copper, ModItems.black_hole, CS.dust() }); + addShapelessAuto(new ItemStack(ModItems.overfuse, 1), new Object[] { ModItems.bolt_tungsten, ST.dust(), BR.dust(), CO.dust(), TS.dust(), NB.dust(), ModItems.board_copper, ModItems.black_hole, CE.dust() }); addRecipeAuto(new ItemStack(ModItems.blades_aluminium, 1), new Object[] { " P ", "PIP", " P ", 'P', AL.plate(), 'I', AL.ingot() }); addRecipeAuto(new ItemStack(ModItems.blades_gold, 1), new Object[] { " P ", "PIP", " P ", 'P', GOLD.plate(), 'I', GOLD.ingot() }); @@ -539,7 +539,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.watch, 1), new Object[] { "LEL", "EWE", "LEL", 'E', EUPH.ingot(), 'L', KEY_BLUE, 'W', Items.clock }); addRecipeAuto(new ItemStack(ModItems.key, 1), new Object[] { " B", " B ", "P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten }); - addRecipeAuto(new ItemStack(ModItems.key_kit, 1), new Object[] { "PKP", "DTD", "PKP", 'P', GOLD.plate(), 'K', ModItems.key, 'D', DIAMOND.dust(), 'T', ModItems.screwdriver }); + addRecipeAuto(new ItemStack(ModItems.key_kit, 1), new Object[] { "PKP", "DTD", "PKP", 'P', GOLD.plate(), 'K', ModItems.key, 'D', DESH.dust(), 'T', ModItems.screwdriver }); addRecipeAuto(new ItemStack(ModItems.key_red, 1), new Object[] { "DSC", "SMS", "KSD", 'C', ModItems.circuit_targeting_tier4, 'M', Items.nether_star, 'K', ModItems.key, 'D', DESH.dust(), 'S', BIGMT.plate() }); addRecipeAuto(new ItemStack(ModItems.pin, 1), new Object[] { "W ", " W", " W", 'W', ModItems.wire_copper }); addRecipeAuto(new ItemStack(ModItems.padlock_rusty, 1), new Object[] { "I", "B", "I", 'I', IRON.ingot(), 'B', ModItems.bolt_tungsten }); @@ -781,6 +781,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.ingot_dineutronium, 8), new Object[] { "UUU", "UPU", "UUU", 'U', SBD.ingot(), 'P', new ItemStack(ModItems.particle_sparkticle).setStackDisplayName("Sparkticle (Temporary Recipe)") }); addRecipeAuto(new ItemStack(ModBlocks.fireworks, 1), new Object[] { "PPP", "PPP", "WIW", 'P', Items.paper, 'W', KEY_PLANKS, 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModItems.safety_fuse, 8), new Object[] { "SSS", "SGS", "SSS", 'S', Items.string, 'G', Items.gunpowder }); addRecipeAuto(new ItemStack(ModItems.rbmk_lid, 4), new Object[] { "PPP", "CCC", "PPP", 'P', STEEL.plate(), 'C', ModBlocks.concrete_asbestos }); addRecipeAuto(new ItemStack(ModItems.rbmk_lid_glass, 4), new Object[] { "LLL", "BBB", "P P", 'P', STEEL.plate(), 'L', ModBlocks.glass_lead, 'B', ModBlocks.glass_boron }); @@ -853,6 +854,10 @@ public class CraftingManager { addRecipeAuto(new ItemStack(Items.name_tag), new Object[] { "SB ", "BPB", " BP", 'S', Items.string, 'B', ANY_TAR.any(), 'P', Items.paper }); addRecipeAuto(new ItemStack(ModItems.rag, 4), new Object[] { "SW", "WS", 'S', Items.string, 'W', Blocks.wool }); + addShapelessAuto(new ItemStack(ModItems.solid_fuel, 10), new Object[] { ModItems.canister_heatingoil, KEY_TOOL_CHEMISTRYSET }); + addShapelessAuto(new ItemStack(ModItems.solid_fuel, 10), new Object[] { new ItemStack(ModItems.fluid_tank_full, 1, Fluids.HEATINGOIL.getID()), KEY_TOOL_CHEMISTRYSET }); + addShapelessAuto(new ItemStack(ModItems.solid_fuel, 10), new Object[] { new ItemStack(ModItems.fluid_tank_lead_full, 1, Fluids.HEATINGOIL.getID()), KEY_TOOL_CHEMISTRYSET }); + addRecipeAuto(new ItemStack(ModBlocks.machine_condenser), new Object[] { "SIS", "ICI", "SIS", 'S', STEEL.ingot(), 'I', IRON.plate(), 'C', ModItems.board_copper }); addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.TEST.ordinal()), new Object[] { Items.book, ModItems.canned_jizz }); @@ -860,7 +865,7 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.HADRON.ordinal()), new Object[] { Items.book, ModItems.fuse }); addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.STARTER.ordinal()), new Object[] { Items.book, Items.iron_ingot }); - addShapelessAuto(new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_RESTORED.ordinal()), new Object[] { new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_DIGAMMA.ordinal()), ModItems.screwdriver, ModItems.ducttape, ModItems.armor_polish }); + addShapelessAuto(new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_RESTORED.ordinal()), new Object[] { new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_DIGAMMA.ordinal()), KEY_TOOL_SCREWDRIVER, ModItems.ducttape, ModItems.armor_polish }); if(GeneralConfig.enableBabyMode) { addShapelessAuto(new ItemStack(ModItems.cordite, 3), new Object[] { ModItems.ballistite, Items.gunpowder, new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityConverterHeRf.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java similarity index 89% rename from src/main/java/com/hbm/tileentity/machine/TileEntityConverterHeRf.java rename to src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java index db3edcfa9..df95c0dce 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityConverterHeRf.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java @@ -1,4 +1,4 @@ -package com.hbm.tileentity.machine; +package com.hbm.tileentity.network; import com.hbm.calc.Location; import com.hbm.tileentity.TileEntityMachineBase; @@ -60,9 +60,16 @@ public class TileEntityConverterHeRf extends TileEntity implements IEnergyConnec return 0; } + private boolean recursionBrake = false; + @Override public long transferPower(long power) { + if(recursionBrake) + return power; + + recursionBrake = true; + // we have to limit the transfer amount because otherwise FEnSUs would overflow the RF output, twice long out = Math.min(power, Long.MAX_VALUE / 4); int toRF = (int) Math.min(Integer.MAX_VALUE, out * 4); @@ -81,6 +88,8 @@ public class TileEntityConverterHeRf extends TileEntity implements IEnergyConnec toRF -= energyTransferred; //to prevent energy duping } } + + recursionBrake = false; return power - (energyTransferred / 4); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityConverterRfHe.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java similarity index 84% rename from src/main/java/com/hbm/tileentity/machine/TileEntityConverterRfHe.java rename to src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java index 50f21b7e7..f17de5f83 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityConverterRfHe.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java @@ -1,4 +1,4 @@ -package com.hbm.tileentity.machine; +package com.hbm.tileentity.network; import com.hbm.interfaces.Untested; @@ -30,14 +30,20 @@ public class TileEntityConverterRfHe extends TileEntity implements IEnergyGenera } private long subBuffer; + private boolean recursionBrake = false;; @Untested @Override public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) { + if(recursionBrake) + return 0; + if(simulate) return 0; + recursionBrake = true; + long capacity = maxReceive / 4L; subBuffer = capacity; @@ -45,6 +51,8 @@ public class TileEntityConverterRfHe extends TileEntity implements IEnergyGenera this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } + recursionBrake = false; + return (int) ((capacity - subBuffer) * 4L); } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index bbb4b5c9e..e4938dd03 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -766,6 +766,7 @@ item.balefire_and_ham.name=Ham and Balefire-Eggs item.balefire_and_steel.name=Balefire-Zeug item.balefire_scrambled.name=Rühr-Balefire-Ei item.ball_dynamite.name=Dynamit +item.ball_tnt.name=TNT item.ballistite.name=Ballistit item.bandaid.name=Samtenes Pflaster item.bathwater.name=Toxisches Seifenwasser @@ -1021,6 +1022,8 @@ item.centrifuge_element.name=Zentrifugenelement item.centrifuge_tower.name=Zentrifugenturm item.chainsaw.name=Kettensäge item.cheese.name=Käse +item.chemistry_set.name=Laborgläser +item.chemistry_set_boron.name=Laborgläser (Borglas) item.chemistry_template.name=Chemievorlage: item.chernobylsign.name=Tschernobyl-Warnschild-Streitaxt item.chlorine_pinwheel.name=Chlorgas-Konverter @@ -1523,6 +1526,7 @@ item.gun_xvl1456.name=XVL1456 Tau-Kanone Prototyp item.gun_xvl1456_ammo.name=Kiste mit erschöpftem Uran-235 item.gun_zomg.name=ZOMG Kanone item.hand_drill.name=Handbohrer +item.hand_drill_desh.name=Desh-Handbohrer item.hazmat_boots.name=Strahlenschutzstiefel item.hazmat_boots_grey.name=Hochleistungs-Strahlenschutzstiefel item.hazmat_boots_red.name=Verbesserte Strahlenschutzstiefel @@ -1685,6 +1689,8 @@ item.key.name=Schlüssel item.key_fake.name=Gefälschter Schlüssel item.key_kit.name=Schlüssel-Imitationskit item.key_red.name=Roter Schlüssel +item.kit_toolbox.name=Werkzeugkasten +item.kit_toolbox_empty.name=Leerer Werkzeugkasten item.laser_crystal_bismuth.desc=Bismuth-Samarium-Uran-Thorium-Kristallmatrix item.laser_crystal_bismuth.name=BiSmUTh-Laserkristall item.laser_crystal_cmb.desc=Antischrabidium in einem CMB-Schrabidat Legierungsgitter @@ -2138,6 +2144,7 @@ item.powder_astatine.name=Astatstaub item.powder_at209.name=Astat-209-Staub item.powder_au198.name=Gold-198-Staub item.powder_australium.name=Australiumstaub +item.powder_bakelite.name=Bakelitstaub item.powder_balefire.name=Thermonukleare Asche item.powder_beryllium.name=Berylliumstaub item.powder_borax.name=Borax @@ -2464,6 +2471,7 @@ item.rune_hagalaz.name=Rough Catalyst Matrix item.rune_isa.name=Cool Catalyst Matrix item.rune_jera.name=Multiplicative Catalyst Matrix item.rune_thurisaz.name=Additive Catalyst Matrix +item.safety_fuse.name=Zündschnur item.sat_base.name=Satellitenkörper item.sat_chip.name=Satelliten-ID-Chip item.sat_coord.name=Satelliten-Zielmarkierer @@ -2498,6 +2506,7 @@ item.scrap.name=Schrott item.scrap_nuclear.name=Radioaktiver Schutt item.scrap_plastic.name=Geschreddertes Plastik item.screwdriver.name=Schraubenzieher +item.screwdriver_desh.name=Desh-Schraubenzieher item.scrumpy.name=Flasche Scrumpy item.security_boots.name=Sicherheitsstiefel item.security_helmet.name=Sicherheitshelm @@ -3521,6 +3530,7 @@ tile.therm_exo.name=Exothermische Bombe tile.tile_lab.name=Laborfliesen tile.tile_lab_broken.name=Gebrochene Labotfliesen tile.tile_lab_cracked.name=Gesprungene Laborfliesen +tile.tnt_ntm.name=Echtes TNT tile.toxic_block.name=Stereotypischer grüner Schleim tile.turret_cheapo.name=Billigsdorfer Gatling-Geschütz tile.turret_chekhov.name=Schweres MG-Geschütz "Tschechows Gewehr" diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 8ae4e4cf5..3294f7d01 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -933,6 +933,7 @@ item.balefire_and_ham.name=Ham and Balefire Eggs item.balefire_and_steel.name=Balefire and Steel item.balefire_scrambled.name=Scrambled Balefire Egg item.ball_dynamite.name=Dynamite +item.ball_tnt.name=TNT item.ballistite.name=Ballistite item.bandaid.name=Velvet Band-Aid item.bathwater.name=Toxic Soapy Water @@ -1199,6 +1200,8 @@ item.centrifuge_element.name=Centrifuge Element item.centrifuge_tower.name=Centrifuge Tower item.chainsaw.name=Chainsaw item.cheese.name=Cheese +item.chemistry_set.name=Laboratory Glassware +item.chemistry_set_boron.name=Laboratory Glassware (Boron Glass) item.chemistry_template.name=Chemistry Template: item.chernobylsign.name=Chernobyl Warning Sign Battle Axe item.chlorine_pinwheel.name=Chlorine Pinwheel @@ -1719,6 +1722,7 @@ item.gun_xvl1456.name=XVL1456 Tau Cannon Prototype item.gun_xvl1456_ammo.name=Depleted Uranium-235 Box item.gun_zomg.name=ZOMG Cannon item.hand_drill.name=Hand Drill +item.hand_drill_desh.name=Desh Hand Drill item.hazmat_boots.name=Hazmat Boots item.hazmat_boots_grey.name=High-Performance Hazmat Boots item.hazmat_boots_red.name=Advanced Hazmat Boots @@ -1898,6 +1902,8 @@ item.key_kit.name=Key Imitation Kit item.key_red.name=Red Key item.key_red.desc=Explore the other side. item.key_red.desc.P11=§4e§r +item.kit_toolbox.name=Toolbox +item.kit_toolbox_empty.name=Empty Toolbox item.laser_crystal_bismuth.desc=Bismuth-Samarium-Uranium-Thorium crystal matrix item.laser_crystal_bismuth.name=BiSmUTh Laser Crystal item.laser_crystal_cmb.desc=Antischrabidium Suspended in a CMB-Schrabidate Alloy Lattice @@ -2402,6 +2408,7 @@ item.powder_astatine.name=Astatine Powder item.powder_at209.name=Astatine-209 Powder item.powder_au198.name=Gold-198 Powder item.powder_australium.name=Australium Powder +item.powder_bakelite.name=Bakelite Powder item.powder_balefire.name=Thermonuclear Ashes item.powder_beryllium.name=Beryllium Powder item.powder_borax.name=Borax @@ -2788,6 +2795,7 @@ item.rune_hagalaz.name=Rough Catalyst Matrix item.rune_isa.name=Cool Catalyst Matrix item.rune_jera.name=Multiplicative Catalyst Matrix item.rune_thurisaz.name=Additive Catalyst Matrix +item.safety_fuse.name=Safety Fuse item.sat_base.name=Satellite Base item.sat_chip.name=Satellite ID-Chip item.sat_coord.name=Satellite Designator @@ -2823,6 +2831,7 @@ item.scrap_nuclear.name=Radioactive Scraps item.scrap_plastic.name=Plastic Scraps item.screwdriver.name=Screwdriver item.screwdriver.desc=Could be used instead of a fuse... +item.screwdriver_desh.name=Desh Screwdriver item.scrumpy.name=Bottle of Scrumpy item.security_boots.name=Security Boots item.security_helmet.name=Security Helmet @@ -3858,6 +3867,7 @@ tile.therm_exo.name=Exothermic Bomb tile.tile_lab.name=Laboratory Tiles tile.tile_lab_broken.name=Broken Laboratory Tiles tile.tile_lab_cracked.name=Cracked Laboratory Tiles +tile.tnt_ntm.name=Actual TNT tile.toxic_block.name=Stereotypical Green Ooze tile.turret_cheapo.name=Cheapo Gatling Sentry tile.turret_chekhov.name=Heavy Machine Gun Turret "Chekhov's Gun" diff --git a/src/main/resources/assets/hbm/textures/blocks/dynamite_top.png b/src/main/resources/assets/hbm/textures/blocks/dynamite_top.png index dd7ee6a25..3d4fe7f40 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/dynamite_top.png and b/src/main/resources/assets/hbm/textures/blocks/dynamite_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/tnt_bottom.png b/src/main/resources/assets/hbm/textures/blocks/tnt_bottom.png new file mode 100644 index 000000000..960e421ee Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/tnt_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/tnt_side.png b/src/main/resources/assets/hbm/textures/blocks/tnt_side.png new file mode 100644 index 000000000..1673e3459 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/tnt_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/tnt_top.png b/src/main/resources/assets/hbm/textures/blocks/tnt_top.png new file mode 100644 index 000000000..f162242a9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/tnt_top.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/aromatics.png b/src/main/resources/assets/hbm/textures/gui/fluids/aromatics.png index 432bf3dea..1a69ec3c4 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/aromatics.png and b/src/main/resources/assets/hbm/textures/gui/fluids/aromatics.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/biofuel.png b/src/main/resources/assets/hbm/textures/gui/fluids/biofuel.png index 687c2a190..294a5f639 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/biofuel.png and b/src/main/resources/assets/hbm/textures/gui/fluids/biofuel.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/biogas.png b/src/main/resources/assets/hbm/textures/gui/fluids/biogas.png index 387f7c44c..148996fe2 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/biogas.png and b/src/main/resources/assets/hbm/textures/gui/fluids/biogas.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/carbondioxide.png b/src/main/resources/assets/hbm/textures/gui/fluids/carbondioxide.png index 16e710316..9db8ec7bc 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/carbondioxide.png and b/src/main/resources/assets/hbm/textures/gui/fluids/carbondioxide.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/coolant.png b/src/main/resources/assets/hbm/textures/gui/fluids/coolant.png index 058e8c6d5..1e2aea6af 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/coolant.png and b/src/main/resources/assets/hbm/textures/gui/fluids/coolant.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/deuterium.png b/src/main/resources/assets/hbm/textures/gui/fluids/deuterium.png index d2d4c3587..8640659be 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/deuterium.png and b/src/main/resources/assets/hbm/textures/gui/fluids/deuterium.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/diesel.png b/src/main/resources/assets/hbm/textures/gui/fluids/diesel.png new file mode 100644 index 000000000..ebd7d470d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/diesel.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/diesel_crack.png b/src/main/resources/assets/hbm/textures/gui/fluids/diesel_crack.png new file mode 100644 index 000000000..40bbe5e3b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/diesel_crack.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/ethanol.png b/src/main/resources/assets/hbm/textures/gui/fluids/ethanol.png index 8ce2d28fa..672e1b797 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/ethanol.png and b/src/main/resources/assets/hbm/textures/gui/fluids/ethanol.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/fracksol.png b/src/main/resources/assets/hbm/textures/gui/fluids/fracksol.png index 26eff807a..2fc62c152 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/fracksol.png and b/src/main/resources/assets/hbm/textures/gui/fluids/fracksol.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/gas.png b/src/main/resources/assets/hbm/textures/gui/fluids/gas.png index 8fd49f3be..6d012fd6f 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/gas.png and b/src/main/resources/assets/hbm/textures/gui/fluids/gas.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/gasoline.png b/src/main/resources/assets/hbm/textures/gui/fluids/gasoline.png index 3483df5de..8a7b8a4fd 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/gasoline.png and b/src/main/resources/assets/hbm/textures/gui/fluids/gasoline.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/heavywater.png b/src/main/resources/assets/hbm/textures/gui/fluids/heavywater.png index 2941c349a..03882ed06 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/heavywater.png and b/src/main/resources/assets/hbm/textures/gui/fluids/heavywater.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/helium3.png b/src/main/resources/assets/hbm/textures/gui/fluids/helium3.png index 81e73ec09..feebd9cea 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/helium3.png and b/src/main/resources/assets/hbm/textures/gui/fluids/helium3.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/hotsteam.png b/src/main/resources/assets/hbm/textures/gui/fluids/hotsteam.png index a4fc917b6..f1f395a0c 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/hotsteam.png and b/src/main/resources/assets/hbm/textures/gui/fluids/hotsteam.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/hydrogen.png b/src/main/resources/assets/hbm/textures/gui/fluids/hydrogen.png index f18fc4b28..cf9287903 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/hydrogen.png and b/src/main/resources/assets/hbm/textures/gui/fluids/hydrogen.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/kerosene.png b/src/main/resources/assets/hbm/textures/gui/fluids/kerosene.png index 0e8b850f1..c10291c53 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/kerosene.png and b/src/main/resources/assets/hbm/textures/gui/fluids/kerosene.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/lightoil.png b/src/main/resources/assets/hbm/textures/gui/fluids/lightoil.png index 4ce9dfacc..629ce86a4 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/lightoil.png and b/src/main/resources/assets/hbm/textures/gui/fluids/lightoil.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/lightoil_crack.png b/src/main/resources/assets/hbm/textures/gui/fluids/lightoil_crack.png index e5c16933a..0d37547ea 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/lightoil_crack.png and b/src/main/resources/assets/hbm/textures/gui/fluids/lightoil_crack.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/lpg.png b/src/main/resources/assets/hbm/textures/gui/fluids/lpg.png index 398cec75e..780eeb8b0 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/lpg.png and b/src/main/resources/assets/hbm/textures/gui/fluids/lpg.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/nitan.png b/src/main/resources/assets/hbm/textures/gui/fluids/nitan.png index 21e15cfae..5aa0df845 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/nitan.png and b/src/main/resources/assets/hbm/textures/gui/fluids/nitan.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/oxygen.png b/src/main/resources/assets/hbm/textures/gui/fluids/oxygen.png index a99366292..08c0d3875 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/oxygen.png and b/src/main/resources/assets/hbm/textures/gui/fluids/oxygen.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/petroil.png b/src/main/resources/assets/hbm/textures/gui/fluids/petroil.png index 936271aba..257cb3d2f 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/petroil.png and b/src/main/resources/assets/hbm/textures/gui/fluids/petroil.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/petroleum.png b/src/main/resources/assets/hbm/textures/gui/fluids/petroleum.png index 21adc1b38..36b89da19 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/petroleum.png and b/src/main/resources/assets/hbm/textures/gui/fluids/petroleum.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/reclaimed.png b/src/main/resources/assets/hbm/textures/gui/fluids/reclaimed.png index 299d117d6..e61820816 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/reclaimed.png and b/src/main/resources/assets/hbm/textures/gui/fluids/reclaimed.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/spentsteam.png b/src/main/resources/assets/hbm/textures/gui/fluids/spentsteam.png index bb8efddf0..508188727 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/spentsteam.png and b/src/main/resources/assets/hbm/textures/gui/fluids/spentsteam.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/steam.png b/src/main/resources/assets/hbm/textures/gui/fluids/steam.png index 55938868c..bb1c3d747 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/steam.png and b/src/main/resources/assets/hbm/textures/gui/fluids/steam.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/superhotsteam.png b/src/main/resources/assets/hbm/textures/gui/fluids/superhotsteam.png index 6d651b347..b540aafd8 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/superhotsteam.png and b/src/main/resources/assets/hbm/textures/gui/fluids/superhotsteam.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/tritium.png b/src/main/resources/assets/hbm/textures/gui/fluids/tritium.png index 101762059..f1765a02f 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/tritium.png and b/src/main/resources/assets/hbm/textures/gui/fluids/tritium.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/ultrahotsteam.png b/src/main/resources/assets/hbm/textures/gui/fluids/ultrahotsteam.png index 9df61baa4..0c688db61 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/ultrahotsteam.png and b/src/main/resources/assets/hbm/textures/gui/fluids/ultrahotsteam.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/unsaturateds.png b/src/main/resources/assets/hbm/textures/gui/fluids/unsaturateds.png index 4d4dfced6..c40dc81f2 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/unsaturateds.png and b/src/main/resources/assets/hbm/textures/gui/fluids/unsaturateds.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/water_base.png b/src/main/resources/assets/hbm/textures/gui/fluids/water_base.png new file mode 100644 index 000000000..119c8c3b3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/water_base.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/water_opaque_base.png b/src/main/resources/assets/hbm/textures/gui/fluids/water_opaque_base.png new file mode 100644 index 000000000..83bfaa0ba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/water_opaque_base.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/xenon.png b/src/main/resources/assets/hbm/textures/gui/fluids/xenon.png index 12fcf0a5a..97ec52a56 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids/xenon.png and b/src/main/resources/assets/hbm/textures/gui/fluids/xenon.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chemistry_set.png b/src/main/resources/assets/hbm/textures/items/chemistry_set.png new file mode 100644 index 000000000..3203a556b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chemistry_set.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chemistry_set_boron.png b/src/main/resources/assets/hbm/textures/items/chemistry_set_boron.png new file mode 100644 index 000000000..7bc9b9e97 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chemistry_set_boron.png differ diff --git a/src/main/resources/assets/hbm/textures/items/hand_drill_desh.png b/src/main/resources/assets/hbm/textures/items/hand_drill_desh.png new file mode 100644 index 000000000..839456637 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/hand_drill_desh.png differ diff --git a/src/main/resources/assets/hbm/textures/items/safety_fuse.png b/src/main/resources/assets/hbm/textures/items/safety_fuse.png index 45842eca9..4d15d94d8 100644 Binary files a/src/main/resources/assets/hbm/textures/items/safety_fuse.png and b/src/main/resources/assets/hbm/textures/items/safety_fuse.png differ diff --git a/src/main/resources/assets/hbm/textures/items/screwdriver_desh.png b/src/main/resources/assets/hbm/textures/items/screwdriver_desh.png new file mode 100644 index 000000000..a5c7920c8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/screwdriver_desh.png differ