Jump to content

Get EntityPlayer(MP) in KeyInputEvent


yohannlog

Recommended Posts

Hello everyone,

 

I have some problems, including one in particular. I created an event with KeyInputEvent class but, the problem, I created a GUI and to open him, I push a keyboard key but I need a player argument  and this event do not give a player argument.

 

So, I would like to ask a question: How can I have access to EntityPlayer or EntityPlayerMP (I prefer) with this event ?

 

PS: If you want to see my classes, say it to me.

 

Thank you.

 

Yohann

Link to comment
Share on other sites

I don't think you understand how events work.

http://mcforge.readthedocs.io/en/latest/events/intro/

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

I know how events works:)

 

But...I fix it thre problem and now I have a crash when I open the GUI;

 

Spoiler

[22:14:10] [Client thread/ERROR] [FML]: FMLIndexedMessageCodec exception caught
io.netty.handler.codec.DecoderException: java.lang.InstantiationException: fr.yohannlog.arkcraft.common.network.packets.SurvivalInventoryPacket
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:?]
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?]
    at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
    at net.minecraft.client.multiplayer.PlayerControllerMP.updateController(PlayerControllerMP.java:317) [PlayerControllerMP.class:?]
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1693) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:962) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_171]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_171]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_171]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
    at GradleStart.main(Unknown Source) [start/:?]
Caused by: java.lang.InstantiationException: fr.yohannlog.arkcraft.common.network.packets.SurvivalInventoryPacket
    at java.lang.Class.newInstance(Class.java:427) ~[?:1.8.0_171]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:75) ~[FMLIndexedMessageToMessageCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?]
    ... 20 more
Caused by: java.lang.NoSuchMethodException: fr.yohannlog.arkcraft.common.network.packets.SurvivalInventoryPacket.<init>()
    at java.lang.Class.getConstructor0(Class.java:3082) ~[?:1.8.0_171]
    at java.lang.Class.newInstance(Class.java:412) ~[?:1.8.0_171]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:75) ~[FMLIndexedMessageToMessageCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?]
    ... 20 more
[22:14:10] [Client thread/ERROR] [FML]: SimpleChannelHandlerWrapper exception
io.netty.handler.codec.DecoderException: java.lang.InstantiationException: fr.yohannlog.arkcraft.common.network.packets.SurvivalInventoryPacket
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:?]
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?]
    at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
    at net.minecraft.client.multiplayer.PlayerControllerMP.updateController(PlayerControllerMP.java:317) [PlayerControllerMP.class:?]
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1693) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:962) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_171]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_171]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_171]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
    at GradleStart.main(Unknown Source) [start/:?]
Caused by: java.lang.InstantiationException: fr.yohannlog.arkcraft.common.network.packets.SurvivalInventoryPacket
    at java.lang.Class.newInstance(Class.java:427) ~[?:1.8.0_171]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:75) ~[FMLIndexedMessageToMessageCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?]
    ... 20 more
Caused by: java.lang.NoSuchMethodException: fr.yohannlog.arkcraft.common.network.packets.SurvivalInventoryPacket.<init>()
    at java.lang.Class.getConstructor0(Class.java:3082) ~[?:1.8.0_171]
    at java.lang.Class.newInstance(Class.java:412) ~[?:1.8.0_171]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:75) ~[FMLIndexedMessageToMessageCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?]
    ... 20 more
[22:14:10] [Client thread/ERROR] [FML]: There was a critical exception handling a packet on channel arkcraft
io.netty.handler.codec.DecoderException: java.lang.InstantiationException: fr.yohannlog.arkcraft.common.network.packets.SurvivalInventoryPacket
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:?]
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) ~[DefaultChannelPipeline.class:?]
    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:?]
    at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
    at net.minecraft.client.multiplayer.PlayerControllerMP.updateController(PlayerControllerMP.java:317) [PlayerControllerMP.class:?]
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1693) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:962) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_171]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_171]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_171]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
    at GradleStart.main(Unknown Source) [start/:?]
