From a11c98c6cad501e081837ec8fa2e323edaeb1ca3 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Thu, 24 May 2018 15:52:43 -0400 Subject: Initial commit --- .../src/main/java/tf2crates/item/ItemCrate.java | 196 +++++++++++++++++++++ .../src/main/java/tf2crates/item/ItemKey.java | 35 ++++ .../src/main/java/tf2crates/item/ItemKnife.java | 106 +++++++++++ .../src/main/java/tf2crates/item/ItemModAxe.java | 88 +++++++++ .../main/java/tf2crates/item/ItemModPickaxe.java | 100 +++++++++++ .../main/java/tf2crates/item/ItemModShovel.java | 66 +++++++ .../main/java/tf2crates/item/ItemNoiseMaker.java | 50 ++++++ .../src/main/java/tf2crates/item/ItemPaint.java | 124 +++++++++++++ .../src/main/java/tf2crates/item/ItemSandvich.java | 78 ++++++++ .../src/main/java/tf2crates/item/ItemScrap.java | 66 +++++++ .../java/tf2crates/item/ItemUnusualEffect.java | 61 +++++++ 11 files changed, 970 insertions(+) create mode 100755 TF2 Crates/src/main/java/tf2crates/item/ItemCrate.java create mode 100755 TF2 Crates/src/main/java/tf2crates/item/ItemKey.java create mode 100755 TF2 Crates/src/main/java/tf2crates/item/ItemKnife.java create mode 100755 TF2 Crates/src/main/java/tf2crates/item/ItemModAxe.java create mode 100755 TF2 Crates/src/main/java/tf2crates/item/ItemModPickaxe.java create mode 100755 TF2 Crates/src/main/java/tf2crates/item/ItemModShovel.java create mode 100755 TF2 Crates/src/main/java/tf2crates/item/ItemNoiseMaker.java create mode 100755 TF2 Crates/src/main/java/tf2crates/item/ItemPaint.java create mode 100755 TF2 Crates/src/main/java/tf2crates/item/ItemSandvich.java create mode 100755 TF2 Crates/src/main/java/tf2crates/item/ItemScrap.java create mode 100755 TF2 Crates/src/main/java/tf2crates/item/ItemUnusualEffect.java (limited to 'TF2 Crates/src/main/java/tf2crates/item') diff --git a/TF2 Crates/src/main/java/tf2crates/item/ItemCrate.java b/TF2 Crates/src/main/java/tf2crates/item/ItemCrate.java new file mode 100755 index 0000000..90be581 --- /dev/null +++ b/TF2 Crates/src/main/java/tf2crates/item/ItemCrate.java @@ -0,0 +1,196 @@ +package tf2crates.item; + +import java.util.List; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import tf2crates.ReferenceTC; +import tf2crates.ServerProxyTC; +import tf2crates.crate.Crates; +import tf2crates.crate.RandomLoot; +import tlhpoeCore.network.MessagePlaySound; +import tlhpoeCore.util.MathUtil; + +public class ItemCrate extends Item { + public static IIcon[] sCrateTextures; + public static int[] unusualChance; + public static int[] weaponChance; + + public ItemCrate() { + super(); + + this.setUnlocalizedName("crate"); + this.setTextureName(ReferenceTC.ID + ":crate"); + this.setMaxStackSize(1); + + this.hasSubtypes = true; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) { + super.registerIcons(register); + + sCrateTextures = new IIcon[Crates.getNumberOfSeries() + 1]; + + for (int i = 0; i < sCrateTextures.length; i++) { + if (Crates.isSeriesSpecial(i)) { + sCrateTextures[i] = register.registerIcon(ReferenceTC.ID + + ":" + Crates.getNameFromSeries(i)); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconIndex(ItemStack itemStack) { + int series = 1 + itemStack.getItemDamage(); + + if (Crates.isSeriesSpecial(series)) { + return sCrateTextures[series]; + } + + return super.getIconIndex(itemStack); + } + + @Override + public IIcon getIcon(ItemStack itemStack, int pass) { + int series = 1 + itemStack.getItemDamage(); + + if (Crates.isSeriesSpecial(series)) { + return sCrateTextures[series]; + } + + return super.getIcon(itemStack, pass); + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tabs, List list) { + for (int i = 0; i < Crates.getNumberOfSeries(); i++) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack itemStack, EntityPlayer player, + List info, boolean f) { + int series = itemStack.getItemDamage() + 1; + + info.add(Crates.isSeriesSpecial(series) + ? (EnumChatFormatting.GREEN + + (StatCollector.translateToLocal( + "crate." + Crates.getNameFromSeries(series) + + ".name"))) + : EnumChatFormatting.YELLOW + "Crate Series #" + series); + + Object[] lootItems = Crates.getLootForCrate(series); + + for (int i = 0; i < lootItems.length; i++) { + Object loot = lootItems[i]; + String name = null; + + if (loot instanceof ItemStack) { + name = ((ItemStack) loot).getDisplayName(); + } else if (loot instanceof RandomLoot) { + name = ((RandomLoot) loot).getDisplayName(); + } + + info.add(EnumChatFormatting.GRAY + name); + } + + info.add(EnumChatFormatting.AQUA + + "or an Exceedingly Rare Special Item!"); + } + + @Override + public ItemStack onItemRightClick(ItemStack itemStack, World world, + EntityPlayer player) { + if (!world.isRemote) { + if (player.capabilities.isCreativeMode || player.inventory + .consumeInventoryItem(ServerProxyTC.key)) { + int series = itemStack.getItemDamage() + 1; + Object[] lootItems = Crates.getLootForCrate(series); + + ItemStack stackLoot = null; + + if (MathUtil.getChance(unusualChance[0], + unusualChance[1])) { + stackLoot = new ItemStack(ServerProxyTC.unusualEffect, + 1, MathUtil.nextInt( + ItemUnusualEffect.TYPES.length)); + } else if (MathUtil.getChance(weaponChance[0], + weaponChance[1])) { + stackLoot = new ItemStack( + RandomLoot.WEAPONS.get(MathUtil + .nextInt(RandomLoot.WEAPONS.size())), + 1); + } else { + Object loot = + lootItems[MathUtil.nextInt(lootItems.length)]; + + if (loot instanceof ItemStack) { + stackLoot = (ItemStack) loot; + } else if (loot instanceof RandomLoot) { + stackLoot = ((RandomLoot) loot).getLoot(); + } + } + + boolean full = true; + + for (int i = 0; i < player.inventory.getSizeInventory(); + i++) { + if (player.inventory.getStackInSlot(i) == null) { + full = false; + } + } + + if (!full) { + player.inventory + .addItemStackToInventory(stackLoot.copy()); + } else { + player.entityDropItem(stackLoot.copy(), 1F); + } + + MinecraftServer.getServer().getConfigurationManager() + .sendChatMsg(new ChatComponentText(player + .getDisplayName() + + " just uncrated " + + (stackLoot.stackSize > 1 + ? (EnumChatFormatting.AQUA + "" + + stackLoot.stackSize + + " ") + : "a ") + + EnumChatFormatting.YELLOW + + stackLoot.getDisplayName() + + (stackLoot.stackSize > 1 ? "s" : "") + + EnumChatFormatting.WHITE + "!!!")); + + new MessagePlaySound(ReferenceTC.ID + ":tf2crates.uncrate") + .sendTo((EntityPlayerMP) player); + + itemStack.stackSize--; + } else { + player.addChatMessage(new ChatComponentText("You need a " + + EnumChatFormatting.YELLOW + + "Steve Co. Supply Crate Key" + + EnumChatFormatting.WHITE + " to open this!")); + } + } + + return itemStack; + } +} \ No newline at end of file diff --git a/TF2 Crates/src/main/java/tf2crates/item/ItemKey.java b/TF2 Crates/src/main/java/tf2crates/item/ItemKey.java new file mode 100755 index 0000000..242f1a2 --- /dev/null +++ b/TF2 Crates/src/main/java/tf2crates/item/ItemKey.java @@ -0,0 +1,35 @@ +package tf2crates.item; + +import java.util.List; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import tf2crates.ReferenceTC; + +public class ItemKey extends Item { + public ItemKey() { + super(); + + this.setUnlocalizedName("key"); + this.setTextureName(ReferenceTC.ID + ":key"); + this.setMaxStackSize(1); + } + + @Override + public EnumRarity getRarity(ItemStack itemStack) { + return EnumRarity.rare; + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack itemStack, EntityPlayer player, + List info, boolean f) { + info.add(EnumChatFormatting.YELLOW + + "Used to open locked supply crates."); + } +} \ No newline at end of file diff --git a/TF2 Crates/src/main/java/tf2crates/item/ItemKnife.java b/TF2 Crates/src/main/java/tf2crates/item/ItemKnife.java new file mode 100755 index 0000000..46412ee --- /dev/null +++ b/TF2 Crates/src/main/java/tf2crates/item/ItemKnife.java @@ -0,0 +1,106 @@ +package tf2crates.item; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemSword; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.IIcon; +import tf2crates.ReferenceTC; +import tf2crates.ServerProxyTC; +import tf2crates.crate.RandomLoot; +import tf2crates.entity.EntityDamageSourceBackstab; +import tlhpoeCore.network.MessagePlaySound; +import tlhpoeCore.util.MiscUtil; + +public class ItemKnife extends ItemSword { + public static double backstabDifficulty = 0.75D; + + public IIcon goldTexture; + + public ItemKnife(String name) { + super(ServerProxyTC.MOD_WEAPON); + + this.setUnlocalizedName(name); + this.setTextureName(ReferenceTC.ID + ":weapon/" + name); + + RandomLoot.WEAPONS.add(this); + } + + public ItemKnife(String name, float dmg) { + this(name); + + MiscUtil.replaceField("field_150934_a", ItemSword.class, dmg, + this); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) { + super.registerIcons(register); + + this.goldTexture = + register.registerIcon(ReferenceTC.ID + ":weapon/gold/" + + this.getUnlocalizedName().substring(5)); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconIndex(ItemStack itemStack) { + NBTTagCompound nbt = itemStack.getTagCompound(); + + if (nbt != null && nbt.getBoolean("Golden")) { + return this.goldTexture; + } + + return super.getIconIndex(itemStack); + } + + @Override + public IIcon getIcon(ItemStack itemStack, int pass) { + NBTTagCompound nbt = itemStack.getTagCompound(); + + if (nbt != null && nbt.getBoolean("Golden")) { + return this.goldTexture; + } + + return super.getIcon(itemStack, pass); + } + + @Override + public boolean hitEntity(ItemStack itemStack, EntityLivingBase prey, + EntityLivingBase attacker) { + itemStack.damageItem(1, attacker); + + float pYaw = prey.rotationYawHead % 360F; + + pYaw = pYaw < 0 ? 360 + pYaw : prey.rotationYawHead; + + float aYaw = attacker.rotationYawHead < 0 + ? 360 + attacker.rotationYawHead + : attacker.rotationYawHead; + + float newRot = pYaw - aYaw; + + if (newRot < (90 * backstabDifficulty) + && newRot > (-90 * backstabDifficulty)) { + if (!attacker.worldObj.isRemote) { + new MessagePlaySound(ReferenceTC.ID + ":tf2crates.crit") + .sendTo((EntityPlayerMP) attacker); + } + + if (itemStack.getItem() == ServerProxyTC.conniversKunai) { + attacker.heal(prey.getMaxHealth()); + } + + prey.attackEntityFrom(EntityDamageSourceBackstab + .causeBackstabDamage(attacker), + prey.getMaxHealth() * 600); + } + + return false; + } +} \ No newline at end of file diff --git a/TF2 Crates/src/main/java/tf2crates/item/ItemModAxe.java b/TF2 Crates/src/main/java/tf2crates/item/ItemModAxe.java new file mode 100755 index 0000000..78dea2c --- /dev/null +++ b/TF2 Crates/src/main/java/tf2crates/item/ItemModAxe.java @@ -0,0 +1,88 @@ +package tf2crates.item; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemAxe; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemTool; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import tf2crates.ReferenceTC; +import tf2crates.ServerProxyTC; +import tf2crates.crate.RandomLoot; +import tlhpoeCore.util.MiscUtil; + +public class ItemModAxe extends ItemAxe { + public IIcon goldTexture; + + public ItemModAxe(String name) { + super(ServerProxyTC.MOD_WEAPON); + + this.setUnlocalizedName(name); + this.setTextureName(ReferenceTC.ID + ":weapon/" + name); + + RandomLoot.WEAPONS.add(this); + } + + public ItemModAxe(String name, float dmg) { + this(name); + + MiscUtil.replaceField("damageVsEntity", ItemTool.class, dmg, this); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) { + super.registerIcons(register); + + this.goldTexture = + register.registerIcon(ReferenceTC.ID + ":weapon/gold/" + + this.getUnlocalizedName().substring(5)); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconIndex(ItemStack itemStack) { + NBTTagCompound nbt = itemStack.getTagCompound(); + + if (nbt != null && nbt.getBoolean("Golden")) { + return this.goldTexture; + } + + return super.getIconIndex(itemStack); + } + + @Override + public IIcon getIcon(ItemStack itemStack, int pass) { + NBTTagCompound nbt = itemStack.getTagCompound(); + + if (nbt != null && nbt.getBoolean("Golden")) { + return this.goldTexture; + } + + return super.getIcon(itemStack, pass); + } + + @Override + public void onUpdate(ItemStack itemStack, World world, Entity entity, + int f, boolean f2) { + if (this == ServerProxyTC.powerJack) { + if (entity instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) entity; + ItemStack heldItem = living.getHeldItem(); + + if (heldItem != null && heldItem.getItem() != null + && heldItem.getItem() == ServerProxyTC.powerJack) { + living.addPotionEffect(new PotionEffect( + Potion.moveSpeed.id, 2, 0, true)); + } + } + } + } +} \ No newline at end of file diff --git a/TF2 Crates/src/main/java/tf2crates/item/ItemModPickaxe.java b/TF2 Crates/src/main/java/tf2crates/item/ItemModPickaxe.java new file mode 100755 index 0000000..ddcd915 --- /dev/null +++ b/TF2 Crates/src/main/java/tf2crates/item/ItemModPickaxe.java @@ -0,0 +1,100 @@ +package tf2crates.item; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemPickaxe; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import tf2crates.ReferenceTC; +import tf2crates.ServerProxyTC; +import tf2crates.crate.RandomLoot; + +public class ItemModPickaxe extends ItemPickaxe { + public IIcon goldTexture; + + public ItemModPickaxe(String name) { + super(ServerProxyTC.MOD_WEAPON); + + this.setUnlocalizedName(name); + this.setTextureName(ReferenceTC.ID + ":weapon/" + name); + + RandomLoot.WEAPONS.add(this); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) { + super.registerIcons(register); + + this.goldTexture = + register.registerIcon(ReferenceTC.ID + ":weapon/gold/" + + this.getUnlocalizedName().substring(5)); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconIndex(ItemStack itemStack) { + NBTTagCompound nbt = itemStack.getTagCompound(); + + if (nbt != null && nbt.getBoolean("Golden")) { + return this.goldTexture; + } + + return super.getIconIndex(itemStack); + } + + @Override + public IIcon getIcon(ItemStack itemStack, int pass) { + NBTTagCompound nbt = itemStack.getTagCompound(); + + if (nbt != null && nbt.getBoolean("Golden")) { + return this.goldTexture; + } + + return super.getIcon(itemStack, pass); + } + + @Override + public void onUpdate(ItemStack itemStack, World world, Entity entity, + int f, boolean f2) { + if (this == ServerProxyTC.escapePlan) { + if (entity instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) entity; + ItemStack heldItem = living.getHeldItem(); + + if (heldItem != null && heldItem.getItem() != null + && heldItem + .getItem() == ServerProxyTC.escapePlan) { + float per = living.getHealth() / living.getMaxHealth(); + int amplifier = -1; + + if (per <= 0.25F) { + amplifier = 2; + } else if (per <= 0.5F) { + amplifier = 1; + } else if (per <= 0.75F) { + amplifier = 0; + } + + if (amplifier != -1) { + living.addPotionEffect(new PotionEffect( + Potion.moveSpeed.id, 2, amplifier, true)); + } + + if (amplifier > 0) { + living.addPotionEffect( + new PotionEffect(Potion.digSpeed.id, 2, + amplifier - 1, true)); + } + } + } + } + } +} \ No newline at end of file diff --git a/TF2 Crates/src/main/java/tf2crates/item/ItemModShovel.java b/TF2 Crates/src/main/java/tf2crates/item/ItemModShovel.java new file mode 100755 index 0000000..e43b713 --- /dev/null +++ b/TF2 Crates/src/main/java/tf2crates/item/ItemModShovel.java @@ -0,0 +1,66 @@ +package tf2crates.item; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.ItemSpade; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemTool; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.IIcon; +import tf2crates.ReferenceTC; +import tf2crates.ServerProxyTC; +import tf2crates.crate.RandomLoot; +import tlhpoeCore.util.MiscUtil; + +public class ItemModShovel extends ItemSpade { + public IIcon goldTexture; + + public ItemModShovel(String name) { + super(ServerProxyTC.MOD_WEAPON); + + this.setUnlocalizedName(name); + this.setTextureName(ReferenceTC.ID + ":weapon/" + name); + + RandomLoot.WEAPONS.add(this); + } + + public ItemModShovel(String name, float dmg) { + this(name); + + MiscUtil.replaceField("damageVsEntity", ItemTool.class, dmg, this); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) { + super.registerIcons(register); + + this.goldTexture = + register.registerIcon(ReferenceTC.ID + ":weapon/gold/" + + this.getUnlocalizedName().substring(5)); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconIndex(ItemStack itemStack) { + NBTTagCompound nbt = itemStack.getTagCompound(); + + if (nbt != null && nbt.getBoolean("Golden")) { + return this.goldTexture; + } + + return super.getIconIndex(itemStack); + } + + @Override + public IIcon getIcon(ItemStack itemStack, int pass) { + NBTTagCompound nbt = itemStack.getTagCompound(); + + if (nbt != null && nbt.getBoolean("Golden")) { + return this.goldTexture; + } + + return super.getIcon(itemStack, pass); + } +} \ No newline at end of file diff --git a/TF2 Crates/src/main/java/tf2crates/item/ItemNoiseMaker.java b/TF2 Crates/src/main/java/tf2crates/item/ItemNoiseMaker.java new file mode 100755 index 0000000..807e9ab --- /dev/null +++ b/TF2 Crates/src/main/java/tf2crates/item/ItemNoiseMaker.java @@ -0,0 +1,50 @@ +package tf2crates.item; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import tf2crates.ReferenceTC; +import tlhpoeCore.util.MathUtil; + +public class ItemNoiseMaker extends Item { + public String[] noises; + + public ItemNoiseMaker(String name, String... noises) { + super(); + + this.setUnlocalizedName(name); + this.setTextureName(ReferenceTC.ID + ":" + name); + this.setMaxStackSize(1); + + this.noises = noises; + } + + @Override + public void onPlayerStoppedUsing(ItemStack itemStack, World world, + EntityPlayer player, int time) { + if (this.getMaxItemUseDuration(itemStack) - time > 10) { + player.playSound(noises[MathUtil.nextInt(noises.length)], + 0.25F + ((float) (MathUtil.nextDouble() / 8)), 1F); + } + } + + @Override + public ItemStack onItemRightClick(ItemStack itemStack, World world, + EntityPlayer player) { + player.setItemInUse(itemStack, + this.getMaxItemUseDuration(itemStack)); + return itemStack; + } + + @Override + public int getMaxItemUseDuration(ItemStack itemStack) { + return Integer.MAX_VALUE; + } + + @Override + public EnumAction getItemUseAction(ItemStack itemStack) { + return EnumAction.block; + } +} \ No newline at end of file diff --git a/TF2 Crates/src/main/java/tf2crates/item/ItemPaint.java b/TF2 Crates/src/main/java/tf2crates/item/ItemPaint.java new file mode 100755 index 0000000..f1d4f51 --- /dev/null +++ b/TF2 Crates/src/main/java/tf2crates/item/ItemPaint.java @@ -0,0 +1,124 @@ +package tf2crates.item; + +import java.util.List; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import tf2crates.ReferenceTC; + +public class ItemPaint extends Item { // make paint able to change the + // color of wool blocks + public static final String[] TYPES = { "black", "red", "green", + "brown", "blue", "purple", "cyan", "silver", "gray", "pink", + "lime", "yellow", "lightBlue", "magenta", "orange", "white" }; + public IIcon[] textures; + + public ItemPaint() { + super(); + + this.setUnlocalizedName("paint"); + this.setMaxStackSize(1); + + this.hasSubtypes = true; + + this.setContainerItem(this); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) { + textures = new IIcon[TYPES.length]; + + for (int i = 0; i < TYPES.length; i++) { + textures[i] = iconRegister + .registerIcon(ReferenceTC.ID + ":paint/" + TYPES[i]); + } + } + + @Override + public String getItemStackDisplayName(ItemStack itemStack) { + return StatCollector.translateToLocal( + "paint." + TYPES[itemStack.getItemDamage()] + ".name"); + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tabs, List list) { + for (int i = 0; i < TYPES.length; i++) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + public EnumRarity getRarity(ItemStack itemStack) { + return EnumRarity.rare; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int dmg) { + return textures[dmg]; + } + + @Override + public boolean + doesContainerItemLeaveCraftingGrid(ItemStack itemStack) { + return false; + } + + @Override + public boolean hasContainerItem(ItemStack stack) { + return true; + } + + @Override + public ItemStack getContainerItem(ItemStack itemStack) { + return itemStack; + } + + @Override + public boolean onItemUse(ItemStack itemStack, EntityPlayer player, + World world, int x, int y, int z, int meta, float p_77648_8_, + float p_77648_9_, float p_77648_10_) { + Block block = world.getBlock(x, y, z); + + if (block == Blocks.wool || block == Blocks.carpet + || block == Blocks.glass || block == Blocks.stained_glass + || block == Blocks.glass_pane + || block == Blocks.stained_glass_pane + || block == Blocks.hardened_clay + || block == Blocks.stained_hardened_clay) { + if (!world.isRemote) { + if (block == Blocks.glass) { + block = Blocks.stained_glass; + } + + if (block == Blocks.glass_pane) { + block = Blocks.stained_glass_pane; + } + + if (block == Blocks.hardened_clay) { + block = Blocks.stained_hardened_clay; + } + + world.setBlock(x, y, z, block, + 15 - itemStack.getItemDamage(), 2); + } + + return true; + } + + return false; + } +} \ No newline at end of file diff --git a/TF2 Crates/src/main/java/tf2crates/item/ItemSandvich.java b/TF2 Crates/src/main/java/tf2crates/item/ItemSandvich.java new file mode 100755 index 0000000..0a58246 --- /dev/null +++ b/TF2 Crates/src/main/java/tf2crates/item/ItemSandvich.java @@ -0,0 +1,78 @@ +package tf2crates.item; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemFood; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import tf2crates.ReferenceTC; +import tf2crates.crate.RandomLoot; + +public class ItemSandvich extends ItemFood { + public ItemSandvich() { + super(20, 0.32F, true); + + this.setUnlocalizedName("sandvich"); + this.setTextureName(ReferenceTC.ID + ":sandvich"); + this.setMaxStackSize(1); + this.setMaxDamage(6001); + this.setAlwaysEdible(); + + RandomLoot.WEAPONS.add(this); + } + + @Override + protected void onFoodEaten(ItemStack itemStack, World world, + EntityPlayer player) { + if (!world.isRemote) { + player.addPotionEffect( + new PotionEffect(Potion.regeneration.id, 600, 2)); + player.addPotionEffect( + new PotionEffect(Potion.digSpeed.id, 600, 2)); + player.addPotionEffect( + new PotionEffect(Potion.moveSpeed.id, 600, 1)); + + player.heal(player.getMaxHealth()); + + itemStack.setItemDamage(6000); + } + } + + @Override + public ItemStack onEaten(ItemStack itemStack, World world, + EntityPlayer player) { + player.getFoodStats().func_151686_a(this, itemStack); + + world.playSoundAtEntity(player, "random.burp", 0.5F, + world.rand.nextFloat() * 0.1F + 0.9F); + + this.onFoodEaten(itemStack, world, player); + + return itemStack; + } + + @Override + public ItemStack onItemRightClick(ItemStack itemStack, World world, + EntityPlayer player) { + if (itemStack.getItemDamage() == 0) { + player.setItemInUse(itemStack, + this.getMaxItemUseDuration(itemStack)); + } + + return itemStack; + } + + @Override + public void onUpdate(ItemStack itemStack, World world, Entity entity, + int f, boolean f2) { + if (!world.isRemote) { + int dmg = itemStack.getItemDamage(); + + if (dmg > 0) { + itemStack.setItemDamage(dmg - 1); + } + } + } +} \ No newline at end of file diff --git a/TF2 Crates/src/main/java/tf2crates/item/ItemScrap.java b/TF2 Crates/src/main/java/tf2crates/item/ItemScrap.java new file mode 100755 index 0000000..900851d --- /dev/null +++ b/TF2 Crates/src/main/java/tf2crates/item/ItemScrap.java @@ -0,0 +1,66 @@ +package tf2crates.item; + +import java.util.List; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import tf2crates.ReferenceTC; + +public class ItemScrap extends Item { + public static final String[] TYPES = + { "scrap", "reclaimed", "refined" }; + public static final EnumRarity[] RARITIES = + { EnumRarity.uncommon, EnumRarity.rare, EnumRarity.epic }; + public IIcon[] textures; + + public ItemScrap() { + super(); + + this.setUnlocalizedName("scrap"); + + this.hasSubtypes = true; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) { + textures = new IIcon[TYPES.length]; + + for (int i = 0; i < TYPES.length; i++) { + textures[i] = iconRegister + .registerIcon(ReferenceTC.ID + ":" + TYPES[i]); + } + } + + @Override + public String getItemStackDisplayName(ItemStack itemStack) { + return StatCollector.translateToLocal( + "item." + TYPES[itemStack.getItemDamage()] + ".name"); + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tabs, List list) { + for (int i = 0; i < TYPES.length; i++) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int dmg) { + return textures[dmg]; + } + + @Override + public EnumRarity getRarity(ItemStack itemStack) { + return RARITIES[itemStack.getItemDamage()]; + } +} \ No newline at end of file diff --git a/TF2 Crates/src/main/java/tf2crates/item/ItemUnusualEffect.java b/TF2 Crates/src/main/java/tf2crates/item/ItemUnusualEffect.java new file mode 100755 index 0000000..03ac2b0 --- /dev/null +++ b/TF2 Crates/src/main/java/tf2crates/item/ItemUnusualEffect.java @@ -0,0 +1,61 @@ +package tf2crates.item; + +import java.util.List; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; +import tf2crates.ReferenceTC; + +public class ItemUnusualEffect extends Item { + public static final String[] TYPES = { "burningFlames", "poof", + "whiteSparkles", "flies", "critical", "magicalCrit", "musical", + "end", "enchanted", "volcano", "smoking", "slime", "loving", + "villager" }; + + public ItemUnusualEffect() { + super(); + + this.setUnlocalizedName("unusualEffect"); + this.setTextureName(ReferenceTC.ID + ":unusualEffect"); + this.setMaxStackSize(1); + this.setFull3D(); + + this.hasSubtypes = true; + } + + @Override + public String getItemStackDisplayName(ItemStack itemStack) { + return StatCollector + .translateToLocal("unusualEffect." + + TYPES[itemStack.getItemDamage()] + ".name") + + " Unusual Effect"; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tabs, List list) { + for (int i = 0; i < TYPES.length; i++) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + public EnumRarity getRarity(ItemStack itemStack) { + return EnumRarity.epic; + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack itemStack, EntityPlayer player, + List info, boolean f) { + info.add(EnumChatFormatting.YELLOW + + "Combine this with the helmet of your choice!"); + } +} \ No newline at end of file -- cgit v1.2.3