Jump to content

ITickable update() constant?


L0raxeo

Recommended Posts

I'm using the ITickable#update() method to update the loading progress of my Growing Chamber. However I do want to make sure that the update() method is called in between constant intervals. I couldn't find any confirmation online, and for anyone helping I did research ahead of time. Pestering people on forums is always my last resort. Thank you in advance!

Link to comment
Share on other sites

59 minutes ago, ChampionAsh5357 said:

I'm guessing this is for a TileEntity? If so, it's called once every tick so its constant in terms of MC. As for the time between those ticks, it usually is approximately the same unless some bad logic is causing the ticks to lag behind.

Thank you! Yes it is a TileEntity. I'm just using the update method so what I think you are saying is that the update() from ITickable is called a constant rate. Thank you very much

Link to comment
Share on other sites

It's called once per game-logic-tick, which under ideal and normal circumstances, is 20 times a second.

If game logic is for some reason running slow (eg. lag), then it will be slower (but so will everything else). If it's faster for some reason (undefined example) then it'll be faster, but so will everything else. And of course, these values (e.g. "20 times a second" or "every 50 ms") are all approximate averages. It'll never be precisely the declared rate, but as far as you and your code should be concerned, it is.

Edited by Draco18s

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

3 minutes ago, Draco18s said:

It's called once per game-logic-tick, which under ideal and normal circumstances, is 20 times a second.

If game logic is for some reason running slow (eg. lag), then it will be slower (but so will everything else). If it's faster for some reason (undefined example) then it'll be faster, but so will everything else. And of course, these values (e.g. "20 times a second" or "every 50 ms") are all approximate averages. It'll never be precisely the declared rate, but as far as you and your code should be concerned, it is.

Oh ok, so that was actually my question: if the game is slower, will the update method be called less, and when it's faster, will the update method be called more frequently? If that's the case, how do I solve this? I remember doing something to fix that once in a pure Swing Java program, but I don't know how I would do that in minecraft.

Link to comment
Share on other sites

Just now, diesieben07 said:

You can't. The only way it would be called slower than 20x a second would be if the game is lagging because the hardware is overloaded. There is nothing you can do in software to stop the hardware from being overloaded.

oh okay. so this is only something that would happen if the game was extremely slow. but if one was running okay, and another was running really well, they would be called at the rates right?

Link to comment
Share on other sites

3 minutes ago, L0raxeo said:

Sorry, but I also don't know how to reduce the time in between each time the update() is called. Any suggestions?

You don't. Just assume if nobody is being dumb that all logic will be uniformly spread over a period of time. MC logic should be done relative to ticks anyways so you won't have to deal with desynced real world timing.

Link to comment
Share on other sites

Just now, diesieben07 said:

Correct.

 

You don't. If you only want something to happen every second you have a counter that counts up to 5.

Thank you for the first part ("correct").

 

The second response, I understand how to reduce it, but I was wondering if there was a more efficient way to reduce. The way I did it was have 2 variables: growingTime, reductionGear

Every update the reductionGear goes up by 1. Every 25 times it increments, the growing time increments. I'm not an idiot (well actually I am since I'm still in 9th grade although I did skip 1 entire grade and got bumped up in CS&E and Spanish class), but I was wondering if there was like an @Override method that did that same thing more efficiently. Such as maybe a

@Override

changeUpdateInterval(int interval)

or something like that.

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.