Jump to content

UUID Packets?


theishiopian

Recommended Posts

I need to trigger code on the server when a particular event fires on the client. I have two questions: are uuid's the same on both the client and server, ie can I use the uuid of an entity on the client to find that same entity on the server, and if so, whats the best way to send a uuid in a packet? I tried looking into forges built in packet system, but it doesn't have a way to send uuids, only primitives and bytes, and I'd like to avoid converting a uuid into bytes if possible.

Link to comment
Share on other sites

Minecraft normally uses the entity ID (Entity#getEntityId) rather than the unique ID in networking situations (and this is its main purpose). This reduces unnecessary network traffic as the entity ID is a single 32-bit integer (that's actually compressed further) rather than a UUID that's sent as a pair of 64-bit integers.

 

If you absolutely need to send a UUID, you can wrap the ByteBuf in a PacketBuffer and use PacketBuffer#readUniqueId/PacketBuffer#writeUniqueId to read/write UUIDs.

Edited by Choonster

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

Like this? but it crashes, with a classexception

	@Override
	public void fromBytes(ByteBuf buf) {
		PacketBuffer packetBuf = (PacketBuffer) buf;
		dragonId = packetBuf.readUniqueId();
		controlState = buf.readByte();
	}

	@Override
	public void toBytes(ByteBuf buf) {
		PacketBuffer packetBuf = (PacketBuffer) buf;
		packetBuf.writeUniqueId(dragonId);
		buf.writeByte(controlState);

	}

 

Link to comment
Share on other sites

13 minutes ago, TheRPGAdventurer said:

Like this? but it crashes, with a classexception


	@Override
	public void fromBytes(ByteBuf buf) {
		PacketBuffer packetBuf = (PacketBuffer) buf;
		dragonId = packetBuf.readUniqueId();
		controlState = buf.readByte();
	}

	@Override
	public void toBytes(ByteBuf buf) {
		PacketBuffer packetBuf = (PacketBuffer) buf;
		packetBuf.writeUniqueId(dragonId);
		buf.writeByte(controlState);

	}

 

 

The ByteBuf passed to those methods isn't an instance of PacketBuffer, you need to create a new instance of PacketBuffer and pass the ByteBuf to the constructor.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

Like this

 

	@Override
	public void fromBytes(ByteBuf buf) {
		if(buf instanceof PacketBuffer) {
	    	PacketBuffer packetBuf = (PacketBuffer) buf;
	    	dragonId = packetBuf.readUniqueId();
		}
		controlState = buf.readByte();
	}

	@Override
	public void toBytes(ByteBuf buf) {
		if(buf instanceof PacketBuffer) {
		  PacketBuffer packetBuf = (PacketBuffer) buf;
		  packetBuf.writeUniqueId(dragonId);
		}
		buf.writeByte(controlState);

	}

 

Link to comment
Share on other sites

17 minutes ago, TheRPGAdventurer said:

Like this

 


	@Override
	public void fromBytes(ByteBuf buf) {
		if(buf instanceof PacketBuffer) {
	    	PacketBuffer packetBuf = (PacketBuffer) buf;
	    	dragonId = packetBuf.readUniqueId();
		}
		controlState = buf.readByte();
	}

	@Override
	public void toBytes(ByteBuf buf) {
		if(buf instanceof PacketBuffer) {
		  PacketBuffer packetBuf = (PacketBuffer) buf;
		  packetBuf.writeUniqueId(dragonId);
		}
		buf.writeByte(controlState);

	}

 

 

No. As I said, those ByteBufs aren't PacketBuffers; so that code will never send the unique IDs.

 

When I say "create a new instance", I mean "use the new operator".

Edited by Choonster
  • Thanks 1

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

8 minutes ago, theishiopian said:

@Choonster would using the entityID work for players? I need the server to know when a player is left clicking, but the left click event is clientside only, hence the need for packets.

 

The entity ID should work for players, but it's not actually needed here. The player who sent the packet is available on the server side through the MessageContext, see this example in the documentation for more details.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

@Choonster OK, I've got most of it set up, but I have one more question: How does the server know which player sent the packet? Do I have to specify somehow, or will the server somehow be able to tell? Currently, I have an event handler listening for PlayerInteract.LeftClickEmpty, which then sends an empty packet to the server like so:

 

Core.INSTANCE.sendToServer(new DeflectPacket());

 

(I defined the networkwrapper instance in the core mod class temporarily, I'll move it to somewhere else later)

 

EDIT: I tested it, and it works! But I'd still appreciate an explanation as to WHY it works.

 

Edited by theishiopian
testing
Link to comment
Share on other sites

3 minutes ago, theishiopian said:

@Choonster OK, I've got most of it set up, but I have one more question: How does the server know which player sent the packet? Do I have to specify somehow, or will the server somehow be able to tell? Currently, I have an event handler listening for PlayerInteract.LeftClickEmpty, which then sends an empty packet to the server like so:

 

Core.INSTANCE.sendToServer(new DeflectPacket());

 

(I defined the networkwrapper instance in the core mod class temporarily, I'll move it to somewhere else later)

 

The server maintains a network connection for each connected client along with a reference to the server-side player entity. When a packet is received on this connection, the server knows which player sent it and you can access the player through the NetworkContext.

  • Like 1

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

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

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • i notice a change if i add the min and max ram in the line like this for example:    # Xmx and Xms set the maximum and minimum RAM usage, respectively. # They can take any number, followed by an M or a G. # M means Megabyte, G means Gigabyte. # For example, to set the maximum to 3GB: -Xmx3G # To set the minimum to 2.5GB: -Xms2500M # A good default for a modded server is 4GB. # Uncomment the next line to set it. -Xmx10240M -Xms8192M    i need to make more experiments but for now this apparently works.
    • Selamat datang di OLXTOTO, situs slot gacor terpanas yang sedang booming di industri perjudian online. Jika Anda mencari pengalaman bermain yang luar biasa, maka OLXTOTO adalah tempat yang tepat untuk Anda. Dapatkan sensasi tidak biasa dengan variasi slot online terlengkap dan peluang memenangkan jackpot slot maxwin yang sering. Di sini, Anda akan merasakan keseruan yang luar biasa dalam bermain judi slot. DAFTAR OLXTOTO DISINI LOGIN OLXTOTO DISINI AKUN PRO OLXTOTO DISINI   Slot Gacor untuk Sensasi Bermain Maksimal Olahraga cepat dan seru dengan slot gacor di OLXTOTO. Rasakan sensasi bermain maksimal dengan mesin slot yang memberikan kemenangan beruntun. Temukan keberuntungan Anda di antara berbagai pilihan slot gacor yang tersedia dan rasakan kegembiraan bermain judi slot yang tak terlupakan. Situs Slot Terpercaya dengan Pilihan Terlengkap OLXTOTO adalah situs slot terpercaya yang menawarkan pilihan terlengkap dalam perjudian online. Nikmati berbagai genre dan tema slot online yang menarik, dari slot klasik hingga slot video yang inovatif. Dipercaya oleh jutaan pemain, OLXTOTO memberikan pengalaman bermain yang aman dan terjamin.   Jackpot Slot Maxwin Sering Untuk Peluang Besar Di OLXTOTO, kami tidak hanya memberikan hadiah slot biasa, tapi juga memberikan kesempatan kepada pemain untuk memenangkan jackpot slot maxwin yang sering. Dengan demikian, Anda dapat meraih keberuntungan besar dan memenangkan ribuan rupiah sebagai hadiah jackpot slot maxwin kami. Jackpot slot maxwin merupakan peluang besar bagi para pemain judi slot untuk meraih keuntungan yang lebih besar. Dalam permainan kami, Anda tidak harus terpaku pada kemenangan biasa saja. Kami hadir dengan jackpot slot maxwin yang sering, sehingga Anda memiliki peluang yang lebih besar untuk meraih kemenangan besar dengan hadiah yang menggiurkan. Dalam permainan judi slot, pengalaman bermain bukan hanya tentang keseruan dan hiburan semata. Kami memahami bahwa para pemain juga menginginkan kesempatan untuk meraih keberuntungan besar. Oleh karena itu, OLXTOTO hadir dengan jackpot slot maxwin yang sering untuk memberikan peluang besar kepada para pemain kami. Peluang Besar Menang Jackpot Slot Maxwin Peluang menang jackpot slot maxwin di OLXTOTO sangatlah besar. Anda tidak perlu khawatir tentang batasan atau pembatasan dalam meraih jackpot tersebut. Kami ingin memberikan kesempatan kepada semua pemain kami untuk merasakan sensasi menang dalam jumlah yang luar biasa. Jackpot slot maxwin kami dibuka untuk semua pemain judi slot di OLXTOTO. Anda memiliki peluang yang sama dengan pemain lainnya untuk memenangkan hadiah jackpot yang besar. Kami percaya bahwa semua orang memiliki kesempatan untuk meraih keberuntungan besar, dan itulah mengapa kami menyediakan jackpot slot maxwin yang sering untuk memenuhi harapan dan keinginan Anda.  
    • LOGIN DAN DAFTAR DISINI SEKARANG !!!! Blacktogel adalah situs judi slot online yang menjadi pilihan banyak penggemar judi slot gacor di Indonesia. Dengan platform yang sangat user-friendly dan berbagai macam permainan slot yang tersedia, Blacktogel menjadi tempat yang tepat untuk penggemar judi slot online. Dalam artikel ini, kami akan membahas tentang Blacktogel dan keunggulan situs slot gacor online yang disediakan.  
    • Situs bandar slot online Gacor dengan bonus terbesar saat ini sedang menjadi sorotan para pemain judi online. Dengan persaingan yang semakin ketat dalam industri perjudian online, pemain mencari situs yang tidak hanya menawarkan permainan slot yang gacor (sering memberikan kemenangan), tetapi juga bonus terbesar yang bisa meningkatkan peluang menang. Daftar disini : https://gesit.io/googlegopek
    • Situs bandar slot online Gacor dengan bonus terbesar saat ini sedang menjadi sorotan para pemain judi online. Dengan persaingan yang semakin ketat dalam industri perjudian online, pemain mencari situs yang tidak hanya menawarkan permainan slot yang gacor (sering memberikan kemenangan), tetapi juga bonus terbesar yang bisa meningkatkan peluang menang. Daftar disini : https://gesit.io/googlegopek
  • Topics

×
×
  • Create New...

Important Information

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