- 1,159
- 38
- 544
Добрый день. Пишу GUI, попутно изучая пакеты в Minecraft.
Проблема: В игре, при нажатии "B", происходит дисконнект. Мне кажется, что проблема связана с каким-либо недочетом к коде класса PacketOpenRSStatsInventory.
KeyHandler
PacketHandler:
PacketOpenRSStatsInventory:
З.Ы. Буду рад любым советам и исправлениям.
Проблема: В игре, при нажатии "B", происходит дисконнект. Мне кажется, что проблема связана с каким-либо недочетом к коде класса PacketOpenRSStatsInventory.
KeyHandler
Код:
package rsstats.common.event;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent.Phase;
import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.settings.KeyBinding;
import org.lwjgl.input.Keyboard;
import rsstats.common.network.PacketHandler;
import rsstats.common.network.PacketOpenRSStatsInventory;
public class KeyHandler {
public KeyBinding key = new KeyBinding("keybind.rsstatsinventory",
Keyboard.KEY_B, "key.categories.inventory");
public KeyHandler() {
ClientRegistry.registerKeyBinding(key);
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void playerTick(PlayerTickEvent event) {
if (event.side == Side.SERVER) return;
if (event.phase == Phase.START ) {
if (key.isPressed() && FMLClientHandler.instance().getClient().inGameHasFocus) {
PacketHandler.INSTANCE.sendToServer(new PacketOpenRSStatsInventory(event.player));
}
}
}
}
PacketHandler:
Код:
package rsstats.common.network;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
import cpw.mods.fml.relauncher.Side;
import rsstats.common.RSStats;
public class PacketHandler
{
public static final SimpleNetworkWrapper INSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel(RSStats.MODID.toLowerCase());
public static void init()
{
INSTANCE.registerMessage(PacketOpenRSStatsInventory.class, PacketOpenRSStatsInventory.class, 0, Side.SERVER);
}
}
PacketOpenRSStatsInventory:
Код:
package rsstats.common.network;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
import rsstats.common.RSStats;
public class PacketOpenRSStatsInventory implements IMessage, IMessageHandler<PacketOpenRSStatsInventory, IMessage> {
public PacketOpenRSStatsInventory() {}
public PacketOpenRSStatsInventory(EntityPlayer player) {}
@Override
public void toBytes(ByteBuf buffer) {}
@Override
public void fromBytes(ByteBuf buffer) {}
@Override
public IMessage onMessage(PacketOpenRSStatsInventory message, MessageContext ctx) {
ctx.getServerHandler().playerEntity.openGui(RSStats.instance, RSStats.GUI, ctx.getServerHandler().playerEntity.worldObj, (int)ctx.getServerHandler().playerEntity.posX, (int)ctx.getServerHandler().playerEntity.posY, (int)ctx.getServerHandler().playerEntity.posZ);
//ctx.getServerHandler().playerEntity.ope
return null;
}
}
З.Ы. Буду рад любым советам и исправлениям.