Аномалия...

Код:
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.network.ByteBufUtils;
import cpw.mods.fml.common.network.FMLEventChannel;
import cpw.mods.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent;
import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.common.network.internal.FMLProxyPacket;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetHandlerPlayServer;

public class NetworkManager {

    private final FMLEventChannel channel;
    private final String channelName;
    private final IPacketHandler packetHandler;

    public NetworkManager(String name, IPacketHandler pktHandler) {
        channelName = name;
        channel = NetworkRegistry.INSTANCE.newEventDrivenChannel(channelName);
        channel.register(this);
        packetHandler = pktHandler;
    }

    public static NetworkManager registerPacketHandler(String name, IPacketHandler packetHandler) {
        return new NetworkManager(name, packetHandler);
    }

    @SubscribeEvent
    public void onServerPacket(ServerCustomPacketEvent e) {
        EntityPlayerMP player = ((NetHandlerPlayServer) e.handler).playerEntity;
        ByteBuf buf = e.packet.payload();
        packetHandler.handleServerSide(buf, player.worldObj, player);
    }

    @SubscribeEvent
    public void onClientPacket(ClientCustomPacketEvent event) {
        EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
        ByteBuf buf = event.packet.payload();
        packetHandler.handleClientSide(buf, player.worldObj, player);
    }

    public void sendToServer(FMLProxyPacket packet) {
        channel.sendToServer(packet);
    }

    public void sendToClients(FMLProxyPacket packet) {
        channel.sendToAll(packet);
    }

    public void sendToPlayer(FMLProxyPacket packet, EntityPlayerMP player) {
        channel.sendTo(packet, player);
    }

    public void sendToArea(FMLProxyPacket packet, double x, double y, double z, double range, int dim) {
        channel.sendToAllAround(packet, new TargetPoint(dim, x, y, z, range));
    }

    public void sendToDimension(FMLProxyPacket packet, int id) {
        channel.sendToDimension(packet, id);
    }

    public FMLProxyPacket createPacket(Object... data) {
        return createPacket(Unpooled.buffer(32), data);
    }

    public FMLProxyPacket createPacket(ByteBuf buf, Object... data) {
        for (Object obj : data) {
            if (obj instanceof Byte) {
                buf.writeByte((Byte) obj);
            }
            if (obj instanceof Short) {
                buf.writeShort((Short) obj);
            }
            if (obj instanceof Integer) {
                buf.writeInt((Integer) obj);
            }
            if (obj instanceof Float) {
                buf.writeFloat((Float) obj);
            }
            if (obj instanceof Double) {
                buf.writeDouble((Double) obj);
            }
            if (obj instanceof Long) {
                buf.writeLong((Long) obj);
            }
            if (obj instanceof Character) {
                buf.writeChar((Character) obj);
            }
            if (obj instanceof String) {
                ByteBufUtils.writeUTF8String(buf, (String) obj);
            }
            if (obj instanceof ItemStack) {
                ByteBufUtils.writeItemStack(buf, (ItemStack) obj);
            }
            if (obj instanceof NBTTagCompound) {
                ByteBufUtils.writeTag(buf, (NBTTagCompound) obj);
            }
        }
        return new FMLProxyPacket(buf, channelName);
    }
 
Dovakin написал(а):
Код:
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.network.ByteBufUtils;
import cpw.mods.fml.common.network.FMLEventChannel;
import cpw.mods.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent;
import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.common.network.internal.FMLProxyPacket;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetHandlerPlayServer;

public class NetworkManager {

    private final FMLEventChannel channel;
    private final String channelName;
    private final IPacketHandler packetHandler;

    public NetworkManager(String name, IPacketHandler pktHandler) {
        channelName = name;
        channel = NetworkRegistry.INSTANCE.newEventDrivenChannel(channelName);
        channel.register(this);
        packetHandler = pktHandler;
    }

    public static NetworkManager registerPacketHandler(String name, IPacketHandler packetHandler) {
        return new NetworkManager(name, packetHandler);
    }

    @SubscribeEvent
    public void onServerPacket(ServerCustomPacketEvent e) {
        EntityPlayerMP player = ((NetHandlerPlayServer) e.handler).playerEntity;
        ByteBuf buf = e.packet.payload();
        packetHandler.handleServerSide(buf, player.worldObj, player);
    }

    @SubscribeEvent
    public void onClientPacket(ClientCustomPacketEvent event) {
        EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
        ByteBuf buf = event.packet.payload();
        packetHandler.handleClientSide(buf, player.worldObj, player);
    }

    public void sendToServer(FMLProxyPacket packet) {
        channel.sendToServer(packet);
    }

    public void sendToClients(FMLProxyPacket packet) {
        channel.sendToAll(packet);
    }

    public void sendToPlayer(FMLProxyPacket packet, EntityPlayerMP player) {
        channel.sendTo(packet, player);
    }

    public void sendToArea(FMLProxyPacket packet, double x, double y, double z, double range, int dim) {
        channel.sendToAllAround(packet, new TargetPoint(dim, x, y, z, range));
    }

    public void sendToDimension(FMLProxyPacket packet, int id) {
        channel.sendToDimension(packet, id);
    }

    public FMLProxyPacket createPacket(Object... data) {
        return createPacket(Unpooled.buffer(32), data);
    }

    public FMLProxyPacket createPacket(ByteBuf buf, Object... data) {
        for (Object obj : data) {
            if (obj instanceof Byte) {
                buf.writeByte((Byte) obj);
            }
            if (obj instanceof Short) {
                buf.writeShort((Short) obj);
            }
            if (obj instanceof Integer) {
                buf.writeInt((Integer) obj);
            }
            if (obj instanceof Float) {
                buf.writeFloat((Float) obj);
            }
            if (obj instanceof Double) {
                buf.writeDouble((Double) obj);
            }
            if (obj instanceof Long) {
                buf.writeLong((Long) obj);
            }
            if (obj instanceof Character) {
                buf.writeChar((Character) obj);
            }
            if (obj instanceof String) {
                ByteBufUtils.writeUTF8String(buf, (String) obj);
            }
            if (obj instanceof ItemStack) {
                ByteBufUtils.writeItemStack(buf, (ItemStack) obj);
            }
            if (obj instanceof NBTTagCompound) {
                ByteBufUtils.writeTag(buf, (NBTTagCompound) obj);
            }
        }
        return new FMLProxyPacket(buf, channelName);
    }
Нах?
 
svk написал(а):
GloomyFolken написал(а):
Большинство первые несколько часов пытаются решить свою проблему сами, и только потом идут на форумы)
Не знаю поможешь-ли ты, но мне агровайн систему пакетов дал, а она крашит...
Вот это в CommonProxy прописал:
Код:
    public static final NetworkManager packetSender = NetworkManager.registerPacketHandler("industrialGun", new PacketHandler());
Поделись пакетами, с разрешения автора, разумеется)
 
Спасибо)
 
на яндекс-диск залей и ссылку в лс или сюда)
 
Сюда кину, но хз когда буду за компом, наверное через дня 2-3
 
Назад
Сверху