diff --git a/changelog b/changelog index 889b1bfbe..3e375c3f5 100644 --- a/changelog +++ b/changelog @@ -16,6 +16,10 @@ * Slightly adjusted the automatic buzzsaw's texture * Mobs can no longer spawn on most versions of concrete * Notable exceptions are mossy and cracked concrete bricks +* Increased the yield of lye from wood ash +* All fluid tanks larger than barrels now have dynamic IO speed instead of providing their entire contents instantly + * Tank fill will slow down the fuller the tank becomes, tank drain also slow downs as it gets emptier + * This means that multiple tanks in IO mode in the same network will still ping pong, but instead of firing their entire contents over the network, they will even out ## Fixed * Fixed RoR graph showing the wrong name in the GUI diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 6180127a9..4c6fc379c 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -995,6 +995,7 @@ public class ModBlocks { public static Block machine_fluidtank; public static Block machine_bat9000; + public static Block machine_bigasstank; public static Block machine_orbus; public static Block launch_pad; @@ -2209,6 +2210,7 @@ public class ModBlocks { machine_mixer = new MachineMixer(Material.iron).setBlockName("machine_mixer").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_fluidtank = new MachineFluidTank(Material.iron).setBlockName("machine_fluidtank").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_bat9000 = new MachineBigAssTank9000(Material.iron).setBlockName("machine_bat9000").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_bigasstank = new MachineBigAssTank().setBlockName("machine_bigasstank").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_orbus = new MachineOrbus(Material.iron).setBlockName("machine_orbus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_turbofan = new MachineTurbofan(Material.iron).setBlockName("machine_turbofan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_turbinegas = new MachineTurbineGas(Material.iron).setBlockName("machine_turbinegas").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3254,6 +3256,7 @@ public class ModBlocks { register(machine_mixer); register(machine_fluidtank); register(machine_bat9000); + register(machine_bigasstank); register(machine_orbus); GameRegistry.registerBlock(machine_boiler_off, machine_boiler_off.getUnlocalizedName()); register(machine_steam_engine); diff --git a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank.java b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank.java new file mode 100644 index 000000000..aea632987 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank.java @@ -0,0 +1,142 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.IPersistentInfoProvider; +import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IPersistentNBT; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.storage.TileEntityMachineBigAssTank; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineBigAssTank extends BlockDummyable implements IPersistentInfoProvider { + + public MachineBigAssTank() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineBigAssTank(); + if(meta >= 6) return new TileEntityProxyCombo(false, false, true); + return null; + } + + @Override public int[] getDimensions() { return new int[] {5, 0, 4, 4, 4, 4}; } + @Override public int getOffset() { return 6; } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + x += dir.offsetX * o; + z += dir.offsetZ * o; + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {4, 0, 5, -4, 2, 2}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {4, 0, -4, 5, 2, 2}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {4, 0, 2, 2, 5, -4}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {4, 0, 2, 2, -4, 5}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, 0, 6, -5, 0, 0}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, 0, -5, 6, 0, 0}, this, dir); + + this.makeExtra(world, x + dir.offsetX * 6, y, z + dir.offsetZ * o); + this.makeExtra(world, x - dir.offsetX * 6, y, z - dir.offsetZ * o); + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {4, 0, 5, -4, 2, 2}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {4, 0, -4, 5, 2, 2}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {4, 0, 2, 2, 5, -4}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {4, 0, 2, 2, -4, 5}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, 6, -5, 0, 0}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, -5, 6, 0, 0}, x, y, z, dir)) return false; + return true; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(world.isRemote) return true; + + if(!player.isSneaking()) { + + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return false; + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); //we can do this because nobody is stopping me from doing this + return true; + } else if(player.isSneaking()){ + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return false; + + TileEntityMachineBigAssTank trialEntity = (TileEntityMachineBigAssTank) world.getTileEntity(pos[0], pos[1], pos[2]); + + if(trialEntity != null) { + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); + + trialEntity.tank.setTankType(type); + trialEntity.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + } + return true; + } else { + return true; + } + } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + return IPersistentNBT.getDrops(world, x, y, z, this); + } + + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + + int meta = world.getBlockMetadata(x, y, z); + + if(meta >= 6) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return 0; + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityMachineBigAssTank)) return 0; + + TileEntityMachineBigAssTank tank = (TileEntityMachineBigAssTank) te; + return tank.getComparatorPower(); + } + + return 0; + } + + @Override + public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { + FluidTank tank = new FluidTank(Fluids.NONE, 0); + tank.readFromNBT(persistentTag, "tank"); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); + } +} diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index ff5777b85..a05408321 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -40,6 +40,7 @@ public class GeneralConfig { public static boolean enableMekanismChanges = true; public static boolean enableServerRecipeSync = false; public static boolean enableLoadScreenReplacement = true; + public static boolean enableMachineGravity = false; public static int normalSoundChannels = 200; public static boolean enableExpensiveMode = false; @@ -128,6 +129,7 @@ public class GeneralConfig { preferredOutputMod = CommonConfig.createConfigStringList(config,CATEGORY_GENERAL,"1.42_preferredOutputMod", "The mod which is preferred as output when certain machines autogenerate recipes. Currently used for the shredder", new String[] {RefStrings.MODID}); enableLoadScreenReplacement = config.get(CATEGORY_GENERAL, "1.43_enableLoadScreenReplacement", true, "Tries to replace the vanilla load screen with the 'tip of the day' one, may clash with other mods trying to do the same.").getBoolean(true); + enableMachineGravity = config.get(CATEGORY_GENERAL, "1.44_enableMachineGravity", true, "Requires some large machines to have a proper foundation, or else they tilt and break.").getBoolean(false); enableExpensiveMode = config.get(CATEGORY_GENERAL, "1.99_enableExpensiveMode", false, "It does what the name implies.").getBoolean(false); final String CATEGORY_528 = CommonConfig.CATEGORY_528; @@ -178,7 +180,6 @@ public class GeneralConfig { enable528NetherBurn = false; enable528PressurizedRecipes = false; enable528ExplosiveEnergistics = false; - enable528MachineGravity = false; } } } diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 2d0e8977a..730c9c5b1 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -621,10 +621,6 @@ public class Fluids { .addStep(238, 1, SUPERHOTSTEAM, 1) .addStep(2500, 10, ULTRAHOTSTEAM, 1)); - STEAM.addTraits(new FT_Heatable().setEff(HeatingType.BOILER, eff_steam_boil).setEff(HeatingType.HEATEXCHANGER, eff_steam_heatex).addStep(2, 10, HOTSTEAM, 1)); - HOTSTEAM.addTraits(new FT_Heatable().setEff(HeatingType.BOILER, eff_steam_boil).setEff(HeatingType.HEATEXCHANGER, eff_steam_heatex).addStep(18, 10, SUPERHOTSTEAM, 1)); - SUPERHOTSTEAM.addTraits(new FT_Heatable().setEff(HeatingType.BOILER, eff_steam_boil).setEff(HeatingType.HEATEXCHANGER, eff_steam_heatex).addStep(120, 10, ULTRAHOTSTEAM, 1)); - double eff_steam_turbine = 1.0D; double eff_steam_cool = 0.5D; STEAM.addTraits(new FT_Coolable(SPENTSTEAM, 100, 1, 200).setEff(CoolingType.TURBINE, eff_steam_turbine).setEff(CoolingType.HEATEXCHANGER, eff_steam_cool)); diff --git a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java index dbf42353e..1fae66604 100644 --- a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java @@ -95,7 +95,7 @@ public class MixerRecipes extends SerializableRecipe { register(Fluids.PHEROMONE_M, new MixerRecipe(2000, 10).setStack1(new FluidStack(Fluids.PHEROMONE, 1500)).setStack2(new FluidStack(Fluids.BLOOD, 500)).setSolid(new ComparableStack(ModItems.pill_herbal))); register(Fluids.BAUXITE_SOLUTION, new MixerRecipe(300, 80).setStack1(new FluidStack(Fluids.LYE, 50)).setSolid(new ComparableStack(ModBlocks.stone_resource, 1, BlockEnums.EnumStoneType.BAUXITE.ordinal()))); - register(Fluids.LYE, new MixerRecipe(50, 100).setStack1(new FluidStack(Fluids.WATER, 500)).setSolid(new ComparableStack(ModItems.powder_ash, 2, EnumAshType.WOOD))); + register(Fluids.LYE, new MixerRecipe(100, 100).setStack1(new FluidStack(Fluids.WATER, 100)).setSolid(new ComparableStack(ModItems.powder_ash, 1, EnumAshType.WOOD))); register(Fluids.ALUMINA, new MixerRecipe(200, 40).setStack1(new FluidStack(Fluids.SODIUM_ALUMINATE, 150)).setSolid(new OreDictStack(F.dust(), 3)), new MixerRecipe(300, 40).setStack1(new FluidStack(Fluids.SODIUM_ALUMINATE, 150)).setSolid(new ComparableStack(DictFrame.fromOne(ModItems.chunk_ore, ItemEnums.EnumChunkType.CRYOLITE)))); diff --git a/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java b/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java index cae9f0173..d0bd959e9 100644 --- a/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java @@ -62,8 +62,8 @@ public class PrecAssRecipes extends GenericRecipes { new OreDictStack(ANY_HARDPLASTIC.ingot(), 8), new ComparableStack(ModItems.pellet_charged, 4), new OreDictStack(GOLD.wireFine(), 8)) - .inputFluids(new FluidStack(Fluids.HELIUM4, 4_000)).setPools(POOL_PREFIX_528 + "chip_quantum"), - DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_QUANTUM), 75, GeneralConfig.enableExpensiveMode ? 50 : 50); + .inputFluids(new FluidStack(Fluids.HELIUM4, 1_000)).setPools(POOL_PREFIX_528 + "chip_quantum"), + DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_QUANTUM), 90, GeneralConfig.enableExpensiveMode ? 50 : 50); registerPair(new GenericRecipe("precass.atomic_clock").setup(200, 2_000L) .inputItems(new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CHIP), @@ -80,7 +80,7 @@ public class PrecAssRecipes extends GenericRecipes { new ComparableStack(ModItems.upgrade_speed_1), new OreDictStack(PB.wireFine(), 16)) .inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 1_000)), - DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER), 50, GeneralConfig.enableExpensiveMode ? 50 : 90); + DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER), 75, GeneralConfig.enableExpensiveMode ? 50 : 90); registerPair(new GenericRecipe("precass.controller_advanced").setup(600, 25_000) .inputItems(new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP_BISMOID), @@ -90,7 +90,7 @@ public class PrecAssRecipes extends GenericRecipes { new ComparableStack(ModItems.upgrade_speed_3), new OreDictStack(PB.wireFine(), 24)) .inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 4_000)), - DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_ADVANCED), 35, GeneralConfig.enableExpensiveMode ? 50 : 75); + DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_ADVANCED), 50, GeneralConfig.enableExpensiveMode ? 50 : 75); registerPair(new GenericRecipe("precass.controller_quantum").setup(600, 250_000) .inputItems(new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP_QUANTUM), @@ -100,7 +100,7 @@ public class PrecAssRecipes extends GenericRecipes { new ComparableStack(ModItems.upgrade_overdrive_1), new OreDictStack(PB.wireFine(), 32)) .inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL_COLD, 6_000)), - DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_QUANTUM), 25, GeneralConfig.enableExpensiveMode ? 50 : 75); + DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_QUANTUM), 75, GeneralConfig.enableExpensiveMode ? 50 : 75); addFirstUpgrade(ModItems.upgrade_speed_1, ModItems.upgrade_speed_2, "precass.upgrade_speed_ii"); addSecondUpgrade(ModItems.upgrade_speed_2, ModItems.upgrade_speed_3, "precass.upgrade_speed_iii"); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingCyanideRecipe.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingCyanideRecipe.java index 5b1db63d5..b3fb74690 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingCyanideRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingCyanideRecipe.java @@ -22,7 +22,7 @@ public class AnvilSmithingCyanideRecipe extends AnvilSmithingRecipe { @Override public boolean matches(ItemStack left, ItemStack right) { - return doesStackMatch(right, this.right) && left.getItem() instanceof ItemFood; + return (doesStackMatch(right, this.right) || right.getItem() == ModItems.pill_red) && left.getItem() instanceof ItemFood; } @Override @@ -38,7 +38,7 @@ public class AnvilSmithingCyanideRecipe extends AnvilSmithingRecipe { if(!out.hasTagCompound()) out.stackTagCompound = new NBTTagCompound(); - out.stackTagCompound.setBoolean("ntmCyanide", true); + out.stackTagCompound.setBoolean(right.getItem() == ModItems.pill_red ? "ntmRedPill" : "ntmCyanide", true); return out; } diff --git a/src/main/java/com/hbm/items/tool/ItemRTTYPager.java b/src/main/java/com/hbm/items/tool/ItemRTTYPager.java index 9372389db..ac3d2b018 100644 --- a/src/main/java/com/hbm/items/tool/ItemRTTYPager.java +++ b/src/main/java/com/hbm/items/tool/ItemRTTYPager.java @@ -2,6 +2,10 @@ package com.hbm.items.tool; import java.util.List; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.inventory.gui.GUIScreenPager; import com.hbm.items.IItemControlReceiver; import com.hbm.main.MainRegistry; @@ -37,6 +41,17 @@ public class ItemRTTYPager extends Item implements IItemControlReceiver, IGUIPro if(chan != null && chan.timeStamp >= world.getTotalWorldTime() - 1) { int alive = entity.ticksExisted % 1000; String message = EnumChatFormatting.GOLD + "[ " + channelFreq + " (" + alive + ") ] " + EnumChatFormatting.YELLOW + chan.signal; + + if("selfdestruct".equals(chan.signal + "")) { + ExplosionVNT vnt = new ExplosionVNT(world, entity.posX, entity.posY + entity.height / 2, entity.posZ, 5, null); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 50).setupPiercing(5F, 0.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); + vnt.explode(); + stack.stackSize--; + return; + } + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(message, ServerProxy.ID_PAGER_DYN + slot, 5_000), (EntityPlayerMP) entity); } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 94e2016a1..c1dd359d7 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -276,6 +276,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePUREX.class, new RenderPUREX()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFluidTank.class, new RenderFluidTank()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineBAT9000.class, new RenderBAT9000()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineBigAssTank.class, new RenderBigAssTank()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOrbus.class, new RenderOrbus()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRefinery.class, new RenderRefinery()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFractionTower.class, new RenderFractionTower()); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 2284c4c70..db5012e03 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -1309,10 +1309,13 @@ public class ModEventHandler { if(stack != null && stack.getItem() instanceof ItemFood) { - if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("ntmCyanide")) { - for(int i = 0; i < 10; i++) { + if(stack.hasTagCompound()) { + if(stack.getTagCompound().getBoolean("ntmCyanide")) for(int i = 0; i < 10; i++) { event.entityPlayer.attackEntityFrom(rand.nextBoolean() ? ModDamageSource.euthanizedSelf : ModDamageSource.euthanizedSelf2, 1000); } + if(stack.getTagCompound().getBoolean("ntmRedPill")) for(int i = 0; i < 10; i++) { + event.entityPlayer.addPotionEffect(new PotionEffect(HbmPotion.death.id, 60 * 60 * 20, 0)); + } } } } diff --git a/src/main/java/com/hbm/main/NTMSounds.java b/src/main/java/com/hbm/main/NTMSounds.java index 79a6a1768..be822953d 100644 --- a/src/main/java/com/hbm/main/NTMSounds.java +++ b/src/main/java/com/hbm/main/NTMSounds.java @@ -146,6 +146,7 @@ public class NTMSounds { public static final String BANG = "hbm:weapon.bang"; // frying pan public static final String SLICE = "hbm:weapon.slice"; public static final String KAPENG = "hbm:weapon.kapeng"; // third degree + public static final String METAL_IMPACT = "hbm:block.metalImpact"; // ow /// VANILLA CRAP I CANNOT BE ASSED TO REMEMBER /// public static final String VANILLA_ORB = "random.orb"; // xp orb ping @@ -158,4 +159,6 @@ public class NTMSounds { public static final String VANILLA_GIB = "mob.zombie.woodbreak"; // zombie breaks door down public static final String VANILLA_TELEPORT = "mob.endermen.portal"; // enderman teleports public static final String VANILLA_ANVIL = "random.anvil_land"; // falling anvil lands + public static final String VANILLA_PISTON_OUT = "tile.piston.out"; // falling anvil lands + public static final String VANILLA_PISTON_IN = "tile.piston.in"; // falling anvil lands } diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 90e495965..2d6ea8be8 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -93,6 +93,7 @@ public class ResourceManager { public static final IModelCustom fluidtank = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fluidtank.obj")).asVBO(); public static final IModelCustom fluidtank_exploded = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fluidtank_exploded.obj")).asVBO(); public static final IModelCustom bat9000 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/bat9000.obj")).asVBO(); + public static final IModelCustom bigasstank = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/bigasstank.obj")).asVBO(); public static final IModelCustom orbus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/orbus.obj")).asVBO(); //Turbofan @@ -522,6 +523,7 @@ public class ResourceManager { public static final ResourceLocation tank_inner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank/tank_inner.png"); public static final ResourceLocation tank_label_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank/tank_NONE.png"); public static final ResourceLocation bat9000_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/bat9000.png"); + public static final ResourceLocation bigasstank_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/bigasstank.png"); public static final ResourceLocation orbus_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/orbus.png"); //Turbofan diff --git a/src/main/java/com/hbm/render/tileentity/RenderBigAssTank.java b/src/main/java/com/hbm/render/tileentity/RenderBigAssTank.java new file mode 100644 index 000000000..158f46011 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderBigAssTank.java @@ -0,0 +1,137 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.render.util.DiamondPronter; +import com.hbm.render.util.EnumSymbol; +import com.hbm.tileentity.machine.storage.TileEntityMachineBigAssTank; + +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderBigAssTank extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { + + TileEntityMachineBigAssTank bat = (TileEntityMachineBigAssTank) te; + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + if(bat.tilted) { + GL11.glTranslated(0, -1, 0); + GL11.glRotated(10, 0, 0, 1); + GL11.glRotated(5, 0, 1, 0); + } + + switch(te.getBlockMetadata() - 10) { + case 2: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(180, 0F, 1F, 0F); break; + } + + bindTexture(ResourceManager.bigasstank_tex); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.bigasstank.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glDisable(GL11.GL_LIGHTING); + + FluidType type = bat.tank.getTankType(); + + if(type != null && type != Fluids.NONE) { + + GL11.glPushMatrix(); + int poison = type.poison; + int flammability = type.flammability; + int reactivity = type.reactivity; + EnumSymbol symbol = type.symbol; + + GL11.glRotatef(22.5F, 0, 1, 0); + + for(int j = 0; j < 2; j++) { + + GL11.glPushMatrix(); + GL11.glTranslated(5.5, 2, 0); + DiamondPronter.pront(poison, flammability, reactivity, symbol); + GL11.glPopMatrix(); + GL11.glRotatef(180, 0, 1, 0); + } + GL11.glPopMatrix(); + } + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GREATER, 0); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor3f(1F, 1F, 1F); + + bindTexture(bat.tank.getTankType().getTexture()); + + Tessellator tess = Tessellator.instance; + + double height = bat.tank.getFill() * 1.5D / bat.tank.getMaxFill(); + double off = 5.9375; + double speed = 250D; + + double minU = -((te.getWorldObj().getTotalWorldTime() % speed + interp) / speed) % 1D; + double maxU = minU + 1; + + tess.startDrawingQuads(); + + tess.addVertexWithUV(-off, 1.75, -0.25, minU, 0); + tess.addVertexWithUV(-off, 1.75 + height, -0.25, minU, -height * 2); + tess.addVertexWithUV(-off, 1.75 + height, 0.25, maxU, -height * 2); + tess.addVertexWithUV(-off, 1.75, 0.25, maxU, 0); + + tess.addVertexWithUV(off, 1.75, -0.25, maxU, 0); + tess.addVertexWithUV(off, 1.75 + height, -0.25, maxU, -height * 2); + tess.addVertexWithUV(off, 1.75 + height, 0.25, minU, -height * 2); + tess.addVertexWithUV(off, 1.75, 0.25, minU, 0); + + tess.draw(); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_bigasstank); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -1, 0); + GL11.glScaled(2.5, 2.5, 2.5); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.bigasstank_tex); + ResourceManager.bigasstank.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java index bd234d71d..9a5efec8f 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java @@ -1,7 +1,9 @@ package com.hbm.tileentity; +import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.handler.threading.PacketThreading; +import com.hbm.main.NTMSounds; import com.hbm.packet.toclient.BufPacket; import com.hbm.sound.AudioWrapper; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -103,8 +105,18 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile, IBu PacketThreading.createAllAroundThreadedPacket(packet, new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); } - public void checkTilt(boolean extraHeavy) { - if(!GeneralConfig.enable528MachineGravity) { this.tilted = false; return; } + public static enum TiltType { + UNAVOIDABLE, CONFIG_NORMAL, CONFIG_528 + } + + public void checkTilt(TiltType cfg, boolean extraHeavy) { + boolean doesTilt = false; + if(cfg == TiltType.UNAVOIDABLE) doesTilt = true; + if(cfg == TiltType.CONFIG_NORMAL && GeneralConfig.enableMachineGravity) doesTilt = true; + if(cfg == TiltType.CONFIG_NORMAL && GeneralConfig.enable528MachineGravity) doesTilt = true; + if(cfg == TiltType.CONFIG_528 && GeneralConfig.enable528MachineGravity) doesTilt = true; + + if(!doesTilt) { this.tilted = false; return; } if(this.getFloorCount() <= 0) { this.tilted = false; return; } if(this.worldObj.getTotalWorldTime() % 20 != 0) return; @@ -113,7 +125,7 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile, IBu if(this.tiltBlocksValid >= this.tiltBlocksChecked * 0.95) { this.tilted = false; } else { - // if(!this.tiled) play sound + if(!this.tilted) worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, NTMSounds.METAL_IMPACT, 3F, 1F); this.tilted = true; } @@ -145,6 +157,7 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile, IBu } else { if(!ground.isSideSolid(worldObj, pos.getX(), pos.getY(), pos.getZ(), ForgeDirection.UP)) return; if(ground.getMaterial() == Material.sand) return; + if(ground == ModBlocks.dirt_dead || ground == ModBlocks.dirt_oily || ground == ModBlocks.stone_cracked) return; this.tiltBlocksValid++; } } @@ -153,9 +166,12 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile, IBu public BlockPos getFloorPosFromIndex(int index) { return null; } public BlockPos standardFloor3x3(int index) { - return new BlockPos(xCoord - 1 + (index / 2) * 2, yCoord - 1, zCoord - 2 + (index % 2) * 2); + return new BlockPos(xCoord - 1 + (index / 2) * 2, yCoord - 1, zCoord - 1 + (index % 2) * 2); } public BlockPos standardFloor5x5(int index) { return new BlockPos(xCoord - 2 + (index / 3) * 2, yCoord - 1, zCoord - 2 + (index % 3) * 2); } + public BlockPos standardFloor7x7(int index) { + return new BlockPos(xCoord - 3 + (index / 4) * 2, yCoord - 1, zCoord - 3 + (index % 4) * 2); + } } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index bfedd2533..d668a3d64 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -207,6 +207,7 @@ public class TileMappings { put(TileEntityLanternBehemoth.class, "tileentity_lantern_behemoth"); put(TileEntityStorageDrum.class, "tileentity_waste_storage_drum"); put(TileEntityMachineBAT9000.class, "tileentity_bat9000"); + put(TileEntityMachineBigAssTank.class, "tileentity_bigasstank"); put(TileEntityMachineOrbus.class, "tileentity_orbus"); put(TileEntityGlpyhidSpawner.class, "tileentity_glyphid_spawner"); put(TileEntityCustomMachine.class, "tileentity_custom_machine"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java index 2441c6279..f8fcdd43a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java @@ -6,6 +6,8 @@ import java.util.Random; import api.hbm.energymk2.IBatteryItem; import api.hbm.energymk2.IEnergyReceiverMK2; + +import com.hbm.main.NTMSounds; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import io.netty.buffer.ByteBuf; @@ -58,7 +60,7 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyRe lastOp--; if(worldObj.getTotalWorldTime() % 20 == 0) - worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "random.fizz", 0.2F, 0.5F); + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, NTMSounds.VANILLA_HISS, 0.2F, 0.5F); } networkPackNT(50); @@ -69,12 +71,12 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyRe if((charge > 0 || particles) && usingTicks < delay) { usingTicks++; if(usingTicks == 2) - worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "tile.piston.out", 0.5F, 0.5F); + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, NTMSounds.VANILLA_PISTON_OUT, 0.5F, 0.5F); } if((charge <= 0 && !particles) && usingTicks > 0) { usingTicks--; if(usingTicks == 4) - worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "tile.piston.in", 0.5F, 0.5F); + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, NTMSounds.VANILLA_PISTON_IN, 0.5F, 0.5F); } if(particles) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index 11b6a930e..4e52eea94 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -188,7 +188,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC public void updateEntity() { if(!worldObj.isRemote) { - this.checkTilt(true); + this.checkTilt(TiltType.CONFIG_NORMAL, true); if (redstonePowered) { isOn = true; diff --git a/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java index 7a9b9b7dc..8acf1b033 100644 --- a/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java +++ b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java @@ -98,7 +98,7 @@ public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIP public void updateEntity() { if(!worldObj.isRemote) { - this.checkTilt(true); + this.checkTilt(TiltType.CONFIG_NORMAL, true); for(int i = 0; i < 4; i++) { if(klystronNodes[i] == null || klystronNodes[i].expired) klystronNodes[i] = createNode(KlystronNetworkProvider.THE_PROVIDER, ForgeDirection.getOrientation(i + 2)); 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 243fc61d1..06547e4ab 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -105,7 +105,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements public void updateEntity() { if(!worldObj.isRemote) { - this.checkTilt(false); + this.checkTilt(TiltType.CONFIG_528, false); this.fluidUsed = 0; this.output = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java index fb786e974..960cd6873 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java @@ -133,7 +133,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements public void updateEntity() { if(!worldObj.isRemote) { - this.checkTilt(false); + this.checkTilt(TiltType.CONFIG_528, false); this.isOn = false; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 67f638ebd..3cbcbb5c4 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -81,6 +81,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom @Override public long getDemand(FluidType type, int pressure) { + if(this.tilted) return 0; if(this.mode == 2 || this.mode == 3) return 0; if(tank.getPressure() != pressure) return 0; return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0; @@ -126,7 +127,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom this.node = null; } - for(DirPos pos : getConPos()) { + if(!this.tilted) for(DirPos pos : getConPos()) { FluidNode dirNode = (FluidNode) UniNodespace.getNode(worldObj, pos.getX(), pos.getY(), pos.getZ(), tank.getTankType().getNetworkProvider()); if(mode == 2) { diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBigAssTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBigAssTank.java new file mode 100644 index 000000000..e77870a1c --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBigAssTank.java @@ -0,0 +1,82 @@ +package com.hbm.tileentity.machine.storage; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityMachineBigAssTank extends TileEntityBarrel { + + public TileEntityMachineBigAssTank() { + super(16_000_000); + } + + @Override + public String getName() { + return "container.bigAssTank"; + } + + @Override public long getReceiverSpeed(FluidType type, int pressure) { return Math.max(50_000, (tank.getMaxFill() - tank.getFill()) / 100); } + @Override public long getProviderSpeed(FluidType type, int pressure) { return Math.max(50_000, tank.getFill() / 100); } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + this.checkTilt(TiltType.UNAVOIDABLE, true); + } + + super.updateEntity(); + } + + @Override public int getFloorCount() { return 4 * 4; } + @Override public BlockPos getFloorPosFromIndex(int index) { return this.standardFloor7x7(index); } + + @Override + public void checkFluidInteraction() { + + if(tank.getTankType().isAntimatter()) { + worldObj.func_147480_a(xCoord, yCoord, zCoord, false); + worldObj.newExplosion(null, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 10, true, true); + } + } + + @Override + protected DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + + return new DirPos[] { + new DirPos(xCoord + dir.offsetX * 7, yCoord, zCoord + dir.offsetZ * 7, dir), + new DirPos(xCoord - dir.offsetX * 7, yCoord, zCoord - dir.offsetZ * 7, dir.getOpposite()) + }; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 6, + yCoord, + zCoord - 6, + xCoord + 7, + yCoord + 5, + zCoord + 7 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index e4c7be1ea..4fec1623f 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -73,9 +73,12 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements public TileEntityMachineFluidTank() { super(6); - tank = new FluidTank(Fluids.NONE, 256000); + tank = new FluidTank(Fluids.NONE, 256_000); } + @Override public long getReceiverSpeed(FluidType type, int pressure) { return Math.max(500, (tank.getMaxFill() - tank.getFill()) / 100); } + @Override public long getProviderSpeed(FluidType type, int pressure) { return Math.max(500, tank.getFill() / 100); } + @Override public String getName() { return "container.fluidtank"; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineOrbus.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineOrbus.java index 3835238c7..2368ef2ef 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineOrbus.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineOrbus.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.storage; import com.hbm.blocks.BlockDummyable; +import com.hbm.inventory.fluid.FluidType; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.relauncher.Side; @@ -18,6 +19,9 @@ public class TileEntityMachineOrbus extends TileEntityBarrel { public String getName() { return "container.orbus"; } + + @Override public long getReceiverSpeed(FluidType type, int pressure) { return Math.max(1_000, (tank.getMaxFill() - tank.getFill()) / 100); } + @Override public long getProviderSpeed(FluidType type, int pressure) { return Math.max(1_000, tank.getFill() / 100); } @Override public void checkFluidInteraction() { } //NO! diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchReceiver.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchReceiver.java index 1d2dd4d34..798b1a1a8 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchReceiver.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchReceiver.java @@ -1,5 +1,9 @@ package com.hbm.tileentity.network; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.tileentity.network.RTTYSystem.RTTYChannel; import net.minecraft.util.MathHelper; @@ -20,6 +24,16 @@ public class TileEntityRadioTorchReceiver extends TileEntityRadioTorchBase { this.lastUpdate = worldObj.getTotalWorldTime(); int nextState = 0; //if no remap apply, default to 0 + if("selfdestruct".equals(msg)) { + worldObj.func_147480_a(xCoord, yCoord, zCoord, false); + ExplosionVNT vnt = new ExplosionVNT(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 5, null); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 50).setupPiercing(5F, 0.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); + vnt.explode(); + return; + } + if(this.customMap) { for(int i = 15; i >= 0; i--) { // highest to lowest, if duplicates exist for some reason if(msg.equals(this.mapping[i])) { diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 05cc4631d..d5dd6e297 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -76,7 +76,8 @@ "block.assemblerCut": {"category": "block", "sounds": [{"name": "block/assemblerCut", "stream": false}]}, "block.leverStart": {"category": "block", "sounds": [{"name": "block/leverStart", "stream": false}]}, "block.leverStop": {"category": "block", "sounds": [{"name": "block/leverStop", "stream": false}]}, - "block.spark": {"category": "block", "sounds": ["block/spark1", "block/spark2", "block/spark3", "block/spark4", "block/spark5", "block/spar6"]}, + "block.spark": {"category": "block", "sounds": ["block/spark1", "block/spark2", "block/spark3", "block/spark4", "block/spark5", "block/spark6"]}, + "block.metalImpact": {"category": "block", "sounds": ["block/metalImpact1", "block/metalImpact2"]}, "door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]}, "door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]}, diff --git a/src/main/resources/assets/hbm/sounds/block/metalImpact1.ogg b/src/main/resources/assets/hbm/sounds/block/metalImpact1.ogg new file mode 100644 index 000000000..fac245841 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/metalImpact1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/metalImpact2.ogg b/src/main/resources/assets/hbm/sounds/block/metalImpact2.ogg new file mode 100644 index 000000000..a031f86ff Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/metalImpact2.ogg differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/bigasstank.png b/src/main/resources/assets/hbm/textures/models/machines/bigasstank.png index bed773d79..8e4e4f7e8 100644 Binary files a/src/main/resources/assets/hbm/textures/models/machines/bigasstank.png and b/src/main/resources/assets/hbm/textures/models/machines/bigasstank.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/blast_furnace.png b/src/main/resources/assets/hbm/textures/models/machines/blast_furnace.png deleted file mode 100644 index dc98abd89..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/machines/blast_furnace.png and /dev/null differ