Caused by: java.lang.InstantiationException: fr.yohannlog.arkcraft.common.network.packets.SurvivalInventoryPacket
    at java.lang.Class.newInstance(Class.java:427) ~[?:1.8.0_171]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:75) ~[FMLIndexedMessageToMessageCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?]
    ... 20 more
Caused by: java.lang.NoSuchMethodException: fr.yohannlog.arkcraft.common.network.packets.SurvivalInventoryPacket.<init>()
    at java.lang.Class.getConstructor0(Class.java:3082) ~[?:1.8.0_171]
    at java.lang.Class.newInstance(Class.java:412) ~[?:1.8.0_171]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:75) ~[FMLIndexedMessageToMessageCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?]
 

 

After a few minutes of research, I think is a problem with the network system and for the NoSuchMethodException.is the same problem.

 

Class SurvivalInventory Packet

public class SurvivalInventoryPacket implements IMessage
{

    protected byte packetType;


    public static final byte OPEN_SERVER_PLAYER_INVENTORY = 2;

    public SurvivalInventoryPacket(EntityPlayer player, byte packetType) {
        this.packetType = packetType;
//TODO TESTER, SI FONCTIONNE PAS ENVOYEZ INFO JOUEUR
    }

    @Override
    public void fromBytes(ByteBuf buf) {
        this.packetType = buf.readByte();
    }

    @Override
    public void toBytes(ByteBuf buf) {
        buf.writeByte(packetType);
    }

    public static class Handler implements IMessageHandler<SurvivalInventoryPacket, IMessage> {
        @Override
        public IMessage onMessage(SurvivalInventoryPacket message, MessageContext ctx) {
            switch (message.packetType) {
                case OPEN_SERVER_PLAYER_INVENTORY: //MENU PLAYER INVENTORY
                    EntityPlayerMP serverPlayer = ctx.getServerHandler().playerEntity;
                    serverPlayer.openGui(ArkCraft.getInstance(), message.packetType, serverPlayer.worldObj, (int)serverPlayer.posX, (int)serverPlayer.posY, (int)serverPlayer.posZ);
            }
            return null;
        }
    }

    public static EntityPlayer getPlayerOnServerFromUUID(UUID parUUID)
    {
        if (parUUID == null)
        {
            return null;
        }
        List<EntityPlayerMP> allPlayers = MinecraftServer.getServer().getConfigurationManager().playerEntityList;
        for (EntityPlayerMP player : allPlayers)
        {
            if (player.getUniqueID().equals(parUUID))
            {
                return player;
            }
        }
        return null;
    }
}

 

NetworkHandler class:

 

public class NetworkHandler
{
    public static SimpleNetworkWrapper networkWrapper;
    private int register = -1;

    public NetworkHandler() {
        networkWrapper = NetworkRegistry.INSTANCE.newSimpleChannel("arkcraft");
        registerPacket(PacketUpdateClient.class, PacketUpdateClient.Handler.class, Side.CLIENT); //NOT IMPORTANT TO SHOW HIM
        registerPacket(SurvivalInventoryPacket.class, SurvivalInventoryPacket.Handler.class, Side.SERVER);

    }

    private void registerPacket(Class<? extends IMessage> c1, Class c2, Side side) {
        register++;
        networkWrapper.registerMessage(c2, c1, register, side);
    }
}

 

Events Class:

public class Events
{

    @SubscribeEvent
    public void playerTick(TickEvent.PlayerTickEvent event) {
        if (event.side == Side.SERVER) {
            ArkCraft.proxy.serverTick(event.player);
        } else if (event.side == Side.CLIENT) {
            ArkCraft.proxy.clientTick(event.player);
        }
    }

