From 3eb8c7a8fca3f22475d53e30f0b90a6737f313fa Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Thu, 24 May 2018 15:53:20 -0400 Subject: Initial commit --- YWD/src/main/java/fyresmodjam/items/ItemTrap.java | 207 ++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100755 YWD/src/main/java/fyresmodjam/items/ItemTrap.java (limited to 'YWD/src/main/java/fyresmodjam/items/ItemTrap.java') diff --git a/YWD/src/main/java/fyresmodjam/items/ItemTrap.java b/YWD/src/main/java/fyresmodjam/items/ItemTrap.java new file mode 100755 index 0000000..8cf856e --- /dev/null +++ b/YWD/src/main/java/fyresmodjam/items/ItemTrap.java @@ -0,0 +1,207 @@ +package fyresmodjam.items; + +import java.util.List; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import fyresmodjam.ModjamMod; +import fyresmodjam.blocks.BlockTrap; +import fyresmodjam.misc.BehaviorDispenseTrap; +import net.minecraft.block.Block; +import net.minecraft.block.BlockDispenser; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.dispenser.IBehaviorDispenseItem; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class ItemTrap extends Item { + + private static final IBehaviorDispenseItem dispenseTrap = new BehaviorDispenseTrap(); + + public IIcon[] icons; + public static String[] iconLocations = new String[] { + "fyresmodjam:itemTrap", "fyresmodjam:trap2", + "fyresmodjam:trap3" + }; + + public ItemTrap() { + super(); + setHasSubtypes(true); + BlockDispenser.dispenseBehaviorRegistry.putObject(this, + dispenseTrap); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister par1IconRegister) { + icons = new IIcon[iconLocations.length]; + for (int i = 0; i < iconLocations.length; i++) { + icons[i] = par1IconRegister + .registerIcon(iconLocations[i]); + } + + itemIcon = icons[0]; + } + + @Override + public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, + List par3List) { + for (int i = 0; i < BlockTrap.trapTypes; i++) { + par3List.add(new ItemStack(par1, 1, i)); + } + } + + public static String[] names = { + "Spike Trap", "Flame Trap", "Smoke Trap" + }; + + @Override + @SideOnly(Side.CLIENT) + public String getItemStackDisplayName(ItemStack par1ItemStack) { + return names[par1ItemStack.getItemDamage() + % BlockTrap.trapTypes]; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int par1) { + return icons[par1 % BlockTrap.trapTypes]; + } + + @Override + public boolean onItemUse(ItemStack par1ItemStack, + EntityPlayer par2EntityPlayer, World par3World, + int par4, int par5, int par6, int par7, float par8, + float par9, float par10) { + Block i1 = par3World.getBlock(par4, par5, par6); + + if (i1 == Blocks.snow && (par3World.getBlockMetadata(par4, + par5, par6) & 7) < 1) { + par7 = 1; + } else if (i1 != Blocks.vine && i1 != Blocks.tallgrass + && i1 != Blocks.deadbush + && (i1 == null || !i1.isReplaceable( + par3World, par4, par5, + par6))) { + if (par7 == 0) { + --par5; + } + if (par7 == 1) { + ++par5; + } + if (par7 == 2) { + --par6; + } + if (par7 == 3) { + ++par6; + } + if (par7 == 4) { + --par4; + } + if (par7 == 5) { + ++par4; + } + } + + if (par1ItemStack.stackSize == 0) { + return false; + } else if (!par2EntityPlayer.canPlayerEdit(par4, par5, + par6, par7, par1ItemStack)) { + return false; + } else if (par5 == 255 && ModjamMod.blockTrap.getMaterial() + .isSolid()) { + return false; + } else if (par3World.canPlaceEntityOnSide( + ModjamMod.blockTrap, par4, par5, par6, + false, par7, par2EntityPlayer, + par1ItemStack)) { + Block block = ModjamMod.blockTrap; + int j1 = getMetadata( + par1ItemStack.getItemDamage()); + int k1 = ModjamMod.blockTrap.onBlockPlaced( + par3World, par4, par5, par6, par7, + par8, par9, par10, j1); + + if (placeBlockAt(par1ItemStack, par2EntityPlayer, + par3World, par4, par5, par6, par7, + par8, par9, par10, k1)) { + par3World.playSoundEffect(par4 + 0.5F, + par5 + 0.5F, par6 + 0.5F, + block.stepSound.func_150496_b(), + (block.stepSound.getVolume() + + 1.0F) + / 2.0F, + block.stepSound.getPitch() + * 0.8F); + --par1ItemStack.stackSize; + } + + return true; + } else { + return false; + } + } + + @SideOnly(Side.CLIENT) + public boolean canPlaceItemBlockOnSide(World par1World, int par2, + int par3, int par4, int par5, + EntityPlayer par6EntityPlayer, + ItemStack par7ItemStack) { + Block i1 = par1World.getBlock(par2, par3, par4); + + if (i1 == Blocks.snow) { + par5 = 1; + } else if (i1 != Blocks.vine && i1 != Blocks.tallgrass + && i1 != Blocks.deadbush + && (i1 == null || !i1.isReplaceable( + par1World, par2, par3, + par4))) { + if (par5 == 0) { + --par3; + } + if (par5 == 1) { + ++par3; + } + if (par5 == 2) { + --par4; + } + if (par5 == 3) { + ++par4; + } + if (par5 == 4) { + --par2; + } + if (par5 == 5) { + ++par2; + } + } + + return par1World.canPlaceEntityOnSide(ModjamMod.blockTrap, + par2, par3, par4, false, par5, + (Entity) null, par7ItemStack); + } + + public boolean placeBlockAt(ItemStack stack, EntityPlayer player, + World world, int x, int y, int z, int side, + float hitX, float hitY, float hitZ, int metadata) { + if (!world.setBlock(x, y, z, ModjamMod.blockTrap, metadata, + 3)) { + return false; + } + + if (world.getBlock(x, y, z) == ModjamMod.blockTrap) { + ModjamMod.blockTrap.onBlockPlacedBy(world, x, y, z, + player, stack); + ModjamMod.blockTrap.onPostBlockPlaced(world, x, y, + z, metadata); + } + + return true; + } +} -- cgit v1.2.3