Unicopia/src/main/java/com/minelittlepony/unicopia/EntityConvertable.java

36 lines
970 B
Java
Raw Normal View History

package com.minelittlepony.unicopia;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
2022-12-19 19:50:15 +01:00
import net.minecraft.world.World;
/**
* Interface for things that can be owned by an entity.
* <p>
* Ownership is retained so long as the owner is still active. If the owner leaves or dies, the link is broken.
*
* @param <E> The type of object that owns us.
*/
2022-12-19 19:50:15 +01:00
public interface EntityConvertable<E extends Entity> 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);
}
2022-12-19 19:50:15 +01:00
@Override
default World asWorld() {
2023-06-03 13:40:54 +02:00
return asEntity().getWorld();
2022-12-19 19:50:15 +01:00
}
}