Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
import io.netty.buffer.ByteBuf;
import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.world.World;
public interface IPacketHandler {
public void handleClientSide(ByteBuf buf, World world, EntityClientPlayerMP player);
public void handleServerSide(ByteBuf buf, World world, EntityPlayerMP player);
}
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);
}
}
NetworkManager nw=NetworkManager.registerPacketHandler("NAME",new Object implements IPacketHandler);
CommonProxy.packetSender.sendToClients(CommonProxy.packetSender.createPacket((byte)1));
CommonProxy.packetSender.sendToServer(CommonProxy.packetSender.createPacket((byte)0));