package li.cil.oc.api.network;
import net.minecraft.world.World;
/**
* Interface for wireless endpoints that can be registered with the internal
* wireless network registry.
* <p/>
* These can be added to the wireless network via the <tt>Network</tt> API, to
* allow them to receive packets like wireless network cards and access points
* do (and handle or forward them as they see fit).
* <p/>
* If the position of the endpoint can change, it must be updated manually via
* {@link li.cil.oc.api.Network#updateWirelessNetwork(WirelessEndpoint)}.
*/
public interface WirelessEndpoint {
/**
* The X coordinate of the endpoint in the world, in block coordinates.
*/
int x();
/**
* The Y coordinate of the endpoint in the world, in block coordinates.
*/
int y();
/**
* The Z coordinate of the endpoint in the world, in block coordinates.
*/
int z();
/**
* The world this endpoint lives in.
*/
World world();
/**
* Makes the endpoint receive a single packet.
*
* @param packet the packet to receive.
* @param sender the endpoint that sent the message. This is not
* necessarily the original sender of the packet, just
* the last point it went through, such as an access
* point, for example.
*/
void receivePacket(Packet packet, WirelessEndpoint sender);
}