Jump to content

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


Recommended Posts

Posted (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 by immortalmice
Posted
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.

Posted
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.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Add the crash-report or latest.log (logs-folder) with sites like https://mclo.gs/ and paste the link to it here  
    • So i have a forge modded aternos server that worked just fine for a month untill today it suddenly crashes most of the time giving errors and idk which mod is causing the error or its smth else here is the crash log link https://mclo.gs/gGkzGKT
    • Struggling to decipher a crash report I'm getting in a custom modpack I'm tinkering with. The crash happens on startup, but weirdly, only some of the time. It seems to be related to Steves Carts, but weirdly it only started happening recently, and I can't identify if another mod is conflicting, or why it is only happening some of the time:   java.lang.NullPointerException: Cannot invoke "net.minecraft.world.entity.player.Player.m_20202_()" because "player" is null at vswe.stevescarts.events.OverlayEventHandler.onRenderTick(OverlayEventHandler.java:24) ~[stevescarts-1.20.1-1.1.14.jar%23527!/:1.20.1-1.1.14] {re:classloading} at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:260) ~[eventbus-6.0.5.jar%23127!/:?] {} at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:252) ~[eventbus-6.0.5.jar%23127!/:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:315) ~[eventbus-6.0.5.jar%23127!/:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:296) ~[eventbus-6.0.5.jar%23127!/:?] {} at net.minecraftforge.event.ForgeEventFactory.onRenderTickEnd(ForgeEventFactory.java:919) ~[forge-1.20.1-47.1.106-universal.jar%23581!/:?] {re:mixin,re:classloading,pl:mixin:APP:modernfix-forge.mixins.json:perf.potential_spawns_alloc.ForgeEventFactoryMixin,pl:mixin:A} at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1148) ~[client-1.20.1-20230612.114412-srg.jar%23576!/:?] {re:mixin,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:mixin:A,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:718) ~[client-1.20.1-20230612.114412-srg.jar%23576!/:?] {re:mixin,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:mixin:A,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:218) ~[minecraft-1.20.1-client.jar:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:flywheel.mixins.json:ClientMainMixin,pl:mixin:A,pl:runtimedistcleaner:A}     Including some extra info in case any of it is relevant^. Appreciate any ideas/advice!    
  • Topics

×
×
  • Create New...

Important Information

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