diff --git a/changelog b/changelog index fd944b437..94440b72f 100644 --- a/changelog +++ b/changelog @@ -20,6 +20,10 @@ * AUTOCAL Automatic Calculator * Highly advanced programmable RoR device * Can send and receive signals and do calculations with the same system as NTM's calculator +* Vending machines + * Comes in snack machine and soda machine variants + * The machines can be purchased off of bobmazon for 64 caps each + * Use vending machine tokens as currency, which can be found occasionally in most structures ## Changed * RoR graphs can now have their min and max bounds set to a fixed number @@ -48,6 +52,11 @@ * The automatic buzzsaw and thresher now have sound loops when active * The shredder auto shotgun now uses the plasma damage type instead of laser * Added "nitra to ammunition" recipe in the assembly machine, turning large piles of nitra into random casings/propellants +* Removed more unused blocks to free up block IDs + * Removed the old iron barrel + * Removed the factory hull blocks + * Removed the vacuum block that has been unused for like 5 years at this point + * Removed five of the 10 stuurdy ladder variants because they were hella ugly anyway ## Fixed * Fixed RoR graph showing the wrong name in the GUI @@ -57,3 +66,4 @@ * Fixed RoR transmitter sending empty signals when unused mappings apply * Fixed hopper IO for battery sockets being entirely broken * Fixed cargo elevators not dropping the correct amount of segments +* Fixed broken config check causing smithing recipes in anvils to always be tier 1 diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index d74274682..1869b0ca5 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -273,6 +273,7 @@ public class ModBlocks { public static Block snowglobe; public static Block plushie; public static Block dungeon_spawner; + public static Block vending_machine; public static Block gravel_obsidian; public static Block gravel_diamond; @@ -815,21 +816,15 @@ public class ModBlocks { public static Block chain; public static Block ladder_sturdy; - public static Block ladder_iron; public static Block ladder_gold; - public static Block ladder_aluminium; public static Block ladder_copper; public static Block ladder_titanium; - public static Block ladder_lead; - public static Block ladder_cobalt; public static Block ladder_steel; - public static Block ladder_tungsten; public static Block trapdoor_steel; public static Block barrel_plastic; - @Deprecated public static Block barrel_corroded; - @Deprecated public static Block barrel_iron; + public static Block barrel_corroded; public static Block barrel_steel; public static Block barrel_tcalloy; public static Block barrel_antimatter; @@ -848,9 +843,6 @@ public class ModBlocks { public static Block struct_watz_core; public static Block struct_icf_core; - @Deprecated public static Block factory_titanium_hull; - @Deprecated public static Block factory_advanced_hull; - public static Block cm_block; public static Block cm_sheet; public static Block cm_engine; @@ -995,7 +987,7 @@ public class ModBlocks { public static Block machine_mixer; public static Block machine_fluidtank; - public static Block machine_bat9000; + @Deprecated public static Block machine_bat9000; public static Block machine_bigasstank; public static Block machine_orbus; @@ -1157,7 +1149,6 @@ public class ModBlocks { public static Block gas_coal; public static Block gas_flammable; public static Block gas_explosive; - public static Block vacuum; public static Block rad_absorber; public static Block decon; @@ -1450,6 +1441,7 @@ public class ModBlocks { snowglobe = new BlockSnowglobe().setBlockName("snowglobe").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":glass_boron"); plushie = new BlockPlushie().setBlockName("plushie").setStepSound(Block.soundTypeCloth).setResistance(50_0000.0F).setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_fiberglass_side"); dungeon_spawner = new DungeonSpawner().setBlockName("dungeon_spawner").setResistance(50_0000.0F).setBlockUnbreakable().setBlockTextureName(RefStrings.MODID + ":dungeon_spawner"); + vending_machine = new BlockVendingMachine().setBlockName("vending_machine").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); gravel_obsidian = new BlockFalling(Material.iron).setBlockName("gravel_obsidian").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGravel).setHardness(5.0F).setResistance(240.0F).setBlockTextureName(RefStrings.MODID + ":gravel_obsidian"); gravel_diamond = new BlockFalling(Material.sand).setBlockName("gravel_diamond").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGravel).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":gravel_diamond"); @@ -1930,21 +1922,15 @@ public class ModBlocks { chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain"); ladder_sturdy = new BlockNTMLadder().setBlockName("ladder_sturdy").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_sturdy"); - ladder_iron = new BlockNTMLadder().setBlockName("ladder_iron").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_iron"); ladder_gold = new BlockNTMLadder().setBlockName("ladder_gold").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_gold"); - ladder_aluminium = new BlockNTMLadder().setBlockName("ladder_aluminium").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_aluminium"); ladder_copper = new BlockNTMLadder().setBlockName("ladder_copper").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_copper"); ladder_titanium = new BlockNTMLadder().setBlockName("ladder_titanium").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_titanium"); - ladder_lead = new BlockNTMLadder().setBlockName("ladder_lead").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_lead"); - ladder_cobalt = new BlockNTMLadder().setBlockName("ladder_cobalt").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_cobalt"); ladder_steel = new BlockNTMLadder().setBlockName("ladder_steel").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_steel"); - ladder_tungsten = new BlockNTMLadder().setBlockName("ladder_tungsten").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_tungsten"); trapdoor_steel = new BlockNTMTrapdoor(Material.iron).setBlockName("trapdoor_steel").setHardness(3F).setResistance(8.0F).setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":trapdoor_steel"); barrel_plastic = new BlockFluidBarrel(Material.iron, 12000).setBlockName("barrel_plastic").setStepSound(Block.soundTypeStone).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_plastic"); barrel_corroded = new BlockFluidBarrel(Material.iron, 6000).setBlockName("barrel_corroded").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barrel_corroded"); - barrel_iron = new BlockFluidBarrel(Material.iron, 8000).setBlockName("barrel_iron").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barrel_iron"); barrel_steel = new BlockFluidBarrel(Material.iron, 16000).setBlockName("barrel_steel").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_steel"); barrel_tcalloy = new BlockFluidBarrel(Material.iron, 24000).setBlockName("barrel_tcalloy").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_tcalloy"); barrel_antimatter = new BlockFluidBarrel(Material.iron, 16000).setBlockName("barrel_antimatter").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_antimatter"); @@ -1968,9 +1954,6 @@ public class ModBlocks { struct_watz_core = new BlockWatzStruct(Material.iron).setBlockName("struct_watz_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_watz_core"); struct_icf_core = new BlockICFStruct(Material.iron).setBlockName("struct_icf_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_icf_core"); - factory_titanium_hull = new BlockGeneric(Material.iron).setBlockName("factory_titanium_hull").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":factory_titanium_hull"); - factory_advanced_hull = new BlockGeneric(Material.iron).setBlockName("factory_advanced_hull").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":factory_advanced_hull"); - cm_block = new BlockCM(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_block").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_block"); cm_sheet = new BlockCM(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_sheet").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_sheet"); cm_engine = new BlockCM(Material.iron, EnumCMEngines.class, true, true).setBlockName("cm_engine").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_engine"); @@ -2296,7 +2279,6 @@ public class ModBlocks { gas_coal = new BlockGasCoal().setBlockName("gas_coal").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_coal"); gas_flammable = new BlockGasFlammable().setBlockName("gas_flammable").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_flammable"); gas_explosive = new BlockGasExplosive().setBlockName("gas_explosive").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_explosive"); - vacuum = new BlockVacuum().setBlockName("vacuum").setResistance(1000000F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vacuum"); rad_absorber = new BlockAbsorber(Material.iron).setBlockName("rad_absorber").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); decon = new BlockDecon(Material.iron).setBlockName("decon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":decon_side"); @@ -2606,6 +2588,7 @@ public class ModBlocks { GameRegistry.registerBlock(bobblehead, ItemBlockMeta.class, bobblehead.getUnlocalizedName()); GameRegistry.registerBlock(snowglobe, ItemBlockMeta.class, snowglobe.getUnlocalizedName()); GameRegistry.registerBlock(plushie, ItemBlockBase.class, plushie.getUnlocalizedName()); + register(vending_machine); GameRegistry.registerBlock(deco_rbmk, deco_rbmk.getUnlocalizedName()); GameRegistry.registerBlock(deco_rbmk_smooth, deco_rbmk_smooth.getUnlocalizedName()); @@ -3209,20 +3192,14 @@ public class ModBlocks { GameRegistry.registerBlock(chain, chain.getUnlocalizedName()); GameRegistry.registerBlock(ladder_sturdy, ladder_sturdy.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_iron, ladder_iron.getUnlocalizedName()); GameRegistry.registerBlock(ladder_gold, ladder_gold.getUnlocalizedName()); GameRegistry.registerBlock(ladder_titanium, ladder_titanium.getUnlocalizedName()); GameRegistry.registerBlock(ladder_copper, ladder_copper.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_tungsten, ladder_tungsten.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_aluminium, ladder_aluminium.getUnlocalizedName()); GameRegistry.registerBlock(ladder_steel, ladder_steel.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_lead, ladder_lead.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_cobalt, ladder_cobalt.getUnlocalizedName()); GameRegistry.registerBlock(trapdoor_steel, trapdoor_steel.getUnlocalizedName()); register(barrel_plastic); register(barrel_corroded); - register(barrel_iron); register(barrel_steel); register(barrel_tcalloy); register(barrel_antimatter); @@ -3335,10 +3312,6 @@ public class ModBlocks { GameRegistry.registerBlock(machine_solar_boiler, machine_solar_boiler.getUnlocalizedName()); GameRegistry.registerBlock(solar_mirror, solar_mirror.getUnlocalizedName()); - //Literal fucking garbage - GameRegistry.registerBlock(factory_titanium_hull, factory_titanium_hull.getUnlocalizedName()); - GameRegistry.registerBlock(factory_advanced_hull, factory_advanced_hull.getUnlocalizedName()); - //CM stuff register(custom_machine, ItemCustomMachine.class); register(cm_block); @@ -3489,7 +3462,6 @@ public class ModBlocks { GameRegistry.registerBlock(gas_coal, gas_coal.getUnlocalizedName()); GameRegistry.registerBlock(gas_flammable, gas_flammable.getUnlocalizedName()); GameRegistry.registerBlock(gas_explosive, gas_explosive.getUnlocalizedName()); - GameRegistry.registerBlock(vacuum, vacuum.getUnlocalizedName()); // OC Compat Items if(Loader.isModLoaded(Compat.MOD_OC)) { diff --git a/src/main/java/com/hbm/blocks/gas/BlockVacuum.java b/src/main/java/com/hbm/blocks/gas/BlockVacuum.java deleted file mode 100644 index 34a00b969..000000000 --- a/src/main/java/com/hbm/blocks/gas/BlockVacuum.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.hbm.blocks.gas; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.lib.ModDamageSource; - -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.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.Item; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class BlockVacuum extends Block { - - public BlockVacuum() { - super(ModBlocks.materialGas); - this.setHardness(0.0F); - this.setResistance(0.0F); - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public int getRenderType() { - return -1; - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) { - return null; - } - - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { - return null; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { - return false; - } - - @Override - public boolean canCollideCheck(int p_149678_1_, boolean p_149678_2_) { - return false; - } - - @Override - public boolean isReplaceable(IBlockAccess world, int x, int y, int z) { - return false; - } - - @Override - public void onBlockAdded(World world, int x, int y, int z) { - if(!world.isRemote) world.scheduleBlockUpdate(x, y, z, this, 1); - } - - @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - if(!world.isRemote) world.scheduleBlockUpdate(x, y, z, this, 1); - } - - @Override - public void updateTick(World world, int x, int y, int z, Random rand) { - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - - Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); - - if(b == this) - continue; - - if(isAirBlock(b)) { - - if(b.isReplaceable(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ)) { - if(getAirCount(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) == 0) { - world.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, ModBlocks.vacuum); - return; - } - } - - world.setBlockToAir(x, y, z); - return; - } - } - } - - private boolean isAirBlock(Block b) { - - if(b == this) - return false; - - return b.getMaterial() == Material.air || - b.getBlockBoundsMinX() > 0 || b.getBlockBoundsMinY() > 0 || b.getBlockBoundsMinZ() > 0 || - b.getBlockBoundsMaxX() < 1 || b.getBlockBoundsMaxY() < 1 || b.getBlockBoundsMaxZ() < 1; - } - - private int getAirCount(World world, int x, int y, int z) { - - int air = 0; - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - - Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); - - if(isAirBlock(b)) - air++; - } - - return air; - } - - @Override - public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { - - if(!(entity instanceof EntityLivingBase)) - return; - - entity.attackEntityFrom(ModDamageSource.vacuum, 1F); - } -} diff --git a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java index 7cb8009f6..daae050d2 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java +++ b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java @@ -47,28 +47,18 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider @Override public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + if(this == ModBlocks.barrel_corroded) return null; return new TileEntityBarrel(capacity); } public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - - @Override - public int getRenderType(){ - return renderID; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } + @Override public int getRenderType(){ return renderID; } + @Override public boolean isOpaqueCube() { return false; } + @Override public boolean renderAsNormalBlock() { return false; } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(this == ModBlocks.barrel_corroded) return false; if(world.isRemote) { return true; @@ -111,6 +101,8 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider @Override public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { + if(this == ModBlocks.barrel_corroded) return; + if(!keepInventory) { ISidedInventory tileentityfurnace = (ISidedInventory) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); @@ -187,12 +179,8 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider @Override public int getComparatorInputOverride(World world, int x, int y, int z, int side) { - TileEntity te = world.getTileEntity(x, y, z); - - if(!(te instanceof TileEntityBarrel)) - return 0; - + if(!(te instanceof TileEntityBarrel)) return 0; TileEntityBarrel barrel = (TileEntityBarrel) te; return barrel.getComparatorPower(); } @@ -222,13 +210,6 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider list.add(EnumChatFormatting.RED + "Leaky"); } - if(this == ModBlocks.barrel_iron) { - list.add(EnumChatFormatting.AQUA + "Capacity: 8,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store corrosive fluids properly"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); - } - if(this == ModBlocks.barrel_steel) { list.add(EnumChatFormatting.AQUA + "Capacity: 16,000mB"); list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); diff --git a/src/main/java/com/hbm/blocks/machine/BlockVendingMachine.java b/src/main/java/com/hbm/blocks/machine/BlockVendingMachine.java new file mode 100644 index 000000000..872c8fd6e --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockVendingMachine.java @@ -0,0 +1,122 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.IBlockMulti; +import com.hbm.itempool.ItemPool; +import com.hbm.itempool.ItemPoolsVendingMachine; +import com.hbm.items.ModItems; +import com.hbm.main.NTMSounds; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockVendingMachine extends BlockDummyable implements IBlockMulti { + + public BlockVendingMachine() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityVendingMachine(); + return null; + } + + @Override public int getSubCount() { return 2; } + + @Override public int[] getDimensions() { return new int[] {1, 0, 0, 0, 0, 0}; } + @Override public int getOffset() { return 0; } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.coin_token) { + player.getHeldItem().stackSize--; + + if(world.isRemote) return true; + + int dmg = 0; + int meta = 0; + int[] pos = this.findCore(world, x, y, z); + if(pos != null) { + meta = world.getBlockMetadata(pos[0], pos[1], pos[2]); + if(world.getBlockMetadata(pos[0], pos[1] + 1, pos[2]) >= 6) dmg = 1; + + ItemStack toDrop = null; + + if(dmg == 0) toDrop = ItemPool.getStack(ItemPoolsVendingMachine.POOL_SODA, world.rand); + if(dmg == 1) toDrop = ItemPool.getStack(ItemPoolsVendingMachine.POOL_SNACKS, world.rand); + + if(toDrop != null) { + ForgeDirection dir = ForgeDirection.getOrientation(meta - 10); + EntityItem item = new EntityItem(world, x + 0.5 + dir.offsetX * 0.75, pos[1] + 0.25, z + 0.5 + dir.offsetZ * 0.75, toDrop); + world.spawnEntityInWorld(item); + } + + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, NTMSounds.GUN_BOLT_OPEN, 1F, 0.75F); + } + + return true; + } + + return false; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + super.onBlockPlacedBy(world, x, y, z, player, stack); + + if(stack.getItemDamage() % 2 == 1 && world.getBlock(x, y + 1, z) == this) { + this.makeExtra(world, x, y + 1, z); + } + } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + ArrayList ret = new ArrayList(); + int[] pos = this.findCore(world, x, y, z); + int dmg = 0; + if(pos != null) { + if(world.getBlockMetadata(pos[0], pos[1] + 1, pos[2]) >= 6) dmg = 1; + } + ret.add(new ItemStack(this, 1, dmg)); + return ret; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < getSubCount(); ++i) list.add(new ItemStack(item, 1, i)); + } + + public static class TileEntityVendingMachine extends TileEntity { + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + if(bb == null) bb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 2, zCoord + 1); + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + } +} diff --git a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java index c8c1228b9..57856a0ce 100644 --- a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java +++ b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java @@ -42,6 +42,9 @@ public class BobmazonOfferFactory { //blueprints standard.add(new Offer(new ItemStack(ModItems.blueprint_folder, 1, 0), Requirement.ASSEMBLY, 64)); standard.add(new Offer(new ItemStack(ModItems.blueprint_folder, 1, 1), Requirement.OIL, 256)); + //vending machines + standard.add(new Offer(new ItemStack(ModBlocks.vending_machine, 1, 0), Requirement.CHEMICS, 64)); + standard.add(new Offer(new ItemStack(ModBlocks.vending_machine, 1, 1), Requirement.CHEMICS, 64)); //plants standard.add(new Offer(new ItemStack(Blocks.sapling, 1, 3), Requirement.STEEL, 12, 9)); standard.add(new Offer(new ItemStack(ModBlocks.plant_flower, 1, EnumFlowerType.FOXGLOVE.ordinal()), Requirement.STEEL, 16, 5)); diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioAUTOCAL.java b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioAUTOCAL.java index 729340325..68b750af2 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioAUTOCAL.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioAUTOCAL.java @@ -7,7 +7,6 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Arrays; -import java.util.Random; import org.lwjgl.opengl.GL11; diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingRecipe.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingRecipe.java index 566434ce6..de07486db 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingRecipe.java @@ -20,7 +20,7 @@ public class AnvilSmithingRecipe { this.output = out; this.left = left; this.right = right; - if(GeneralConfig.enableLBSMShorterDecay && GeneralConfig.enableLBSMUnlockAnvil) this.tier = 1; + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMUnlockAnvil) this.tier = 1; } public AnvilSmithingRecipe makeShapeless() { diff --git a/src/main/java/com/hbm/itempool/ItemPool.java b/src/main/java/com/hbm/itempool/ItemPool.java index b9b537d43..41d3e0c70 100644 --- a/src/main/java/com/hbm/itempool/ItemPool.java +++ b/src/main/java/com/hbm/itempool/ItemPool.java @@ -26,6 +26,7 @@ public class ItemPool { ItemPoolsSatellite.init(); ItemPoolsPile.init(); ItemPoolsC130.init(); + ItemPoolsVendingMachine.init(); } public static HashMap pools = new HashMap(); diff --git a/src/main/java/com/hbm/itempool/ItemPoolsComponent.java b/src/main/java/com/hbm/itempool/ItemPoolsComponent.java index dd501fee8..e02f6e6cb 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsComponent.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsComponent.java @@ -110,7 +110,8 @@ public class ItemPoolsComponent { weighted(ModItems.cap_nuka, 0, 1, 16, 2), weighted(ModItems.book_guide, 3, 1, 1, 1), weighted(ModBlocks.deco_computer, 0, 1, 1, 1), - weighted(ModItems.blueprint_folder, 0, 1, 1, 1) + weighted(ModItems.blueprint_folder, 0, 1, 1, 1), + weighted(ModItems.coin_token, 0, 1, 1, 2) }; }}; @@ -126,7 +127,8 @@ public class ItemPoolsComponent { weighted(ModItems.dust_tiny, 0, 1, 3, 75), weighted(ModItems.ink, 0, 1, 1, 1), weighted(ModItems.screwdriver, 0, 1, 1, 10), - weighted(ModItems.blueprint_folder, 0, 1, 1, 5) + weighted(ModItems.blueprint_folder, 0, 1, 1, 5), + weighted(ModItems.coin_token, 0, 1, 1, 30) }; }}; @@ -191,7 +193,8 @@ public class ItemPoolsComponent { weighted(Items.experience_bottle, 0, 1, 3, 1), weighted(ModItems.blueprint_folder, 0, 1, 1, 1), weighted(ModItems.blueprint_folder, 1, 1, 1, 1), - weighted(ModItems.ammo_container, 0, 1, 1, 1) + weighted(ModItems.ammo_container, 0, 1, 1, 1), + weighted(ModItems.coin_token, 0, 1, 1, 5) }; }}; diff --git a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java index 4b17cb1f9..dd0520995 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java @@ -70,7 +70,8 @@ public class ItemPoolsLegacy { weighted(ModItems.canister_full, Fluids.BIOFUEL.getID(), 1, 2, 3), weighted(ModItems.gas_mask_m65, 60, 1, 1, 2), weighted(ModItems.gas_mask_filter, 0, 1, 1, 3), - weighted(ModItems.blueprint_folder, 0, 1, 1, 1) + weighted(ModItems.blueprint_folder, 0, 1, 1, 1), + weighted(ModItems.coin_token, 0, 1, 1, 2) }; }}; diff --git a/src/main/java/com/hbm/itempool/ItemPoolsVendingMachine.java b/src/main/java/com/hbm/itempool/ItemPoolsVendingMachine.java new file mode 100644 index 000000000..706f845a9 --- /dev/null +++ b/src/main/java/com/hbm/itempool/ItemPoolsVendingMachine.java @@ -0,0 +1,40 @@ +package com.hbm.itempool; + +import static com.hbm.lib.HbmChestContents.weighted; + +import com.hbm.items.ModItems; +import com.hbm.items.food.ItemConserve.EnumFoodType; + +import net.minecraft.util.WeightedRandomChestContent; + +public class ItemPoolsVendingMachine { + + public static final String POOL_SODA = "POOL_SODA"; + public static final String POOL_SNACKS = "POOL_SNACKS"; + + + public static void init() { + + new ItemPool(POOL_SODA) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.bottle_nuka, 0, 1, 1, 10), + weighted(ModItems.bottle_cherry, 0, 1, 1, 5), + weighted(ModItems.bottle_quantum, 0, 1, 1, 1), + weighted(ModItems.can_bepis, 0, 1, 1, 10), + weighted(ModItems.can_luna, 0, 1, 1, 10), + weighted(ModItems.can_mug, 0, 1, 1, 10), + weighted(ModItems.can_breen, 0, 1, 1, 1), + }; + }}; + + new ItemPool(POOL_SNACKS) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.definitelyfood, 0, 1, 1, 10), + weighted(ModItems.canned_conserve, EnumFoodType.BEEF.ordinal(), 1, 1, 5), + weighted(ModItems.canned_conserve, EnumFoodType.TUBE.ordinal(), 1, 1, 5), + weighted(ModItems.twinkie, 0, 1, 1, 10), + weighted(ModItems.chocolate, 0, 1, 1, 10), + }; + }}; + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 1d89a8ab1..a481e3d7d 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -936,6 +936,7 @@ public class ModItems { public static Item coin_maskman; public static Item coin_worm; public static Item coin_ufo; + public static Item coin_token; //public static Item coin_siege; //public static Item source; @@ -2972,6 +2973,7 @@ public class ModItems { coin_maskman = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_maskman").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_maskman"); coin_worm = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_worm").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_worm"); coin_ufo = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_ufo").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_ufo"); + coin_token = new Item().setUnlocalizedName("coin_token").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_token"); rod_empty = new Item().setUnlocalizedName("rod_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_empty"); rod = (ItemEnumMulti) new ItemBreedingRod().setUnlocalizedName("rod").setContainerItem(ModItems.rod_empty).setCreativeTab(MainRegistry.controlTab); @@ -6086,6 +6088,7 @@ public class ModItems { GameRegistry.registerItem(coin_maskman, coin_maskman.getUnlocalizedName()); GameRegistry.registerItem(coin_worm, coin_worm.getUnlocalizedName()); GameRegistry.registerItem(coin_ufo, coin_ufo.getUnlocalizedName()); + GameRegistry.registerItem(coin_token, coin_token.getUnlocalizedName()); GameRegistry.registerItem(medal_liquidator, medal_liquidator.getUnlocalizedName()); GameRegistry.registerItem(bottled_cloud, bottled_cloud.getUnlocalizedName()); GameRegistry.registerItem(protection_charm, protection_charm.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index dcb87535c..da185a2c1 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -9,6 +9,7 @@ import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; import com.hbm.blocks.generic.BlockSkeletonHolder.TileEntitySkeletonHolder; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.generic.BlockWandStructure.TileEntityWandStructure; +import com.hbm.blocks.machine.BlockVendingMachine.TileEntityVendingMachine; import com.hbm.blocks.machine.Floodlight.TileEntityFloodlight; import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; @@ -212,6 +213,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBobble.class, new RenderBobble()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySnowglobe.class, new RenderSnowglobe()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPlushie.class, new RenderPlushie()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityVendingMachine.class, new RenderVendingMachine()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEmitter.class, new RenderEmitter()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLantern.class, new RenderLantern()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLanternBehemoth.class, new RenderLanternBehemoth()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index fd119fafa..ff44c6f7d 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -807,15 +807,10 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.rbmk_blank, 1), new Object[] { "RRR", "R R", "RRR", 'R', ModBlocks.deco_rbmk_smooth }); addRecipeAuto(new ItemStack(ModBlocks.ladder_sturdy, 8), new Object[] { "LLL", "L#L", "LLL", 'L', Blocks.ladder, '#', KEY_PLANKS }); - addRecipeAuto(new ItemStack(ModBlocks.ladder_iron, 8), new Object[] { "LLL", "L#L", "LLL", 'L', Blocks.ladder, '#', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.ladder_gold, 8), new Object[] { "LLL", "L#L", "LLL", 'L', Blocks.ladder, '#', GOLD.ingot() }); - addRecipeAuto(new ItemStack(ModBlocks.ladder_aluminium, 8), new Object[] { "LLL", "L#L", "LLL", 'L', Blocks.ladder, '#', AL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.ladder_copper, 8), new Object[] { "LLL", "L#L", "LLL", 'L', Blocks.ladder, '#', CU.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.ladder_titanium, 8), new Object[] { "LLL", "L#L", "LLL", 'L', Blocks.ladder, '#', TI.ingot() }); - addRecipeAuto(new ItemStack(ModBlocks.ladder_lead, 8), new Object[] { "LLL", "L#L", "LLL", 'L', Blocks.ladder, '#', PB.ingot() }); - addRecipeAuto(new ItemStack(ModBlocks.ladder_cobalt, 8), new Object[] { "LLL", "L#L", "LLL", 'L', Blocks.ladder, '#', CO.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.ladder_steel, 8), new Object[] { "LLL", "L#L", "LLL", 'L', Blocks.ladder, '#', STEEL.ingot() }); - addRecipeAuto(new ItemStack(ModBlocks.ladder_tungsten, 8), new Object[] { "LLL", "L#L", "LLL", 'L', Blocks.ladder, '#', W.ingot() }); addShapelessAuto(new ItemStack(ModBlocks.trapdoor_steel, 1), new Object[] { Blocks.trapdoor, STEEL.ingot() }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index e1ef6ac51..5b92a388e 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1606,6 +1606,15 @@ public class MainRegistry { ignoreMappings.add("hbm:item.weapon_golf_club"); ignoreMappings.add("hbm:item.weapon_pipe_rusty"); ignoreMappings.add("hbm:tile.crate_template"); + ignoreMappings.add("hbm:tile.barrel_iron"); + ignoreMappings.add("hbm:tile.factory_titanium_hull"); + ignoreMappings.add("hbm:tile.factory_advanced_hull"); + ignoreMappings.add("hbm:tile.vacuum"); + ignoreMappings.add("hbm:tile.ladder_iron"); + ignoreMappings.add("hbm:tile.ladder_aluminium"); + ignoreMappings.add("hbm:tile.ladder_lead"); + ignoreMappings.add("hbm:tile.ladder_cobalt"); + ignoreMappings.add("hbm:tile.ladder_tungsten"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 43fd795a2..caf9803b4 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -630,23 +630,8 @@ public class ModEventHandlerClient { @SubscribeEvent public void onPlaySound(PlaySoundEvent17 e) { - EntityPlayer player = MainRegistry.proxy.me(); Minecraft mc = Minecraft.getMinecraft(); - - if(player != null && mc.theWorld != null) { - int i = MathHelper.floor_double(player.posX); - int j = MathHelper.floor_double(player.posY); - int k = MathHelper.floor_double(player.posZ); - Block block = mc.theWorld.getBlock(i, j, k); - - if(block == ModBlocks.vacuum) { - e.result = null; - return; - } - } - ResourceLocation r = e.sound.getPositionedSoundLocation(); - WorldClient wc = mc.theWorld; //Alright, alright, I give the fuck up, you've wasted my time enough with this bullshit. You win. diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index ef4c2bfff..02714e9c8 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -63,7 +63,6 @@ public class ResourceManager { public static final IModelCustom mine_fat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_fat.obj")); public static final IModelCustom mine_naval = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/naval_mine.obj")).asVBO(); - //Oil Pumps public static final IModelCustom derrick = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/derrick.obj")).asVBO(); public static final IModelCustom pumpjack = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/pumpjack.obj")).asVBO(); @@ -368,6 +367,9 @@ public class ResourceManager { public static IModelCustomNamed silo_hatch = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/silo_hatch.obj")).asVBO(); public static final ResourceLocation silo_hatch_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/silo_hatch_large.png"); public static IModelCustomNamed silo_hatch_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/silo_hatch_large.obj")).asVBO(); + + //Vending Machine + public static final IModelCustom vending_machine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/vending_machine.obj")).noSmooth().asVBO(); //Skeleton public static final IModelCustom skeleton_holder = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/skeleton_holder.obj")).noSmooth().asVBO(); @@ -810,6 +812,9 @@ public class ResourceManager { //Doors public static final ResourceLocation transition_seal_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/transition_seal.png"); + //Vending Machine + public static final ResourceLocation vending_machine_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/vending_machine.png"); + //Skeleton public static final ResourceLocation skeleton_holder_tex = new ResourceLocation(RefStrings.MODID, "textures/particle/skeleton.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderVendingMachine.java b/src/main/java/com/hbm/render/tileentity/RenderVendingMachine.java new file mode 100644 index 000000000..251c67546 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderVendingMachine.java @@ -0,0 +1,62 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.client.IItemRenderer; + +public class RenderVendingMachine extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + World world = tile.getWorldObj(); + if(world.getBlock(tile.xCoord, tile.yCoord + 1, tile.zCoord) == tile.getBlockType()) { + bindTexture(ResourceManager.vending_machine_tex); + ResourceManager.vending_machine.renderPart(world.getBlockMetadata(tile.xCoord, tile.yCoord + 1, tile.zCoord) < 6 ? "Soda" : "Obamna"); + } + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.vending_machine); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(6.25, 6.25, 6.25); + } + public void renderCommonWithStack(ItemStack item) { + bindTexture(ResourceManager.vending_machine_tex); + ResourceManager.vending_machine.renderPart(item.getItemDamage() % 2 == 0 ? "Soda" : "Obamna"); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index cff29907c..8b5e03060 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -28,6 +28,7 @@ import com.hbm.blocks.generic.LogicBlock; import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; import com.hbm.blocks.machine.BlockICF.TileEntityBlockICF; import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; +import com.hbm.blocks.machine.BlockVendingMachine.TileEntityVendingMachine; import com.hbm.blocks.machine.Floodlight.TileEntityFloodlight; import com.hbm.blocks.machine.FloodlightBeam.TileEntityFloodlightBeam; import com.hbm.blocks.machine.MachineCapacitor.TileEntityCapacitor; @@ -219,6 +220,7 @@ public class TileMappings { put(TileEntityBobble.class, "tileentity_ntm_bobblehead"); put(TileEntitySnowglobe.class, "tileentity_ntm_snowglobe"); put(TileEntityPlushie.class, "tileentity_ntm_plushie"); + put(TileEntityVendingMachine.class, "tileentity_vending_machine"); put(TileEntityEmitter.class, "tileentity_ntm_emitter"); put(TileEntityCargoElevator.class, "tileentity_cargo_elevator"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIndustrialTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIndustrialTurbine.java index afb5c55b8..4c9eacad6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIndustrialTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIndustrialTurbine.java @@ -90,7 +90,7 @@ public class TileEntityMachineIndustrialTurbine extends TileEntityTurbineBase im @Override public void onServerTick() { this.spin = (double) flywheel_energy / FLYWHEEL_MAX_ENERGY; //because dense steams have way lower energy output, turbines running them take a lot longer to spool up - this.lastPowerTarget = (long) (this.spin * maxPower); + this.lastPowerTarget = Math.min((long) (Math.max(this.spin, 0.1) * maxPower), this.flywheel_energy); this.flywheel_energy -= this.lastPowerTarget; this.powerBuffer = (long) (this.lastPowerTarget); } 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 3cbcbb5c4..b49350ed9 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -15,7 +15,6 @@ import com.hbm.inventory.container.ContainerBarrel; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.fluid.trait.FT_Corrosive; import com.hbm.inventory.fluid.trait.FT_Polluting; import com.hbm.inventory.fluid.trait.FluidTrait.FluidReleaseType; import com.hbm.inventory.gui.GUIBarrel; @@ -241,23 +240,6 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "random.fizz", 1.0F, 1.0F); } - //for when you fill corrosive liquid into an iron tank - if((b == ModBlocks.barrel_iron && tank.getTankType().isCorrosive()) || - (b == ModBlocks.barrel_steel && tank.getTankType().hasTrait(FT_Corrosive.class) && tank.getTankType().getTrait(FT_Corrosive.class).getRating() > 50)) { - ItemStack[] copy = this.slots.clone(); - this.slots = new ItemStack[6]; - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.barrel_corroded); - TileEntityBarrel barrel = (TileEntityBarrel)worldObj.getTileEntity(xCoord, yCoord, zCoord); - - if(barrel != null) { - barrel.tank.setTankType(tank.getTankType()); - barrel.tank.setFill(Math.min(barrel.tank.getMaxFill(), tank.getFill())); - barrel.slots = copy; - } - - worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "random.fizz", 1.0F, 1.0F); - } - if(b == ModBlocks.barrel_corroded ) { if(worldObj.rand.nextInt(3) == 0) { tank.setFill(tank.getFill() - 1); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioAUTOCAL.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioAUTOCAL.java index 48647cf49..c109f51dd 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioAUTOCAL.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioAUTOCAL.java @@ -9,12 +9,15 @@ import com.hbm.module.ParseMSES1; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityTickingBase; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagString; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; public class TileEntityRadioAUTOCAL extends TileEntityTickingBase implements IControlReceiver, IGUIProvider { @@ -172,4 +175,18 @@ public class TileEntityRadioAUTOCAL extends TileEntityTickingBase implements ICo this.markChanged(); } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + if(bb == null) bb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 2, zCoord + 1); + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } } diff --git a/src/main/java/com/hbm/world/gen/component/BunkerComponents.java b/src/main/java/com/hbm/world/gen/component/BunkerComponents.java index 9ce9ed900..638fb228e 100644 --- a/src/main/java/com/hbm/world/gen/component/BunkerComponents.java +++ b/src/main/java/com/hbm/world/gen/component/BunkerComponents.java @@ -843,10 +843,10 @@ public class BunkerComponents { placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(2), 10, 3, 2, box); fillWithMetadataBlocks(world, box, 10, 2, 3, 10, 3, 3, ModBlocks.tape_recorder, decoMetaW); fillWithMetadataBlocks(world, box, 9, 1, 2, 9, 1, 3, ModBlocks.steel_grate, 7); - fillWithBlocks(world, box, 9, 1, 5, 10, 1, 5, ModBlocks.barrel_iron); - placeBlockAtCurrentPosition(world, ModBlocks.barrel_iron, 0, 10, 2, 5, box); - fillWithBlocks(world, box, 6, 1, 5, 6, 2, 5, ModBlocks.barrel_iron); - placeBlockAtCurrentPosition(world, ModBlocks.barrel_iron, 0, 6, 1, 2, box); + fillWithBlocks(world, box, 9, 1, 5, 10, 1, 5, ModBlocks.barrel_corroded); + placeBlockAtCurrentPosition(world, ModBlocks.barrel_corroded, 0, 10, 2, 5, box); + fillWithBlocks(world, box, 6, 1, 5, 6, 2, 5, ModBlocks.barrel_corroded); + placeBlockAtCurrentPosition(world, ModBlocks.barrel_corroded, 0, 6, 1, 2, box); break; case 2: for(int i = 7; i <= 9; i += 2) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 04d2c438c..3ed8190ee 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1750,6 +1750,7 @@ item.coin_creeper.name=Nukleare Creeper-Münze item.coin_maskman.name=Maskenmann-Münze item.coin_radiation.name=Strahlungs-Münze item.coin_siege.name=Belagerungsmünze +item.coin_token.name=Automatenmünze item.coin_ufo.name=UFO-Münze item.coin_worm.name=Balls-O-Tron-Münze item.coke.coal.name=Kohlekoks @@ -4980,6 +4981,7 @@ tile.turret_tau.name=Tauonengeschütz tile.turret_tauon.name=XVL1456-Prototypengeschütz "Tauon" tile.vacuum.name=Vakuum tile.vault_door.name=Vault-Tec Sprengtür +tile.vending_machine.name=Automat tile.vent_chlorine.name=Chlorgas-Auslass tile.vent_chlorine_seal.name=Chlorgassiegel tile.vent_cloud.name=Wolken-Auslass diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 400afa1d5..42e5ed1cf 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2541,6 +2541,7 @@ item.coin_creeper.name=Nuclear Creeper Coin item.coin_maskman.name=Maskman Coin item.coin_radiation.name=Radiation Coin item.coin_siege.name=Siege Coin +item.coin_token.name=Vending Machine Token item.coin_ufo.name=UFO Coin item.coin_worm.name=Balls-O-Tron Coin item.coke.coal.name=Coal Coke @@ -6321,6 +6322,7 @@ tile.turret_tau.name=Tauon Turret tile.turret_tauon.name=XVL1456 Prototype Turret "Tauon" tile.vacuum.name=Vacuum tile.vault_door.name=Vault-Tec Blast Door +tile.vending_machine.name=Vending Machine tile.vent_chlorine.name=Chlorine Vent tile.vent_chlorine_seal.name=Chlorine Seal tile.vent_cloud.name=Cloud Vent diff --git a/src/main/resources/assets/hbm/textures/items/coin_token.png b/src/main/resources/assets/hbm/textures/items/coin_token.png new file mode 100644 index 000000000..698bfaf86 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/coin_token.png differ