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.

Best information to contained in custom packet to sync nbt on itemstack/tileentity

Featured Replies

Posted

OK, this often encounter when I need to change nbt data on gui action in client.

 

I know I need to send custom packet to server when client do something on gui.

But I confused the information I give in message (used in let server know what itemstack/tileentity to update) is appropriate or not.

I don't want increase too much loading on server and the way must be logical.

 

So, for itemstack.

I may want to contain uuid of player in packet.

Then on the server, I use uuid to get the PlayerEntity, use some method like PlayerEntity#getHeldEquipment get the itemstack and valid it. Then change it's nbt data.

 

But I found that some thread here said don't trust uuid from client, so what other way I can use will be a good idea?

 

And, for tileentity.

I may want to contain postion of the block.

Then on server, I use World#getTileEntity to get the tileentity and valid it. Then do something with its nbt data.

 

This is the way I current used in sync tileentity. It worked, but is this a good idea?

 

====================================================================

OK, my bad sorry.

I found I can get player simply using MessageContext#getServerHandler#player......

 

Just ignore this post qq.

Edited by immortalmice

  • Author
9 hours ago, diesieben07 said:

You don't need to send the UUID. NetworkEvent.Context#getSender gives you the player who sent the packet.

 

I'm currently using 1.12.2-14.23.5.2847, I can't find NetworkEvent.Context.

The method I process my message is something like this, I only have MessageContext.

 

public static class Handler implements IMessageHandler<RecipeTableMessage, IMessage>{
		@Override
		public IMessage onMessage(RecipeTableMessage message, MessageContext ctx){
  			/** do something here ...... */
  		}
  }

 

9 hours ago, diesieben07 said:

That would be correct, however do not send NBT data, send information about what the client did (i.e. "user pressed button X" not "update contained energy to 250").

Yes, I only send the action client did, and process data always on the server.

1 minute ago, immortalmice said:

 

I'm currently using 1.12.2-14.23.5.2847, I can't find NetworkEvent.Context.

The method I process my message is something like this, I only have MessageContext.

 


public static class Handler implements IMessageHandler<RecipeTableMessage, IMessage>{
		@Override
		public IMessage onMessage(RecipeTableMessage message, MessageContext ctx){
  			/** do something here ...... */
  		}
  }

 

Yes, I only send the action client did, and process data always on the server.

@immortalmice, 1.12.2 is no longer supported due to his age: update to a modern Version to receive support. Pls read the 

that is standing over your topic title. 

New in Modding? == Still learning!

Guest
This topic is now closed to further replies.

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.