
Bugzoo
-
Posts
268 -
Joined
-
Last visited
Posts posted by Bugzoo
-
-
-
-
-
-
a) Why do you register your packet for being sent both ways? It should only go client -> server.
b) Why do you send and integer and a boolean when you never use them?
c) You need to use the serverside player when receiving the packet, you get it from the MessageContext.
d) Your packet has the potential of allowing players to infinitely create your Item over and over again. The server needs to check if it is ok for the client to send that packet, otherwise hacked clients could exploit it.
How do I get it from the MessageContext?
-
-
I dont know how to get IntelliJ IDEA working with forge.
-
Ok, this may potentially be the most nooby question you will ever see, and it might make you want to shoot yourself. Please dont. So, I want to give the player an item when I click a button, but this isn't working
Button:
public void actionPerformed(GuiButton guibutton){ if(guibutton.id == 24){ // Sending packet to server IMessage msg = new SimplePacket.SimpleMessage(500, true); PacketHandler.net.sendToServer(msg); } }
PacketHandler:
package com.bugzoo.FinancialMod; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; import cpw.mods.fml.relauncher.Side; public class PacketHandler { public static SimpleNetworkWrapper net; public static void initPackets() { net = NetworkRegistry.INSTANCE.newSimpleChannel("YourModId".toUpperCase()); registerMessage(SimplePacket.class, SimplePacket.SimpleMessage.class); } private static int nextPacketId = 0; private static void registerMessage(Class packet, Class message) { net.registerMessage(packet, message, nextPacketId, Side.CLIENT); net.registerMessage(packet, message, nextPacketId, Side.SERVER); nextPacketId++; } }
SimplePacket:
package com.bugzoo.FinancialMod; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import com.bugzoo.FinancialMod.SimplePacket.SimpleMessage; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; public class SimplePacket implements IMessageHandler<SimpleMessage, IMessage> { Minecraft mc; @Override public IMessage onMessage(SimpleMessage message, MessageContext ctx) { // just to make sure that the side is correct if (ctx.side.isClient()) { mc.thePlayer.inventory.addItemStackToInventory(new ItemStack(FinancialMod.Wallet)); int integer = message.simpleInt; boolean bool = message.simpleBool; } return message; } public static class SimpleMessage implements IMessage { private int simpleInt; private boolean simpleBool; // this constructor is required otherwise you'll get errors (used somewhere in fml through reflection) public SimpleMessage() {} public SimpleMessage(int simpleInt, boolean simpleBool) { this.simpleInt = simpleInt; this.simpleBool = simpleBool; } @Override public void fromBytes(ByteBuf buf) { // the order is important this.simpleInt = buf.readInt(); this.simpleBool = buf.readBoolean(); } @Override public void toBytes(ByteBuf buf) { buf.writeInt(simpleInt); buf.writeBoolean(simpleBool); } } }
-
-
-
-
I have a GUI and I want it to render Blocks and Items on it. It doesn't matter if the render 3D or 2D
-
-
-
-
I want to make a balance variable that stores the balance you have and you get add and subtract to it. How would I do this?
-
I'm drawing a string on my GUI and i'm using the fontRendererObj, how would I change the size of the string?
-
Have a field in your Gui that stores the current page. Then in drawScreen draw different things depending on the contents of that field. Then you'll need buttons to flick through the pages. A simple example: https://github.com/diesieben07/Modjam-4/blob/master/src/main/java/mod/badores/client/gui/GuiBadOreBook.java
Thanks, great example
-
I have a gui which you can flick through the pages. How would I automatically make a new page gui without making an entire new class for every page?
-
I don't think it makes sense that "the packet opens a gui" based on a button press. The buttons are already pressed on the client side where the GUI is open. So you can open guis however you want without packets. But if you need information from the server, or if you need gui to cause an effect on the server, that's when you would send a packet.
I cant open a gui from with the actionPerformed() method because it doesn't have the right perameters
-
-
I don't know how I would get that working on my gui
-
-
How do I send packets from a gui. I don't know how Netty works, so a link to a tutorial would be good aswell
[1.7.10] Packets Not Working?
in Modder Support
Posted
Where am I registering it on both sides?