diff options
Diffstat (limited to 'src/main/java/kubatech/loaders/item/items')
4 files changed, 226 insertions, 143 deletions
diff --git a/src/main/java/kubatech/loaders/item/items/Tea.java b/src/main/java/kubatech/loaders/item/items/Tea.java index d9f39bc06f..d5c1066af4 100644 --- a/src/main/java/kubatech/loaders/item/items/Tea.java +++ b/src/main/java/kubatech/loaders/item/items/Tea.java @@ -19,116 +19,44 @@ package kubatech.loaders.item.items; -import java.util.LinkedList; import java.util.List; -import kubatech.api.utils.ModUtils; -import kubatech.loaders.ItemLoader; import kubatech.loaders.item.ItemProxy; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.EntityClientPlayerMP; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.EnumAction; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.stats.Achievement; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.StatCollector; import net.minecraft.world.World; -import net.minecraftforge.common.AchievementPage; public class Tea extends ItemProxy { - protected static TeaPage teapage; - protected static LinkedList<Achievement> achievements; - protected Achievement achievement; - private final String achievementname; + private final int heal; + private final float saturation; - public Tea(String unlocalizedName) { - super("teacollection." + unlocalizedName, "teacollection/" + unlocalizedName); - achievementname = "teacollection." + unlocalizedName; + public Tea(String unlocalizedName, int heal, float saturation) { + super("tea." + unlocalizedName, "tea/" + unlocalizedName); + this.heal = heal; + this.saturation = saturation; } - private static final int[][] achievement_poses = new int[][] { - {0, 0}, - {2, 0}, - {3, 1}, - {4, 2}, - {4, 4}, - {3, 5}, - {2, 6}, - {0, 6}, - {-1, 5}, - {-2, 4}, - {-2, 2}, - {-1, 1}, - {1, 3} - }; - @Override - public void ItemInit(int index) { - super.ItemInit(index); - if (teapage == null) { - teapage = new TeaPage(); - AchievementPage.registerAchievementPage(teapage); - achievements = teapage.getAchievementsOriginal(); - } - achievements.add( - achievement = new Achievement( - achievementname, - achievementname, - achievement_poses[index][0], - achievement_poses[index][1], - new ItemStack(ItemLoader.kubaitems, 1, index), - null) - .registerStat()); + public void addInformation(ItemStack stack, EntityPlayer entity, List<String> tooltipList, boolean showDebugInfo) { + tooltipList.add("Tea"); } @Override - public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p_77624_3_, boolean p_77624_4_) { - if (p_77624_1_.stackTagCompound != null - && p_77624_1_.stackTagCompound.hasKey("TeaOwner") - && !p_77624_1_ - .stackTagCompound - .getString("TeaOwner") - .equals(p_77624_2_.getUniqueID().toString())) { - p_77624_3_.add(EnumChatFormatting.GRAY + "" + EnumChatFormatting.BOLD + "" + EnumChatFormatting.ITALIC - + StatCollector.translateToLocal("item.notyours")); - return; - } - p_77624_3_.add(EnumChatFormatting.GRAY + StatCollector.translateToLocal("item.fromcollection")); - p_77624_3_.add(EnumChatFormatting.GRAY + "" + EnumChatFormatting.BOLD + "" + EnumChatFormatting.ITALIC + "" - + EnumChatFormatting.UNDERLINE + StatCollector.translateToLocal("item.teacollection")); - } - - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { + public EnumAction getItemUseAction(ItemStack stack) { return EnumAction.drink; } @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - if (p_77659_1_.stackTagCompound == null || !p_77659_1_.stackTagCompound.hasKey("TeaOwner")) return p_77659_1_; - if (!p_77659_1_ - .stackTagCompound - .getString("TeaOwner") - .equals(p_77659_3_.getUniqueID().toString())) return p_77659_1_; - p_77659_3_.setItemInUse(p_77659_1_, 32); - return p_77659_1_; + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer entity) { + entity.setItemInUse(stack, getMaxItemUseDuration()); + return stack; } @Override - public ItemStack onEaten(ItemStack stack, World p_77654_2_, EntityPlayer p_77654_3_) { - if (p_77654_2_.isRemote) return stack; - if (!(p_77654_3_ instanceof EntityPlayerMP)) return stack; - if (stack.stackTagCompound == null || !stack.stackTagCompound.hasKey("TeaOwner")) return stack; - if (!stack.stackTagCompound - .getString("TeaOwner") - .equals(p_77654_3_.getUniqueID().toString())) return stack; - p_77654_3_.addChatComponentMessage(new ChatComponentText( - EnumChatFormatting.GREEN + StatCollector.translateToLocal("item.teacollection.mmm"))); - p_77654_3_.triggerAchievement(achievement); + public ItemStack onEaten(ItemStack stack, World world, EntityPlayer entity) { + if (!entity.capabilities.isCreativeMode) --stack.stackSize; + entity.getFoodStats().addStats(heal, saturation); + world.playSoundAtEntity(entity, "random.burp", 0.5F, world.rand.nextFloat() * 0.1F + 0.9F); return stack; } @@ -136,58 +64,4 @@ public class Tea extends ItemProxy { public int getMaxItemUseDuration() { return 32; } - - @Override - public String getDisplayName(ItemStack stack) { - if (!ModUtils.isClientSided) return super.getDisplayName(stack); - if (stack.stackTagCompound == null - || (!stack.stackTagCompound.hasKey("TeaOwner") - || stack.stackTagCompound - .getString("TeaOwner") - .equals(Minecraft.getMinecraft() - .thePlayer - .getUniqueID() - .toString()))) return super.getDisplayName(stack); - return EnumChatFormatting.GOLD + "" + EnumChatFormatting.BOLD + "" + EnumChatFormatting.ITALIC + "???????"; - } - - @Override - public void onUpdate( - ItemStack p_77663_1_, World p_77663_2_, Entity p_77663_3_, int p_77663_4_, boolean p_77663_5_) { - if (p_77663_2_.isRemote) return; - if (!(p_77663_3_ instanceof EntityPlayerMP)) return; - NBTTagCompound tag = p_77663_1_.stackTagCompound; - if (tag == null) tag = p_77663_1_.stackTagCompound = new NBTTagCompound(); - if (tag.hasKey("display")) tag.removeTag("display"); - if (tag.hasKey("TeaOwner")) return; - tag.setString("TeaOwner", p_77663_3_.getPersistentID().toString()); - } - - private static class TeaPage extends AchievementPage { - - public TeaPage() { - super("Tea"); - } - - LinkedList<Achievement> unlockedAchievements = new LinkedList<>(); - - @Override - public List<Achievement> getAchievements() { - if (!ModUtils.isClientSided) return super.getAchievements(); - - if (new Throwable().getStackTrace()[1].getMethodName().equals("isAchievementInPages")) - return super.getAchievements(); // 5HEAD FIX - - EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; - unlockedAchievements.clear(); - for (Achievement achievement : achievements) - if (player.getStatFileWriter().hasAchievementUnlocked(achievement)) - unlockedAchievements.add(achievement); - return unlockedAchievements; - } - - private LinkedList<Achievement> getAchievementsOriginal() { - return (LinkedList<Achievement>) super.getAchievements(); - } - } } diff --git a/src/main/java/kubatech/loaders/item/items/TeaCollection.java b/src/main/java/kubatech/loaders/item/items/TeaCollection.java new file mode 100644 index 0000000000..15e8565d3d --- /dev/null +++ b/src/main/java/kubatech/loaders/item/items/TeaCollection.java @@ -0,0 +1,191 @@ +/* + * KubaTech - Gregtech Addon + * Copyright (C) 2022 kuba6000 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see <https://www.gnu.org/licenses/>. + * + */ + +package kubatech.loaders.item.items; + +import java.util.LinkedList; +import java.util.List; +import kubatech.api.utils.ModUtils; +import kubatech.loaders.ItemLoader; +import kubatech.loaders.item.ItemProxy; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.EnumAction; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.stats.Achievement; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import net.minecraftforge.common.AchievementPage; + +public class TeaCollection extends ItemProxy { + protected static TeaPage teapage; + protected static LinkedList<Achievement> achievements; + protected Achievement achievement; + private final String achievementname; + + public TeaCollection(String unlocalizedName) { + super("teacollection." + unlocalizedName, "tea/" + unlocalizedName); + achievementname = "teacollection." + unlocalizedName; + } + + private static final int[][] achievement_poses = new int[][] { + {0, 0}, + {2, 0}, + {3, 1}, + {4, 2}, + {4, 4}, + {3, 5}, + {2, 6}, + {0, 6}, + {-1, 5}, + {-2, 4}, + {-2, 2}, + {-1, 1}, + {1, 3} + }; + + @Override + public void ItemInit(int index) { + super.ItemInit(index); + if (teapage == null) { + teapage = new TeaPage(); + AchievementPage.registerAchievementPage(teapage); + achievements = teapage.getAchievementsOriginal(); + } + achievements.add( + achievement = new Achievement( + achievementname, + achievementname, + achievement_poses[index][0], + achievement_poses[index][1], + new ItemStack(ItemLoader.kubaitems, 1, index), + null) + .registerStat()); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer entity, List<String> tooltipList, boolean showDebugInfo) { + if (stack.stackTagCompound != null + && stack.stackTagCompound.hasKey("TeaOwner") + && !stack.stackTagCompound + .getString("TeaOwner") + .equals(entity.getUniqueID().toString())) { + tooltipList.add(EnumChatFormatting.GRAY + "" + EnumChatFormatting.BOLD + "" + EnumChatFormatting.ITALIC + + StatCollector.translateToLocal("kubaitem.notyours")); + return; + } + tooltipList.add(EnumChatFormatting.GRAY + StatCollector.translateToLocal("kubaitem.fromcollection")); + tooltipList.add(EnumChatFormatting.GRAY + "" + EnumChatFormatting.BOLD + "" + EnumChatFormatting.ITALIC + "" + + EnumChatFormatting.UNDERLINE + StatCollector.translateToLocal("kubaitem.teacollection")); + } + + @Override + public EnumAction getItemUseAction(ItemStack stack) { + return EnumAction.drink; + } + + @Override + public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { + if (p_77659_1_.stackTagCompound == null || !p_77659_1_.stackTagCompound.hasKey("TeaOwner")) return p_77659_1_; + if (!p_77659_1_ + .stackTagCompound + .getString("TeaOwner") + .equals(p_77659_3_.getUniqueID().toString())) return p_77659_1_; + p_77659_3_.setItemInUse(p_77659_1_, 32); + return p_77659_1_; + } + + @Override + public ItemStack onEaten(ItemStack stack, World world, EntityPlayer entity) { + if (world.isRemote) return stack; + if (!(entity instanceof EntityPlayerMP)) return stack; + if (stack.stackTagCompound == null || !stack.stackTagCompound.hasKey("TeaOwner")) return stack; + if (!stack.stackTagCompound + .getString("TeaOwner") + .equals(entity.getUniqueID().toString())) return stack; + entity.addChatComponentMessage(new ChatComponentText( + EnumChatFormatting.GREEN + StatCollector.translateToLocal("kubaitem.teacollection.mmm"))); + entity.triggerAchievement(achievement); + return stack; + } + + @Override + public int getMaxItemUseDuration() { + return 32; + } + + @Override + public String getDisplayName(ItemStack stack) { + if (!ModUtils.isClientSided) return super.getDisplayName(stack); + if (stack.stackTagCompound == null + || (!stack.stackTagCompound.hasKey("TeaOwner") + || stack.stackTagCompound + .getString("TeaOwner") + .equals(Minecraft.getMinecraft() + .thePlayer + .getUniqueID() + .toString()))) return super.getDisplayName(stack); + return EnumChatFormatting.GOLD + "" + EnumChatFormatting.BOLD + "" + EnumChatFormatting.ITALIC + "???????"; + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrentItem) { + if (world.isRemote) return; + if (!(entity instanceof EntityPlayerMP)) return; + NBTTagCompound tag = stack.stackTagCompound; + if (tag == null) tag = stack.stackTagCompound = new NBTTagCompound(); + if (tag.hasKey("display")) tag.removeTag("display"); + if (tag.hasKey("TeaOwner")) return; + tag.setString("TeaOwner", entity.getPersistentID().toString()); + } + + private static class TeaPage extends AchievementPage { + + public TeaPage() { + super("Tea"); + } + + LinkedList<Achievement> unlockedAchievements = new LinkedList<>(); + + @Override + public List<Achievement> getAchievements() { + if (!ModUtils.isClientSided) return super.getAchievements(); + + if (new Throwable().getStackTrace()[1].getMethodName().equals("isAchievementInPages")) + return super.getAchievements(); // 5HEAD FIX + + EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; + unlockedAchievements.clear(); + for (Achievement achievement : achievements) + if (player.getStatFileWriter().hasAchievementUnlocked(achievement)) + unlockedAchievements.add(achievement); + return unlockedAchievements; + } + + private LinkedList<Achievement> getAchievementsOriginal() { + return (LinkedList<Achievement>) super.getAchievements(); + } + } +} diff --git a/src/main/java/kubatech/loaders/item/items/TeaIngredient.java b/src/main/java/kubatech/loaders/item/items/TeaIngredient.java new file mode 100644 index 0000000000..8ba03c85fa --- /dev/null +++ b/src/main/java/kubatech/loaders/item/items/TeaIngredient.java @@ -0,0 +1,18 @@ +package kubatech.loaders.item.items; + +import java.util.List; +import kubatech.loaders.item.ItemProxy; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; + +public class TeaIngredient extends ItemProxy { + public TeaIngredient(String unlocalizedName) { + super("teaingredient." + unlocalizedName, "teaingredient/" + unlocalizedName); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer entity, List<String> tooltipList, boolean showDebugInfo) { + tooltipList.add(EnumChatFormatting.GRAY + "This is Tea ingredient"); + } +} diff --git a/src/main/java/kubatech/loaders/item/items/TeaUltimate.java b/src/main/java/kubatech/loaders/item/items/TeaUltimate.java index 879d3117ad..431feeb83f 100644 --- a/src/main/java/kubatech/loaders/item/items/TeaUltimate.java +++ b/src/main/java/kubatech/loaders/item/items/TeaUltimate.java @@ -26,7 +26,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; -public class TeaUltimate extends Tea { +public class TeaUltimate extends TeaCollection { public TeaUltimate() { super("ultimate_tea"); } |