    @SubscribeEvent
    public void onKeyInput(InputEvent.KeyInputEvent event)  //HERE
    {
        if (ArkCraft.getInstance().getOpenInventory().isPressed())
        {
            if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) {
                NetworkHandler.networkWrapper.sendToServer(new SurvivalInventoryPacket(Minecraft.getMinecraft().thePlayer, (byte) 1));
            } else {
                NetworkHandler.networkWrapper.sendTo(new SurvivalInventoryPacket(Minecraft.getMinecraft().thePlayer, (byte) 1), (EntityPlayerMP) (PlayerContainer.getPlayer(Minecraft.getMinecraft().thePlayer).player));

            }
        }
    }

    @SubscribeEvent
    public void onLogin(PlayerEvent.PlayerLoggedInEvent event) {
        if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) {
            PlayerContainer.addPlayer(event.player);
        }
    }

    @SubscribeEvent
    public void onLogout(PlayerEvent.PlayerLoggedOutEvent event) {
        PlayerContainer.ALL_PLAYERS.remove(event.player.getDisplayName());
    }

    @SubscribeEvent
    public void playerCloned(net.minecraftforge.event.entity.player.PlayerEvent.Clone event) {
        if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) {
            if (event.wasDeath) {
                PlayerContainer.respawnPlayer(event.entityPlayer);
            }
        }
    }
}

 

MainClass

@Mod(modid = ArkCraft.MODID, version = ArkCraft.VERSION)
public class ArkCraft
{
    public static final String MODID = "mineark";
    public static final String VERSION = "1.0";

    public static int modGuiIndex = 0;

    public static final int GUI_PLAYER_INVENTORY = modGuiIndex++;

    public static Events events = new Events();

    private static ArkCraft instance;

    public KeyBinding openInventory;


    @SidedProxy(clientSide = "fr.yohannlog.arkcraft.client.ClientProxy", serverSide = "fr.yohannlog.arkcraft.common.ServerProxy")
    public static CommonProxy proxy;

    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        instance = this;
        MinecraftForge.EVENT_BUS.register(events);
        FMLCommonHandler.instance().bus().register(events);
        new NetworkHandler();
        NetworkRegistry.INSTANCE.registerGuiHandler(this, new CommonProxy());
        if (event.getSide() == Side.CLIENT) {
            enableGuiStaff();
            FMLCommonHandler.instance().bus().register(proxy);
            FMLCommonHandler.instance().bus().register(new OverlayDelete());
            FMLCommonHandler.instance().bus().register(this);
            FMLCommonHandler.instance().bus().register(new ExperienceDrop());
        }

        ModItems.init();
        ModItems.register();
        proxy.preInit();
    }
    
    @EventHandler
    public void init(FMLInitializationEvent event)
    {

        openInventory = new KeyBinding("key.inventory.gui", Keyboard.KEY_G, "key.categories.arkcraft");
        ClientRegistry.registerKeyBinding(openInventory);


    }
    @Mod.EventHandler
    public void postInit(FMLPostInitializationEvent event)
    {
    }

    public static ArkCraft getInstance() {
        return instance;
    }

    @EventHandler
    public void onServerStart(FMLServerStartingEvent event) {
        event.registerServerCommand(new TestsCommand());
    }

    @EventHandler
    public void serverClosed(FMLServerStoppedEvent event) {
        if(FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
            PlayerContainer.ALL_PLAYERS.clear();
        }
    }

    @SideOnly(Side.CLIENT)
    public void enableGuiStaff() {
        if (!Minecraft.getMinecraft().gameSettings.showDebugInfo) {
            MinecraftForge.EVENT_BUS.register(new IOverlay(Minecraft.getMinecraft()));

            MinecraftForge.EVENT_BUS.register(new FoodOverlay(Minecraft.getMinecraft()));
            MinecraftForge.EVENT_BUS.register(new LifeOverlay(Minecraft.getMinecraft()));
        }
    }


    public KeyBinding getOpenInventory() {
        return openInventory;
    }

}

 

 

@diesieben07 You post your message while I was writing this. I do not know if it will answer what you said.

 

Yohann

Link to comment
Share on other sites

  • Guest locked this topic
Guest
This topic is now closed to further replies.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.