package li.cil.oc.api.network; import net.minecraft.world.World; /** * To be implemented by 'hosts' of components. * <p/> * This is what's passed to drivers as the host when creating an environment. * It is generally used to represent the components' location in the world. * <p/> * You will only need to implement this if you intend to host components, e.g. * by providing a custom computer case or such. In OpenComputers this interface * is usually implemented directly by the tile entities acting as the host, so * in most cases you should be able to cast this to <tt>TileEntity</tt> for * more options, if necessary. */ public interface EnvironmentHost { /** * The world the container lives in. */ World world(); /** * The container's X position in the world. * <p/> * For tile entities this is the <em>centered</em> position. For example, * if the tile entity is located at (0, 2, 3) this will be 0.5. */ double xPosition(); /** * The container's Y position in the world. * <p/> * For tile entities this is the <em>centered</em> position. For example, * if the tile entity is located at (0, 2, 3) this will be 2.5. */ double yPosition(); /** * The container's Z position in the world. * <p/> * For tile entities this is the <em>centered</em> position. For example, * if the tile entity is located at (0, 2, 3) this will be 3.5. */ double zPosition(); /** * Marks the container as "changed" so that it knows it has to be saved * again in the next world save. */ void markChanged(); }