package openmods.sync; import com.google.common.collect.Maps; import cpw.mods.fml.common.network.FMLEmbeddedChannel; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.internal.FMLProxyPacket; import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import java.util.Collection; import java.util.EnumMap; import java.util.Map; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.Packet; import openmods.network.ExtendedOutboundHandler; import openmods.network.senders.ExtPacketSenderFactory; import openmods.network.senders.ITargetedPacketSender; public class SyncChannelHolder { public static final String CHANNEL_NAME = "OpenMods|M"; public static final SyncChannelHolder INSTANCE = new SyncChannelHolder(); private final Map<Side, ITargetedPacketSender<Collection<EntityPlayerMP>>> senders = Maps.newEnumMap(Side.class); private SyncChannelHolder() { final EnumMap<Side, FMLEmbeddedChannel> channels = NetworkRegistry.INSTANCE.newChannel(CHANNEL_NAME, new InboundSyncHandler()); for (Map.Entry<Side, FMLEmbeddedChannel> e : channels.entrySet()) { final FMLEmbeddedChannel channel = e.getValue(); ExtendedOutboundHandler.install(channel); senders.put(e.getKey(), ExtPacketSenderFactory.createMultiplePlayersSender(channel)); } } public static Packet createPacket(ByteBuf payload) { return new FMLProxyPacket(payload, CHANNEL_NAME); } public void sendPayloadToPlayers(ByteBuf payload, Collection<EntityPlayerMP> players) { FMLProxyPacket packet = new FMLProxyPacket(payload, CHANNEL_NAME); senders.get(Side.SERVER).sendMessage(packet, players); } public static void ensureLoaded() {} }