package com.vanhal.recallstones.networking;
import com.vanhal.recallstones.RecallStones;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fml.common.network.NetworkRegistry;
import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;
import net.minecraftforge.fml.relauncher.Side;
public class NetworkHandler {
public static final int NEARBY = 8;
public static final int MEDIUM = 16;
public static final int FAR = 64;
private NetworkHandler() {
}
private static final SimpleNetworkWrapper CHANNEL = NetworkRegistry.INSTANCE.newSimpleChannel("RecallStones");
private static int discriminationByte = 1;
public static <REQ extends IMessage> void registerMessageHandler(IMessageHandler<? super REQ, ? extends IMessage> messageHandler, Class<REQ> requestMessageType, Side side) {
CHANNEL.registerMessage(messageHandler, requestMessageType, discriminationByte++, side);
}
public static <REQ extends IMessage, REPLY extends IMessage> void registerMessageHandler(
Class<? extends IMessageHandler<REQ, REPLY>> messageHandler, Class<REQ> requestMessageType, Side side) {
CHANNEL.registerMessage(messageHandler, requestMessageType, discriminationByte++, side);
}
public static void sendToAllAroundNearby(IMessage message, TileEntity entity) {
CHANNEL.sendToAllAround(message, new TargetPoint(entity.getWorld().provider.getDimension(), entity.getPos().getX(), entity.getPos().getY(), entity.getPos().getZ(), NEARBY));
}
public static void sendToAllAroundNearby(IMessage message, EntityPlayer player) {
CHANNEL.sendToAllAround(message, new TargetPoint(player.dimension, player.posX, player.posY, player.posZ, NEARBY));
}
public static void sendToPlayer(IMessage message, EntityPlayerMP player) {
CHANNEL.sendTo(message, player);
}
public static void sendToServer(IMessage message) {
CHANNEL.sendToServer(message);
}
}