package cn.annoreg.mc.network; import cn.annoreg.ARModContainer; import cn.annoreg.mc.SideHelper; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; public final class NetworkTerminal { private final String playerName; private NetworkTerminal(String playerName) { this.playerName = playerName; } public static NetworkTerminal create() { if (SideHelper.isClient()) { return new NetworkTerminal(SideHelper.getThePlayer().getCommandSenderName()); } return new NetworkTerminal(null); } public void send(SimpleNetworkWrapper wrapper, IMessage msg) { if (playerName == null) { //send to server if (!SideHelper.isClient()) { ARModContainer.log.warn("Can not send to server from server"); } wrapper.sendToServer(msg); } else { if (SideHelper.isClient()) { ARModContainer.log.warn("Can not send to client from client"); } wrapper.sendTo(msg, (EntityPlayerMP) SideHelper.getPlayerOnServer(playerName)); } } public NBTBase toNBT() { NBTTagCompound ret = new NBTTagCompound(); if (playerName != null) { ret.setString("player", playerName); } return ret; } public static NetworkTerminal fromNBT(NBTBase nbt) { NBTTagCompound comp = (NBTTagCompound) nbt; if (comp.hasKey("player")) { return new NetworkTerminal(comp.getString("player")); } return new NetworkTerminal(null); } }