NaturesAura/src/main/java/de/ellpeck/naturesaura/items/ItemBirthSpirit.java

39 lines
1.5 KiB
Java
Raw Normal View History

package de.ellpeck.naturesaura.items;
import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk;
2021-12-15 16:24:53 +01:00
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.item.ItemStack;
2024-02-03 14:56:07 +01:00
import net.neoforged.neoforge.common.NeoForge;
import net.neoforged.neoforge.event.entity.living.BabyEntitySpawnEvent;
import net.neoforged.bus.api.SubscribeEvent;
2020-01-26 01:41:49 +01:00
public class ItemBirthSpirit extends ItemGlowing {
2021-12-15 16:24:53 +01:00
2020-01-26 01:41:49 +01:00
public ItemBirthSpirit() {
super("birth_spirit");
2024-02-03 14:56:07 +01:00
NeoForge.EVENT_BUS.register(new EventHandler());
}
private static class EventHandler {
2021-12-15 16:24:53 +01:00
@SubscribeEvent
public void onBabyBorn(BabyEntitySpawnEvent event) {
LivingEntity parent = event.getParentA();
2023-07-08 12:32:27 +02:00
if (!parent.level().isClientSide && event.getCausedByPlayer() != null) {
2021-12-15 16:30:22 +01:00
var pos = parent.blockPosition();
2023-07-08 12:32:27 +02:00
var aura = IAuraChunk.getAuraInArea(parent.level(), pos, 30);
if (aura < 1200000)
return;
2023-07-08 12:32:27 +02:00
var amount = parent.level().random.nextInt(3) + 1;
var item = new ItemEntity(parent.level(), parent.getX(), parent.getY(), parent.getZ(), new ItemStack(ModItems.BIRTH_SPIRIT, amount));
parent.level().addFreshEntity(item);
2023-07-08 12:32:27 +02:00
var spot = IAuraChunk.getHighestSpot(parent.level(), pos, 30, pos);
IAuraChunk.getAuraChunk(parent.level(), spot).drainAura(spot, 800 * amount);
}
}
}
}