summaryrefslogtreecommitdiff
path: root/YWD/src/main/java/fyresmodjam/handlers/ChannelHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'YWD/src/main/java/fyresmodjam/handlers/ChannelHandler.java')
-rw-r--r--YWD/src/main/java/fyresmodjam/handlers/ChannelHandler.java72
1 files changed, 72 insertions, 0 deletions
diff --git a/YWD/src/main/java/fyresmodjam/handlers/ChannelHandler.java b/YWD/src/main/java/fyresmodjam/handlers/ChannelHandler.java
new file mode 100644
index 0000000..82a07c6
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/handlers/ChannelHandler.java
@@ -0,0 +1,72 @@
+package fyresmodjam.handlers;
+
+import cpw.mods.fml.common.FMLCommonHandler;
+import cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec;
+import cpw.mods.fml.common.network.NetworkRegistry;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import io.netty.buffer.ByteBuf;
+import io.netty.channel.ChannelHandlerContext;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.network.INetHandler;
+import net.minecraft.network.NetHandlerPlayServer;
+
+public class ChannelHandler extends FMLIndexedMessageToMessageCodec<IPacket> {
+
+ public ChannelHandler() {
+ addDiscriminator(0, BasicPacket.class);
+
+ }
+
+ @Override
+ public void encodeInto(ChannelHandlerContext ctx, IPacket packet, ByteBuf data) throws Exception {
+ packet.writeBytes(data);
+ }
+
+ @Override
+ public void decodeInto(ChannelHandlerContext ctx, ByteBuf data, IPacket packet) {
+ packet.readBytes(data);
+
+ if (packet instanceof BasicPacket) {
+ NewPacketHandler.packetTypes[((BasicPacket) packet).type].data = ((BasicPacket) packet).data;
+ }
+
+ EntityPlayer player = null;
+
+ switch (FMLCommonHandler.instance().getEffectiveSide()) {
+
+ case CLIENT:
+
+ player = getClientPlayer();
+
+ if (player != null) {
+ packet.executeClient(player);
+ packet.executeBoth(player);
+ }
+
+ break;
+
+ case SERVER:
+
+ INetHandler netHandler = ctx.channel().attr(NetworkRegistry.NET_HANDLER).get();
+ player = ((NetHandlerPlayServer) netHandler).playerEntity;
+
+ if (player != null) {
+ packet.executeServer(player);
+ packet.executeBoth(player);
+ }
+
+ break;
+
+ default:
+ break;
+
+ }
+ }
+
+ @SideOnly(Side.CLIENT)
+ public EntityPlayer getClientPlayer() {
+ return Minecraft.getMinecraft().thePlayer;
+ }
+} \ No newline at end of file