summaryrefslogtreecommitdiff
path: root/YWD/src/main/java/fyresmodjam/items/ItemMysteryPotion.java
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2018-05-24 15:53:20 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2018-05-24 15:53:20 -0400
commit3eb8c7a8fca3f22475d53e30f0b90a6737f313fa (patch)
tree1c0afbcb6712408fb791849969f9766dcdeb5868 /YWD/src/main/java/fyresmodjam/items/ItemMysteryPotion.java
Initial commit
Diffstat (limited to 'YWD/src/main/java/fyresmodjam/items/ItemMysteryPotion.java')
-rwxr-xr-xYWD/src/main/java/fyresmodjam/items/ItemMysteryPotion.java303
1 files changed, 303 insertions, 0 deletions
diff --git a/YWD/src/main/java/fyresmodjam/items/ItemMysteryPotion.java b/YWD/src/main/java/fyresmodjam/items/ItemMysteryPotion.java
new file mode 100755
index 0000000..8df424e
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/items/ItemMysteryPotion.java
@@ -0,0 +1,303 @@
+package fyresmodjam.items;
+
+import java.util.List;
+
+import cpw.mods.fml.common.FMLCommonHandler;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import fyresmodjam.ModjamMod;
+import fyresmodjam.blessings.BlessingUtils;
+import fyresmodjam.entities.EntityMysteryPotion;
+import fyresmodjam.handlers.CommonTickHandler;
+import fyresmodjam.handlers.NewPacketHandler;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.EnumAction;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.potion.Potion;
+import net.minecraft.potion.PotionEffect;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+
+public class ItemMysteryPotion extends Item {
+
+ public IIcon[] icons = null;
+
+ public ItemMysteryPotion() {
+ super();
+ setHasSubtypes(true);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister par1IconRegister) {
+ icons = new IIcon[26];
+
+ for (int i = 0; i < 13; i++) {
+ icons[i] = par1IconRegister.registerIcon(
+ "fyresmodjam:mysteryPotion_"
+ + (i + 1));
+ icons[i + 13] = par1IconRegister.registerIcon(
+ "fyresmodjam:mysteryPotionThrowable_"
+ + (i + 1));
+ }
+
+ itemIcon = icons[0];
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIconFromDamage(int par1) {
+ return icons[par1 % 26];
+ }
+
+ @Override
+ public void getSubItems(Item par1, CreativeTabs par2CreativeTabs,
+ List par3List) {
+ for (int i = 0; i < 13; i++) {
+ par3List.add(new ItemStack(par1, 1, i));
+ }
+ for (int i = 0; i < 13; i++) {
+ par3List.add(new ItemStack(par1, 1, i + 13));
+ }
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public String getItemStackDisplayName(ItemStack par1ItemStack) {
+ int damage = par1ItemStack.getItemDamage() % 13;
+ String name = "Mystery Potion #" + (damage + 1);
+
+ if (damage < 12) {
+ if (Minecraft.getMinecraft().thePlayer != null
+ && Minecraft.getMinecraft().thePlayer
+ .getEntityData()
+ .hasKey("PotionKnowledge")) {
+ if (Minecraft.getMinecraft().thePlayer
+ .getEntityData()
+ .getIntArray("PotionKnowledge")[damage] != -1) {
+ Potion potion = Potion.potionTypes[NewPacketHandler.potionValues[damage]];
+ name = StatCollector
+ .translateToLocal(
+ potion.getName())
+ + " Potion";
+
+ if (!potion.isInstant()) {
+ int time = NewPacketHandler.potionDurations[damage];
+ name += " (" + time
+ + " seconds)";
+ }
+ }
+ }
+ } else if (damage >= 12) {
+ name = "Wildcard Potion";
+ }
+
+ if (FMLCommonHandler.instance().getSide() == Side.CLIENT
+ && hasBlessing("Alchemist")) {
+ name = "\u00A7k" + name;
+ }
+
+ return name;
+ }
+
+ @Override
+ public EnumAction getItemUseAction(ItemStack par1ItemStack) {
+ return par1ItemStack.getItemDamage() < 13
+ ? EnumAction.drink
+ : super.getItemUseAction(par1ItemStack);
+ }
+
+ @Override
+ public ItemStack onItemRightClick(ItemStack par1ItemStack,
+ World par2World, EntityPlayer par3EntityPlayer) {
+ if (par1ItemStack.getItemDamage() < 13) {
+ par3EntityPlayer.setItemInUse(par1ItemStack,
+ getMaxItemUseDuration(
+ par1ItemStack));
+ } else {
+ if (!par3EntityPlayer.capabilities.isCreativeMode) {
+ par1ItemStack.stackSize--;
+ }
+ par2World.playSoundAtEntity(par3EntityPlayer,
+ "random.bow", 0.5F,
+ 0.4F / (itemRand.nextFloat() * 0.4F
+ + 0.8F));
+
+ if (!par2World.isRemote) {
+ int value = 0;
+
+ if (par1ItemStack.getItemDamage()
+ % 13 >= 12) {
+ value = ModjamMod.r.nextInt(
+ Potion.potionTypes.length);
+ while (Potion.potionTypes[value] == null) {
+ value = ModjamMod.r
+ .nextInt(Potion.potionTypes.length);
+ }
+ } else {
+ value = CommonTickHandler.worldData.potionValues[par1ItemStack
+ .getItemDamage()
+ % 13];
+ }
+
+ par2World.spawnEntityInWorld(
+ new EntityMysteryPotion(
+ par2World,
+ par3EntityPlayer,
+ par1ItemStack));
+ }
+ }
+
+ return par1ItemStack;
+ }
+
+ @Override
+ public int getMaxItemUseDuration(ItemStack par1ItemStack) {
+ return par1ItemStack.getItemDamage() < 13 ? 32
+ : super.getMaxItemUseDuration(
+ par1ItemStack);
+ }
+
+ @Override
+ public ItemStack onEaten(ItemStack par1ItemStack, World par2World,
+ EntityPlayer par3EntityPlayer) {
+ if (!par3EntityPlayer.capabilities.isCreativeMode) {
+ --par1ItemStack.stackSize;
+ }
+
+ int damage = par1ItemStack.getItemDamage() % 13;
+
+ if (!BlessingUtils.hasBlessing(par3EntityPlayer,
+ "BlessingAlchemist") && damage < 12) {
+ if (!par2World.isRemote) {
+
+ int value = CommonTickHandler.worldData.potionValues[damage];
+
+ if (!Potion.potionTypes[value]
+ .isInstant()) {
+ par3EntityPlayer.addPotionEffect(
+ new PotionEffect(
+ value,
+ CommonTickHandler.worldData.potionDurations[damage]
+ * 20,
+ 1,
+ false));
+ } else {
+ Potion.potionTypes[value]
+ .affectEntity(par3EntityPlayer,
+ par3EntityPlayer,
+ 1,
+ 1);
+ }
+
+ if (!par3EntityPlayer.getEntityData()
+ .hasKey("PotionKnowledge")) {
+ par3EntityPlayer.getEntityData()
+ .setIntArray("PotionKnowledge",
+ new int[] {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ });
+ }
+
+ if (par3EntityPlayer.getEntityData()
+ .getIntArray("PotionKnowledge")[damage] == -1) {
+ par3EntityPlayer.getEntityData()
+ .getIntArray("PotionKnowledge")[damage] = 1;
+
+ NewPacketHandler.UPDATE_POTION_KNOWLEDGE
+ .sendToPlayer(par3EntityPlayer,
+ par3EntityPlayer.getEntityData()
+ .getIntArray("PotionKnowledge"));
+
+ Potion potion = Potion.potionTypes[CommonTickHandler.worldData.potionValues[damage]];
+ String name = StatCollector
+ .translateToLocal(
+ potion.getName())
+ + " Potion";
+
+ if (!potion.isInstant()) {
+ int time = CommonTickHandler.worldData.potionDurations[damage];
+ name += " (" + time
+ + " seconds)";
+ }
+
+ NewPacketHandler.SEND_MESSAGE
+ .sendToPlayer(par3EntityPlayer,
+ "\u00A7oYou learnt Mystery Potion #"
+ + (damage + 1)
+ + " was a "
+ + name
+ + "!");
+ }
+ }
+
+ } else if (!par2World.isRemote) {
+ int value = ModjamMod.r.nextInt(
+ Potion.potionTypes.length);
+ while (Potion.potionTypes[value] == null) {
+ value = ModjamMod.r.nextInt(
+ Potion.potionTypes.length);
+ }
+ int time = 5 + ModjamMod.r.nextInt(26);
+
+ if (!Potion.potionTypes[value].isInstant()) {
+ par3EntityPlayer.addPotionEffect(
+ new PotionEffect(value,
+ time * 20,
+ 1, false));
+ } else {
+ Potion.potionTypes[value].affectEntity(
+ par3EntityPlayer,
+ par3EntityPlayer, 1, 1);
+ }
+
+ Potion potion = Potion.potionTypes[value];
+ String name = StatCollector.translateToLocal(
+ potion.getName()) + " Potion";
+
+ if (!potion.isInstant()) {
+ name += " (" + time + " seconds)";
+ }
+
+ NewPacketHandler.SEND_MESSAGE.sendToPlayer(
+ par3EntityPlayer,
+ "\u00A7oYou drank a " + name
+ + ".");
+ }
+
+ return par1ItemStack;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public boolean hasBlessing(String bless) {
+ return (Minecraft.getMinecraft().thePlayer != null
+ && BlessingUtils.hasBlessing(Minecraft
+ .getMinecraft().thePlayer,
+ bless));
+ }
+
+ @Override
+ public boolean onItemUse(ItemStack par1ItemStack,
+ EntityPlayer par2EntityPlayer, World par3World,
+ int par4, int par5, int par6, int par7, float par8,
+ float par9, float par10) {
+ return false;
+ }
+
+}