Unicopia/src/main/java/com/minelittlepony/unicopia/item/AppleItem.java
2020-04-22 20:23:54 +02:00

76 lines
2.7 KiB
Java

package com.minelittlepony.unicopia.item;
import java.util.List;
import javax.annotation.Nullable;
import com.minelittlepony.unicopia.ducks.IItemEntity;
import com.minelittlepony.unicopia.entity.ItemEntityCapabilities;
import com.minelittlepony.unicopia.toxin.Toxic;
import com.minelittlepony.unicopia.toxin.Toxicity;
import net.minecraft.client.item.TooltipContext;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.ItemEntity;
import net.minecraft.item.FoodComponent;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.text.Text;
import net.minecraft.util.ActionResult;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World;
public class AppleItem extends Item implements Toxic, ItemEntityCapabilities.TickableItem {
public AppleItem(FoodComponent components) {
super(new Item.Settings()
.group(ItemGroup.FOOD)
.food(components));
}
@Override
public ActionResult onGroundTick(IItemEntity item) {
ItemEntity entity = item.get().getOwner();
if (!entity.removed && item.getAge() > item.getPickupDelay()) {
if (!entity.world.isClient) {
entity.remove();
ItemEntity neu = EntityType.ITEM.create(entity.world);
neu.copyPositionAndRotation(entity);
neu.setStack(new ItemStack(UItems.rotten_apple));
entity.world.spawnEntity(neu);
ItemEntity copy = EntityType.ITEM.create(entity.world);
copy.copyPositionAndRotation(entity);
copy.setStack(entity.getStack());
copy.getStack().decrement(1);
entity.world.spawnEntity(copy);
} else {
float bob = MathHelper.sin(((float)item.getAge() + 1) / 10F + entity.hoverHeight) * 0.1F + 0.1F;
for (int i = 0; i < 3; i++) {
entity.world.addParticle(ParticleTypes.AMBIENT_ENTITY_EFFECT, entity.getX(), entity.getY() + bob, entity.getZ(),
entity.world.random.nextGaussian() - 0.5F,
entity.world.random.nextGaussian() - 0.5F,
entity.world.random.nextGaussian() - 0.5F);
}
}
}
return ActionResult.PASS;
}
@Override
public void appendTooltip(ItemStack stack, @Nullable World worldIn, List<Text> tooltip, TooltipContext context) {
tooltip.add(getToxicity(stack).getTooltip());
}
@Override
public Toxicity getToxicity(ItemStack stack) {
return Toxicity.SAFE;
}
}