package com.minelittlepony.unicopia; import net.minecraft.entity.Entity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; /** * Interface for things that can be owned by an entity. *

* Ownership is retained so long as the owner is still active. If the owner leaves or dies, the link is broken. * * @param The type of object that owns us. */ public interface EntityConvertable extends WorldConvertable { E asEntity(); /** * Gets the center position where this caster is located. */ default BlockPos getOrigin() { return asEntity().getBlockPos(); } /** * Gets the center position where this caster is located. */ default Vec3d getOriginVector() { return asEntity().getPos().add(0, asEntity().getHeight() * 0.5F, 0); } @Override default World asWorld() { return asEntity().getWorld(); } }