Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

I want to give an item on GUIButton click but i dont know how to do this with packets. I have read lots of packet tutorials but i cant seem to find out how to do it. Thanks

  • Author

Send a packet to the server telling it that the player pressed a button (if you have multiple buttons you probably want to send a number identifying the button, otherwise an empty packet is enough).

Then on the server, when the packet is received, check if the player can actually access the button (e.g. is in range of your block, is viewing the gui, whatever else...) and if so, give him the appropriate Item.

I know I shouldnt be asking for code but, im desperate. Ive read about how to send packets and stuff but I just cant do it. If you know how, could you please even give me a tiny bit of code to help me understand?

  • Author

There are tons of tutorials out there, which tell you how to send packets.

Yea, but i cant seem  to send a packet onButton clicked

  • Author

Show what you have tried.

package MinespressoMod;

import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.item.ItemStack;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.util.ResourceLocation;

import org.lwjgl.opengl.GL11;

import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;



public class CappuccinoGui extends GuiScreen{
public final int xSizeBackground1 = 248;
public final int ySizeBackground1 = 166;

public ResourceLocation background1 = new ResourceLocation("minedrinks", "textures/gui/CappuccinoBackground.png");
public ResourceLocation Coffee = new ResourceLocation("minedrinks", "textures/items/coffee.png");

@Override
public void actionPerformed(GuiButton guibutton){
	if(guibutton.id == 1){
		Packet250CustomPayload packet = new Packet250CustomPayload();
            packet.channel = "GenericRandom";
           
            Side side = FMLCommonHandler.instance().getEffectiveSide();
            
            if (side == Side.SERVER) {
                   
            } else if (side == Side.CLIENT) {
                    // We are on the client side.
                    EntityClientPlayerMP player = (EntityClientPlayerMP) playerEntity;
                    player.sendQueue.addToSendQueue(packet);
            } else {
                    // We are on the Bukkit server.
            }
           
            return false;
            
		mc.thePlayer.inventory.addItemStackToInventory(par1ItemStack)(1, new ItemStack(Minespresso.Cappuccino));
	}
}


public CappuccinoGui(){

}


public boolean doesGuiPauseGame(){
	return false;
}

public void drawScreen(int i, int j, float f){
     buttonList.add(new GuiButton(1, width / 2 - 70, height / 2 - 40, 130, 20, "Regular Cappuccino"));
     buttonList.add(new GuiButton(2, width / 2 - 70, height / 2 - 15, 130, 20, "Extra Sugary Cappuccino"));
     buttonList.add(new GuiButton(3, width / 2 - 70, height / 2 + 15, 130, 20, "Magical Cappuccino"));
     buttonList.add(new GuiButton(4, width / 2 - 70, height / 2 + 40, 130, 20, "Sugary Magic Cappuccino"));
     
     
     
     
	//Background Texture
	GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        this.mc.getTextureManager().bindTexture(background1);
        int k1 = (this.width - this.xSizeBackground1) / 2;
        int l1 = (this.height - this.ySizeBackground1) / 2;
        this.drawTexturedModalRect(k1, l1, 0, 0, this.xSizeBackground1, this.ySizeBackground1);
        
        super.drawScreen(i, j, f); 
}
}

I Tried this code but the playerEntity is not working and I cant create an EntityPlayer in the parameters

 

  • Author

You don't need to check the side, Guis are always Client-only.

So, that packet sending code looks alright to me (although you should use the PacketDispatcher class for simplicity). But you are still adding the Item from your Gui, this will not work because Guis are client-only. You need to do it when the packet is received on the server.

 

And btw: Why are you still working with 1.6.4?

I'm getting there, now all I need is to find a way to give the player an item on button click from within the PacketHandler. I cant give the player an item since there is not EntityPlayer in the onPacketData method. By the way, im using 1.6.4 so I can have my mod for 1.6.4 and 1.7.2

 

  • Author

The fact alone that the packet arrives tells you that the button was pressed, because that's when you send it, right? :D

Yea, i just changed that, stupid mistake. But the real problem is I cant give the player an  item because i need an EntityPlayer in the onPacketData method.

  • Author

It has one. 3rd parameter.

Thats just a Player, not EntityPlayer. and i cant give the player an item with it

  • Author

You can cast any Player to EntityPlayer.

Im going to sound like a retard, but how do i cast. I have learnt java... but i forget

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.