From 90635394a398e808482a7d0f378b47bcb6bb8eba Mon Sep 17 00:00:00 2001 From: Sollace Date: Wed, 13 Mar 2019 22:54:59 +0200 Subject: [PATCH] Apples left n the ground for too long will eventually go bad --- .../unicopia/item/ItemApple.java | 38 +++++++++++++++++++ .../unicopia/item/ItemAppleMultiType.java | 6 +++ .../unicopia/item/ItemRottenApple.java | 6 +++ 3 files changed, 50 insertions(+) diff --git a/src/main/java/com/minelittlepony/unicopia/item/ItemApple.java b/src/main/java/com/minelittlepony/unicopia/item/ItemApple.java index fb434cca..829f6cdf 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/ItemApple.java +++ b/src/main/java/com/minelittlepony/unicopia/item/ItemApple.java @@ -14,9 +14,12 @@ import com.minelittlepony.util.collection.Weighted; import net.minecraft.block.BlockPlanks; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemFood; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.NonNullList; +import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; public class ItemApple extends ItemFood implements IEdible { @@ -67,6 +70,41 @@ public class ItemApple extends ItemFood implements IEdible { } } + @Override + public boolean onEntityItemUpdate(EntityItem item) { + + if (!item.isDead && item.ticksExisted > item.lifespan * 0.9) { + + if (!item.world.isRemote) { + item.setDead(); + + EntityItem neu = new EntityItem(item.world); + neu.copyLocationAndAnglesFrom(item); + neu.setItem(new ItemStack(UItems.rotten_apple)); + + item.world.spawnEntity(neu); + + EntityItem copy = new EntityItem(item.world); + copy.copyLocationAndAnglesFrom(item); + copy.setItem(item.getItem()); + copy.getItem().shrink(1); + + item.world.spawnEntity(copy); + } else { + float bob = MathHelper.sin(((float)item.getAge() + 1) / 10F + item.hoverStart) * 0.1F + 0.1F; + + for (int i = 0; i < 3; i++) { + item.world.spawnParticle(EnumParticleTypes.SPELL_MOB, item.posX, item.posY + bob, item.posZ, + item.world.rand.nextGaussian() - 0.5F, + item.world.rand.nextGaussian() - 0.5F, + item.world.rand.nextGaussian() - 0.5F); + } + } + } + + return false; + } + @Override public void getSubItems(CreativeTabs tab, NonNullList items) { if (this == UItems.red_apple && isInCreativeTab(tab)) { diff --git a/src/main/java/com/minelittlepony/unicopia/item/ItemAppleMultiType.java b/src/main/java/com/minelittlepony/unicopia/item/ItemAppleMultiType.java index 354a35a6..d2442ac1 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/ItemAppleMultiType.java +++ b/src/main/java/com/minelittlepony/unicopia/item/ItemAppleMultiType.java @@ -3,6 +3,7 @@ package com.minelittlepony.unicopia.item; import com.minelittlepony.unicopia.forgebullshit.IMultiItem; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; @@ -60,6 +61,11 @@ public class ItemAppleMultiType extends ItemApple implements IMultiItem { return super.getMetadata(stack); } + @Override + public boolean onEntityItemUpdate(EntityItem item) { + return false; + } + @Override public String getTranslationKey(ItemStack stack) { if (getHasSubtypes()) { diff --git a/src/main/java/com/minelittlepony/unicopia/item/ItemRottenApple.java b/src/main/java/com/minelittlepony/unicopia/item/ItemRottenApple.java index 80a5f83e..9efa4296 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/ItemRottenApple.java +++ b/src/main/java/com/minelittlepony/unicopia/item/ItemRottenApple.java @@ -1,6 +1,7 @@ package com.minelittlepony.unicopia.item; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; @@ -15,6 +16,11 @@ public class ItemRottenApple extends ItemApple { return 150; } + @Override + public boolean onEntityItemUpdate(EntityItem item) { + return false; + } + @Override public void getSubItems(CreativeTabs tab, NonNullList items) { if (isInCreativeTab(tab)) {