nxminetilities.network.PacketHandler.java Source code

Java tutorial

Introduction

Here is the source code for nxminetilities.network.PacketHandler.java

Source

/**
 * This work is licensed under the Creative Commons
 * Attribution-ShareAlike 3.0 Unported License. To view a copy of this
 * license, visit http://creativecommons.org/licenses/by-sa/3.0/.
 */

package nxminetilities.network;

import java.util.logging.Logger;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet250CustomPayload;
import nxminetilities.network.MinetilitiesPacket.ProtocolException;

import com.google.common.io.ByteArrayDataInput;
import com.google.common.io.ByteStreams;

import cpw.mods.fml.common.network.IPacketHandler;
import cpw.mods.fml.common.network.Player;
import cpw.mods.fml.relauncher.Side;

public class PacketHandler implements IPacketHandler {

    @Override
    public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) {
        try {
            EntityPlayer entityPlayer = (EntityPlayer) player;
            ByteArrayDataInput in = ByteStreams.newDataInput(packet.data);
            int packetId = in.readUnsignedByte();
            MinetilitiesPacket minetilitiesPacket = MinetilitiesPacket.constructPacket(packetId);
            minetilitiesPacket.read(in);
            minetilitiesPacket.execute(entityPlayer, entityPlayer.worldObj.isRemote ? Side.CLIENT : Side.SERVER);
        } catch (ProtocolException e) {
            if (player instanceof EntityPlayerMP) {
                ((EntityPlayerMP) player).playerNetServerHandler.kickPlayerFromServer("Protocol Exception!");
                Logger.getLogger("nxMinetilities")
                        .warning("Player " + ((EntityPlayer) player).username + " caused a Protocol Exception!");
            }
        } catch (Exception e) {
            throw new RuntimeException("Unexpected exception during Packet construction!", e);
        }
    }
}