immortalmice Posted February 23, 2020 Share Posted February 23, 2020 (edited) 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 February 23, 2020 by immortalmice Link to comment Share on other sites More sharing options...
immortalmice Posted February 24, 2020 Author Share Posted February 24, 2020 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. Link to comment Share on other sites More sharing options...
DragonITA Posted February 24, 2020 Share Posted February 24, 2020 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! Link to comment Share on other sites More sharing options...
Recommended Posts