Jump to content

[solved] Tile Entity Initialization Client Side


redria7

Recommended Posts

I have run into a little bit of a snag with my tile entity. When I place it, I want it to recognize what location it is being placed at, specifically the coordinates, and store this information in variables within my tile entity class. That seems to be no problem since tile entities are eventually told their own coordinates.

However, I then want to be able to tell it, through my gui, to pretend it is located somewhere else. It renders in the same spot, but those coordinate variables are changed. So it has the normal tile entity coordinates, and my new altered coordinates. Again, no problem.

My problem comes with initialization of the client side world. When the client side world is created, my tile entity is initialized as if it has just been placed and the internal coordinates have not been changed, and this is never rectified. So every time I load the game, the server is loading the changed coordinates and the client is showing the original ones.

I (think I) know the solution lies in packets, but I'm just not sure when and where to send a packet, or if that isn't the solution at all.

To be specific, I have an initialization boolean that starts as false (not initialized) and when updateEntity is called the first time, the coordinates are stored and the boolean is set to true, stopping the coordinates from being reset when updateEntity is called again. This was the only way I could think of to initialize the block to contain its coordinates.

A thought is that I could maybe send a packet from updateEntity from the server side to client to update it, but I'm not sure how to control the flow of packets so it isn't just spamming packets.

 

Tldr: The client side world is loaded when the game starts and initializes my tile entity as a new entity, never recognizing changes that had been made before the world was saved and closed.

 

It seems like a problem that other things should face, so there should be a solution... I'm just not seeing it.

 

 

Edit:

Disregard all this: I'm an idiot. I had getDescriptionPacket and onDataPacket already set up to handle this, then I commented them out thinking they weren't contributing as I was learning how packets worked. I uncommented them and it works. Yay me.

Read my thoughts on my summer mod work and tell me what you think!

http://www.minecraftforge.net/forum/index.php/topic,8396.0.html

 

I absolutely love her when she smiles

Link to comment
Share on other sites

add this to you're tile entities

@Override
public Packet getDescriptionPacket()
{
	NBTTagCompound tag = new NBTTagCompound();
	this.writeToNBT(tag);
	return new Packet132TileEntityData(xCoord, yCoord, zCoord, 0, tag);
}

@Override
public void onDataPacket(INetworkManager net, Packet132TileEntityData pkt)
{
	NBTTagCompound tag = pkt.customParam1;
	this.readFromNBT(tag);
}

Link to comment
Share on other sites

Yeah, I caught that moments before you replied. Thanks though. I had it there and decided to comment it out since I didn't see it immediately contributing, then I finally looked at the sign tile entity and saw:

    /**
     * Overriden in a sign to provide the text.
     */
    public Packet getDescriptionPacket()

and realized my mistake.

Read my thoughts on my summer mod work and tell me what you think!

http://www.minecraftforge.net/forum/index.php/topic,8396.0.html

 

I absolutely love her when she smiles

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



×
×
  • Create New...

Important Information

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