Jump to content

Ticking every second


McJty

Recommended Posts

I am trying to make a block that will need to do some work every second. Reading tutorials on the web seem to indicate that I should call setTickRandom(true) and then I'll get a random tick. First that doesn't seem to work. My updateTick() is never called and secondly I don't really like random.

 

Other sources say I should call        world.scheduleBlockUpdate(x, y, z, this, tickRate(world)); after placing the block (onBlockAdded) and then again every tick. Is that the way to go? I also want to ensure the block ticks as the world is loaded and the chunk it is in is loaded.

 

What are good recommendations for implementing this kind of functionality?

 

Thanks!

 

Link to comment
Share on other sites

Ok thanks that works. But now I'm doubting if that's actually what I want in this particular case. I'm making a block that monitors the amount of RF that is in another block (it will do more in the future but that's what it does now). So I want one side of the block to change texture depending on the capacity of another RF block. I already implemented Block.getIcon() so that the front of the block has a different texture but now I want that texture to change depending on the RF capacity of another block.

 

I'm not sure if getIcon() is called every frame. I suspect not. So I probably need to have my tile entity do this check and then somehow notify the client that this texture has to be changed. I suppose that the tile entity can use the metadata for this and then I have to update the block on the client side somehow?

 

Thanks,

Link to comment
Share on other sites

I got it to work but to my surprise I noticed that both the client side and server side version of my tile entity are ticking. And it seems that on the client side the energy RF state of the tile entity of the block I'm monitoring (in this case a thermal expansion machine) gets outdated after a while too. So now I do the updateEntity() of my tile entity only if world.isRemote is false (i.e. on the server) and it now works perfectly.

 

Thanks for the help.

Link to comment
Share on other sites

Actually I would like to add that you don't really need a tile entity in this case. Or rather you could just use the one next to you.

Setting textures is as simple as setting metadata and reflecting that, as diesieben07 pointed out. Basically a tile entity update is somewhat equivalent of a block update except it uses other methods. Now I do not know how well this will work with blocks using RF.

I haven't got the API setup for that so I can't test it but try the following method.

 

  @Override
  public void onNeighborTileChange(World world, int x, int y, int z, int tileX, int tileY, int tileZ)
  {
    	
  }

 

Example:

A block with this method next to a furnace will pickup when things are inputted or outputted and when an item is done cooking.

The question here remains obviously how often a RF machine outputs a Tile entity update.

 

And halving the number of tile entities is always a good idea.

 

I'm somewhat curious how well this would work.

Link to comment
Share on other sites

Well I need a tile entity here because I need somewhere to remember which block my monitor will monitor. Additionally my monitor block doesn't have to be directly adjacent to the block it is monitoring. When you use it you get a GUI where you can select the block you want to monitor from all nearby blocks (currently that means all blocks in a 3x3x3 area centered around the monitor). Not sure if diagonals are considered as adjacent here?

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.



×
×
  • Create New...

Important Information

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