Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Linking Tile Entities together


Flenix
 Share

Recommended Posts

Hey guys,

 

I want to do some linking of Tile Entities for the shop part of my economy system.

 

The way I figured I'd do the shop is with three separate Tile Entities;

 

The "Shelf" block. which is the point of sale. It shows the item, and a buyer can click the item to buy it.

The shelf also changes it's GUI depending on whether the owner is interacting or not - If the owner opens it, they can edit things, whereas the buyer can only buy or sell, so I probably need to transmit data between the tile entity and the GUI to write text from the TE onto the GUI, eg price of the item.

 

The "Storage" block. Effectively a glamorized chest, but the Shelf ties into it. The Shelf gets it's stock from here.

Only the owner can open this, but I think that'd be quite easy to do; just detect who placed it, write their username to NBT then check on right click? (Or is there a better way?)

 

The "Cash Register" block. This is where the money taken from the player will go.

 

Now, I need to connect these without them actually being next to one another. Also, I want the storage to only accept one shelf at a time, but the cash register needs unlimited. Finally I don't want an unlimited range; I'll say 64 blocks to allow for large shops.

 

Anyone got any advice on how I'd do something like this? Maybe someone knows an example of something vaguely similar? Any help is great, not quite sure where to start!

 

 

Finally, I know I could do all this within one block, but I'm going for realism.

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

Link to comment
Share on other sites

Hi

 

I'd say it shouldn't be too hard, you just need to figure out a way for the TileEntities to keep track of each other, keeping in mind that depending on where the players are standing, some of the chunks might not be loaded (so the TileEntities might be absent).

 

Some random thoughts that might help-

Perhaps the linkages between TileEntities might best be stored in the world NBT data (WorldInfo.getAdditionalProperty), eg each "shop" in the world has a structure that lists all the shelves, storage blocks, and cash register blocks.  Updated whenever you create or destroy one of the components.  Whenever a TileEntity needs to know about one of the others it is linked to, it consults the world NBT data.

 

How will you decide which shelves are linked to which blocks, and how will the user decide which items are placed where on which shelves?  Likewise cash registers?  Can you link to any within the same shop, or the nearest?  How do you designate a "shop"? unique typed-in name?  unique player? 

 

Will your shelf be like a chest?  or will it "show" the item like an item frame does?

 

Important design decision to be made up front I think.

 

I'd recommend you test this with something really simple before leaping straight in with the full design since I reckon this will probably need a couple of prototypes before you hit on the best approach :-)

 

-TGG

 

Link to comment
Share on other sites

Hi

 

I'd say it shouldn't be too hard, you just need to figure out a way for the TileEntities to keep track of each other, keeping in mind that depending on where the players are standing, some of the chunks might not be loaded (so the TileEntities might be absent).

 

Some random thoughts that might help-

Perhaps the linkages between TileEntities might best be stored in the world NBT data (WorldInfo.getAdditionalProperty), eg each "shop" in the world has a structure that lists all the shelves, storage blocks, and cash register blocks.  Updated whenever you create or destroy one of the components.  Whenever a TileEntity needs to know about one of the others it is linked to, it consults the world NBT data.

 

How will you decide which shelves are linked to which blocks, and how will the user decide which items are placed where on which shelves?  Likewise cash registers?  Can you link to any within the same shop, or the nearest?  How do you designate a "shop"? unique typed-in name?  unique player? 

 

Will your shelf be like a chest?  or will it "show" the item like an item frame does?

 

Important design decision to be made up front I think.

 

I'd recommend you test this with something really simple before leaping straight in with the full design since I reckon this will probably need a couple of prototypes before you hit on the best approach :-)

 

-TGG

 

Thanks for the ideas.

 

There's not going to be anything in the code which defines an actual "shop", as in a network. I'll just have one shelf, connected to one chest - but multiple shelves can connect to the cash register.

 

The shelf is kind of like a fancy item frame with a GUI I suppose. Deciding how to link them is something I'm still unsure of... I figured the easiest way might be to have the user place everything as they want it, then have a linking wand which stores the location of the shelf as NBT, and adds it to the NBT of whichever storage block & cash register they choose. From there, the storage block would only use the latest value, whereas the cash register would have a list.

 

My 64 block range limit means the chunks wouldn't matter, chunks within 64 blocks of the player should always be loaded because that's only a 4 chunk radius. I suppose a check for the server view distance wouldn't hurt though (I believe servers can set it as low as 3, in which case a maximum distance setup wouldn't work)

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

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

 Share



×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.