Posted August 19, 201510 yr Good evening, ladies and gentlemen of minecraftforge.net! I've come to you today to ask you for one thing. Help. You see, I've been having troubles with my mod and I got a message from a certain UberAffe on minecraftforum.net to get help from here as he currently is unavailable to help me. What I want to do is to update a method in my armor class on the server side, and for that I need a packet. The packet has been made, but my trouble is to call it. The simple process here is that you press the letter 'I' and you'll turn invisible. The advanced one is that you press the letter 'I,' the KeyHandler sends a message to my packet, updates my method on the server side and I turn invisible. My problem here is to send a message. How do I call the UUID in a keyhandler method? My current code would work, but it is asking for a GameProfile, which I don't know where to get. If you need the code, my github code is here below: MainClass.class https://github.com/BlackHyp3r/GnC/blob/master/MainFile Armor.class https://github.com/BlackHyp3r/GnC/blob/master/NexiteTankArmor Message.class (w/ Handler.class) https://github.com/BlackHyp3r/GnC/blob/master/Message%2BHandler EventHandler.class https://github.com/BlackHyp3r/GnC/blob/master/EventListener Hope you'll be able to help! P.S. If you need to look at the original forum post, link is below http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/modification-development/2504527-armor-with-special-powers?page=2#c21
August 19, 201510 yr Author Well, I don't want to call the method at everyone wearing the certain set of armor, so I need to call it only at the guy who actually pressed 'I'.
August 19, 201510 yr Ah, didn't know about that. Guess that's what happens when an inexperienced person(myself) try's to help. I probably should have pointed him here from the start. Current Project: Armerger Planned mods: Light Drafter | Ore Swords Looking for help getting a mod off the ground? Coding | Textures
August 19, 201510 yr Author Well, I suppose I could've done that, but when an even less experienced programmer(me) comes for help, he doesn't understand the answers. Sorry Ben, could you evaluate so I understand?
August 20, 201510 yr You can just send a message(packet) from client to server. Then in your IMessageHandler, you can get the player instance from MessageContext. You can make the player invisible with the instance. I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP) II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.
August 20, 201510 yr For those who don't read the original post in the link, the confusion with trying to send the player uuid in the message comes from me. I wasn't aware that you could get the player that sent the message from the context. @BlackHyp3r you don't need to send the uuid in the message, in your onmessage override you can get the player from the MessageContext variable. Current Project: Armerger Planned mods: Light Drafter | Ore Swords Looking for help getting a mod off the ground? Coding | Textures
August 20, 201510 yr If someone really needs to know the UUID in packet, you have to convert to a String (there are other ways to skin the cat too) and back. buffer.writeString(player.getUniqueID.toString()) and then UUID.fromString(buffer.getString()) - Code is probably not exactly right, but it is close enough you should be able to figure it out. Long time Bukkit & Forge Programmer Happy to try and help
August 20, 201510 yr Also, you can simply send the player's current entityId instead of UUID, but as diesieben and others have said, you already have the player from the packet. The only reason you would even want to do something like that is if you needed a DIFFERENT player in the packet, e.g. player 1 is interacting with player 2, and you need player 2 (in addition to player 1, which you will have by default) when sending the packet to player 1. http://i.imgur.com/NdrFdld.png[/img]
August 21, 201510 yr Author Sorry I haven't responded on this post for the past 2 days, school started again (yay ) Anyways, how do I tell the onMessage method that this message will recieve information about a player? Should I follow what delpi said or is that not necessary for what I'm doing?
August 21, 201510 yr Author Alright, let me see... I might just be stupid here, but it seems as if 4/5 responses on this thread is about recieving the player from the message. In the EventHandler, I'm sending a message with said player. But how would I do that, and/or is that even necessary? If not, then how do I do this?
August 21, 201510 yr Author The player that presses button 'I.' If I press 'I,' I'm the one who should turn invisible, not everyone or no one on a server.
August 21, 201510 yr Author And I'm immediatly back for more knowledge! If you couldn't tell, I'm pretty new to packets, so how do I check what message got recieved? If I send a message saying "player invisible" then how do the MessageHandler check for that specific method?
August 21, 201510 yr just do a check on the message string(mymessage.text if you set it up like the tutorial) inside your onMessage method: if(mymessage.text.equals("player invis")) dostuff(); Current Project: Armerger Planned mods: Light Drafter | Ore Swords Looking for help getting a mod off the ground? Coding | Textures
August 21, 201510 yr Don't send a text for a simple action... Use an int with defined constants. Even better you may not need to send anything in the payload at all. If the message is always meant to trigger a single action, just receiving the message should be enough for server. In such a case, the fromBytes() and toBytes() methods can be empty. Just need to put the code in the Handler part. Check out my tutorials here: http://jabelarminecraft.blogspot.com/
August 21, 201510 yr Author Following all of your directions it should work now... if it wasn't for the game crashing. Anyone who understands it? [21:59:16] [Client thread/INFO] [sTDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:663]: ---- Minecraft Crash Report ---- // Uh... Did I do that? Time: 2015-08-21 21:59 Description: Initializing game java.lang.RuntimeException: java.lang.InstantiationException: minenemo.gearsandclouds.packet.GnCPacket$GnCPacketHandler at com.google.common.base.Throwables.propagate(Throwables.java:160) at net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper.instantiate(SimpleNetworkWrapper.java:116) at net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper.registerMessage(SimpleNetworkWrapper.java:106) at minenemo.gearsandclouds.GearsAndClouds.Init(GearsAndClouds.java:66) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:537) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) at com.google.common.eventbus.EventBus.post(EventBus.java:275) at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:190) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) at com.google.common.eventbus.EventBus.post(EventBus.java:275) at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:119) at net.minecraftforge.fml.common.Loader.initializeMods(Loader.java:731) at net.minecraftforge.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:315) at net.minecraft.client.Minecraft.startGame(Minecraft.java:528) at net.minecraft.client.Minecraft.run(Minecraft.java:356) at net.minecraft.client.main.Main.main(Main.java:117) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) at GradleStart.main(Unknown Source) Caused by: java.lang.InstantiationException: minenemo.gearsandclouds.packet.GnCPacket$GnCPacketHandler at java.lang.Class.newInstance(Class.java:418) at net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper.instantiate(SimpleNetworkWrapper.java:113) ... 41 more Caused by: java.lang.NoSuchMethodException: minenemo.gearsandclouds.packet.GnCPacket$GnCPacketHandler.<init>() at java.lang.Class.getConstructor0(Class.java:2971) at java.lang.Class.newInstance(Class.java:403) ... 42 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at com.google.common.base.Throwables.propagate(Throwables.java:160) at net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper.instantiate(SimpleNetworkWrapper.java:116) at net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper.registerMessage(SimpleNetworkWrapper.java:106) at minenemo.gearsandclouds.GearsAndClouds.Init(GearsAndClouds.java:66) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:537) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) at com.google.common.eventbus.EventBus.post(EventBus.java:275) at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:190) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) at com.google.common.eventbus.EventBus.post(EventBus.java:275) at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:119) at net.minecraftforge.fml.common.Loader.initializeMods(Loader.java:731) at net.minecraftforge.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:315) at net.minecraft.client.Minecraft.startGame(Minecraft.java:528) -- Initialization -- Details: Stacktrace: at net.minecraft.client.Minecraft.run(Minecraft.java:356) at net.minecraft.client.main.Main.main(Main.java:117) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) at GradleStart.main(Unknown Source) -- System Details -- Details: Minecraft Version: 1.8 Operating System: Windows 8.1 (amd64) version 6.3 Java Version: 1.8.0_05, Oracle Corporation Java VM Version: Java HotSpot 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 648797256 bytes (618 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0 FML: MCP v9.10 FML v8.0.99.99 Minecraft Forge 11.14.3.1450 4 mods loaded, 4 mods active States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored UCHI mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) UCHI FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.8-11.14.3.1450.jar) UCHI Forge{11.14.3.1450} [Minecraft Forge] (forgeSrc-1.8-11.14.3.1450.jar) UCHE gnc{0.2} [Gears N' Clouds] (bin) Loaded coremods (and transformers): GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 355.60' Renderer: 'GeForce GTX 760/PCIe/SSE2' Launched Version: 1.8 LWJGL: 2.9.1 OpenGL: GeForce GTX 760/PCIe/SSE2 GL version 4.5.0 NVIDIA 355.60, NVIDIA Corporation GL Caps: Using GL 1.3 multitexturing. Using GL 1.3 texture combiners. Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. Shaders are available because OpenGL 2.1 is supported. VBOs are available because OpenGL 1.5 is supported. Using VBOs: No Is Modded: Definitely; Client brand changed to 'fml,forge' Type: Client (map_client.txt) Resource Packs: [] Current Language: English (US) Profiler Position: N/A (disabled) [21:59:16] [Client thread/INFO] [sTDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:663]: #@!@# Game crashed! Crash report saved to: #@!@# C:\Users\Nemo\Desktop\Programming\Gears N' Clouds 1.8\eclipse\.\crash-reports\crash-2015-08-21_21.59.16-client.txt AL lib: (EE) alc_cleanup: 1 device not closed Java HotSpot 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
August 21, 201510 yr Seems like you are trying use "new" on something that you aren't supposed to. Current Project: Armerger Planned mods: Light Drafter | Ore Swords Looking for help getting a mod off the ground? Coding | Textures
August 22, 201510 yr Author I've localized the problem... I think... When sneding the message I write the line like this: GearsAndClouds.network.sendToServer(new GnCPacket("player invisible")); I think they mean that new. How do I work around that?
August 22, 201510 yr I've localized the problem... I think... When sneding the message I write the line like this: GearsAndClouds.network.sendToServer(new GnCPacket("player invisible")); I think they mean that new. How do I work around that? No, that's not it. You have to make a new instance of the message class to send it, and the error message specifically said it crashed trying to create a new instance of GnCPacketHandler, which the above is not. Show your entire GnCPacket class, including the inner GnCPacketHandler class. http://i.imgur.com/NdrFdld.png[/img]
August 22, 201510 yr Author Updated the code on GitHub: https://github.com/BlackHyp3r/GnC/blob/master/Message+Handler
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.