What's the point of RotaryCraft?

  • Please make sure you are posting in the correct place. Server ads go here and modpack bugs go here
  • The FTB Forum is now read-only, and is here as an archive. To participate in our community discussions, please join our Discord! https://ftb.team/discord

Padfoote

Brick Thrower
Forum Moderator
Dec 11, 2013
5,140
5,898
563
Note that's just what I (and Direwolf20; apparently Padfoote as well) call it. It might not be accurate code-wise but it certainly works well enough for us non-modders :)

I actually got it from Way's MCF description of the Sigil of the Green Grove. :p
 

Reika

RotaryCraft Dev
FTB Mod Dev
Sep 3, 2013
5,079
5,331
550
Toronto, Canada
sites.google.com
Keep in mind that I'm not a modder, so I have no idea how this works behind the scenes. Pretty much the entire idea I have of this I got from watching Direwolf20's Lets Play series, and he's getting this from the Forgecraft Devs (and messes it up from time to time, he isn't a programmer either :) ).

From what I understand, there are two ways to accelerate plant growth in mods: bonemeal application and growth ticks. A large portion of the "old guard" mods use bonemeal, or check bonemeal, or something with their growth acceleration mechanics, which usually means they only work on saplings, wheat, carrots, and potatoes (and any mod plant that extends those vanilla classes). Other mods directly trigger growth updates (and here's where my understanding REALLY breaks down). What the second set of growth acceleration mechanics do is allow virtually assured universal compatibility with mod plants. The first set tend to be limited to the plants the mod author was conversant with (vanilla + their mod), which severely limits their potential for use in farming in a heavily modded environment.

My standard test is to grab a cactus or reed and see if that works, then an ender lily. If the mechanic works on both, I'm pretty certain it "uses growth ticks". If it works on only the vanilla plants then it usually "uses bonemeal" and the author stuck an exception in for cactus/reeds. Note that's just what I (and Direwolf20; apparently Padfoote as well) call it. It might not be accurate code-wise but it certainly works well enough for us non-modders :)
Behind the scenes, all blocks receive - on average, every 180 seconds - a "random tick". Most blocks do nothing, but it is what triggers things like grass growth/death, ice freezing/melting, crop/plant growth, leaf decay, and redstone ore deactivation. Bonemeal is literally a direct "set the growth state" type operation. For obvious reasons, accelerating the former will have the effect of accelerating crop growth whether the crop is specifically coded for or not.
 

RavynousHunter

New Member
Jul 29, 2019
2,784
-3
1
Behind the scenes, all blocks receive - on average, every 180 seconds - a "random tick". Most blocks do nothing, but it is what triggers things like grass growth/death, ice freezing/melting, crop/plant growth, leaf decay, and redstone ore deactivation. Bonemeal is literally a direct "set the growth state" type operation. For obvious reasons, accelerating the former will have the effect of accelerating crop growth whether the crop is specifically coded for or not.
Do the blocks that resist bonemealing do so because they detect bonemeal (or its constituent effect) being used on it, or simply a change in their growth level tag? That's always been a point of curiosity for me, mostly because I like the idea of having a machine that has a small chance of instantly growing (orhterwise, another roll to see if any growth at all is added) any and all plants to full maturity without having to bother with growth ticks. Tick-based systems just...rub me the wrong way.
 

YX33A

New Member
Jul 29, 2019
3,764
1
0
Do the blocks that resist bonemealing do so because they detect bonemeal (or its constituent effect) being used on it, or simply a change in their growth level tag? That's always been a point of curiosity for me, mostly because I like the idea of having a machine that has a small chance of instantly growing (orhterwise, another roll to see if any growth at all is added) any and all plants to full maturity without having to bother with growth ticks. Tick-based systems just...rub me the wrong way.
You'd best start believing in tick-based systems... yer' in one!

That is, Minecraft is a purely tick-bases system when it comes down to machines, aka anything that isn't either you, food waiting to be killed, or that thinks you're food.
 

Reika

RotaryCraft Dev
FTB Mod Dev
Sep 3, 2013
5,079
5,331
550
Toronto, Canada
sites.google.com
Do the blocks that resist bonemealing do so because they detect bonemeal (or its constituent effect) being used on it, or simply a change in their growth level tag? That's always been a point of curiosity for me, mostly because I like the idea of having a machine that has a small chance of instantly growing (orhterwise, another roll to see if any growth at all is added) any and all plants to full maturity without having to bother with growth ticks. Tick-based systems just...rub me the wrong way.
(Most) blocks have two parameters, their ID and their metadata. Metadata is used in many blocks for "subtypes", be it wool color, wood color, stone type (1.7+), redstone wire strength, fluid flow state or crop growth. Normally this is slowly incremented for crops. Bonemeal is literally "setBlockMetadata(7)" in pseudocode. This is coded into the ItemDye class, where it explicitly checks for every bonemealable plant in vanilla. The only way to make bonemeal grow mod crops is to either add a "on block right clicked" function to the block class (and check player's currently held item) or to watch Forge's BonemealEvent. So, put another way, bonemeal is by default not supported, and its support must be explicitly added by the crop or someone watching the event, as LegacyCraft does.
 
  • Like
Reactions: Narc

RavynousHunter

New Member
Jul 29, 2019
2,784
-3
1
You'd best start believing in tick-based systems... yer' in one!

That is, Minecraft is a purely tick-bases system when it comes down to machines, aka anything that isn't either you, food waiting to be killed, or that thinks you're food.
Philosophical discussions about whether the universe is event-based or tick-based, alas, aren't on-topic, and would make the mods yell at us.

(Most) blocks have two parameters, their ID and their metadata. Metadata is used in many blocks for "subtypes", be it wool color, wood color, stone type (1.7+), redstone wire strength, fluid flow state or crop growth. Normally this is slowly incremented for crops. Bonemeal is literally "setBlockMetadata(7)" in pseudocode. This is coded into the ItemDye class, where it explicitly checks for every bonemealable plant in vanilla. The only way to make bonemeal grow mod crops is to either add a "on block right clicked" function to the block class (and check player's currently held item) or to watch Forge's BonemealEvent. So, put another way, bonemeal is by default not supported, and its support must be explicitly added by the crop or someone watching the event, as LegacyCraft does.
Fascinating, thank you!
 

Narc

New Member
Jul 29, 2019
259
0
0
[...]Bonemeal is literally "setBlockMetadata(7)" in pseudocode.[...]
And for anyone curious, here's the non-pseudocode version (at least for the moment; I'll probably delete that javadoc eventually, so don't rely on it). For completeness, don't forget to look at BlockSapling.markOrGrowMarked() and BlockCrops.fertilize().

In the case of what BlockCrops (e.g. wheat, carrots, etc.) does, a bonemeal application grows it by a random number between 2 and 5 (clamped at 7 maximum, as that's the fully grown state). For comparison, BlockCrops's updateTick() checks for a light level above 9, generates a random number based on its growth rate (which depends on a lot of things), and if that makes a zero, grows by exactly 1.

Finally, a lot of things have an updateTick() but don't have fertilize() -- bonemeal won't work on them, but the RoC fertilizer (and other methods) just call updateTick, making them believe that time has passed. Probably the best example for these is BlockReed (aka sugar cane), which checks if there are fewer than three total blocks stacked on top of each other, and if so, grows itself by 1/16th. Interestingly, the only block of a sugarcane that can actually grow is the top one -- the others do also get randomly ticked, but they bail out when the block above them isn't an air block (because it's another sugarcane).
 

King Lemming

New Member
Jul 29, 2019
664
0
0
Philosophical discussions about whether the universe is event-based or tick-based, alas, aren't on-topic, and would make the mods yell at us.

Pre-big bang, it was event based as time did not yet exist. Currently, it's tick based. There's a maximum possible speed (light in a vacuum - m/s), and a minimum possible distance (Planck length - m). Therefore, the maximum possible speed divided by the minimum possible distance is the smallest discrete unit of time allowable - the "tick" for reality.
 

TomeWyrm

New Member
Jul 29, 2019
898
1
1
I love learning more about how Minecraft works!

Thanks everyone for all the programmers' perspectives on this stuff!
 
  • Like
Reactions: Padfoote

trajing

New Member
Jul 29, 2019
3,091
-14
1
I'm a little late, but OpenBlocks sprinklers do not cause growth ticks. It does the same thing that bonemeal does.
 
  • Like
Reactions: Padfoote

Strikingwolf

New Member
Jul 29, 2019
3,709
-26
1
Pre-big bang, it was event based as time did not yet exist. Currently, it's tick based. There's a maximum possible speed (light in a vacuum - m/s), and a minimum possible distance (Planck length - m). Therefore, the maximum possible speed divided by the minimum possible distance is the smallest discrete unit of time allowable - the "tick" for reality.
so the Planck Time
 

RavynousHunter

New Member
Jul 29, 2019
2,784
-3
1
Pre-big bang, it was event based as time did not yet exist. Currently, it's tick based. There's a maximum possible speed (light in a vacuum - m/s), and a minimum possible distance (Planck length - m). Therefore, the maximum possible speed divided by the minimum possible distance is the smallest discrete unit of time allowable - the "tick" for reality.
Though, the speed limit of the universe is all relative. Warp spacetime enough, and you can, to an outside observer, move faster than the speed of light while, from your perspective, you're moving only a tiny fraction of that speed.

Also, is it a known hard limit to the smallest amount of time allowable, or an arbitrary unit created because handling anything smaller would require precision the likes of which we can't yet achieve?
 

TomeWyrm

New Member
Jul 29, 2019
898
1
1
It's as hard a limit as we can conceive of. We actually can't measure things at the Plank scale yet, or even close.
 

King Lemming

New Member
Jul 29, 2019
664
0
0
Though, the speed limit of the universe is all relative. Warp spacetime enough, and you can, to an outside observer, move faster than the speed of light while, from your perspective, you're moving only a tiny fraction of that speed.

Also, is it a known hard limit to the smallest amount of time allowable, or an arbitrary unit created because handling anything smaller would require precision the likes of which we can't yet achieve?

The speed limit is absolutely not relative. If you are warping spacetime, you haven't changed the speed limit at all, you've actually moved the far point closer to you. Hence why it's called warping. Space is naturally doing this, actually. Cosmic inflation implies that eventually the stars will be racing away from each other faster than light can cross the ever-expanding gap. But the galaxies aren't moving faster than light - the distance itself will be increasing faster than light moves.

Kind of depressing, huh?
 

zemerick

New Member
Jul 29, 2019
667
0
1
Also, is it a known hard limit to the smallest amount of time allowable, or an arbitrary unit created because handling anything smaller would require precision the likes of which we can't yet achieve?

Currently it is believed to be a physical minimum distance. However, our understanding of the universe is still not complete. The major glaring issue being that quantum mechanics and gravity don't work together, even though they exist in the same universe. Something somewhere is incomplete or wrong, leaving room for the Plank Units to change.

Also, it's really unbelievably tiny. We're talking an electron is many orders of magnitude larger. As it stands, we really can't even imagine trying to see something on that kind of scale.
 

YX33A

New Member
Jul 29, 2019
3,764
1
0
Pre-big bang, it was event based as time did not yet exist. Currently, it's tick based. There's a maximum possible speed (light in a vacuum - m/s), and a minimum possible distance (Planck length - m). Therefore, the maximum possible speed divided by the minimum possible distance is the smallest discrete unit of time allowable - the "tick" for reality.
http://xkcd.com/1352/
 

TomeWyrm

New Member
Jul 29, 2019
898
1
1
As confusing as science gets after the big bang, the philosophy that gets bandied around when you talk about "before"? Yikes.
 
  • Like
Reactions: YX33A

YX33A

New Member
Jul 29, 2019
3,764
1
0
As confusing as science gets after the big bang, the philosophy that gets bandied around when you talk about "before"? Yikes.
It gets better! Scientifically speaking, Time is a non-issue. Nothing changes in the universe if the concept of time vanishes, except history. And thus, time really only matters for "Human" sciences, as we are firmly rooted in the concept of time.
I just want you guys to know I love ya. It ain't often I can have an intelligent discussion with people. *brohugs everyone*
This thread is basically the general science thread as it turns out. Kinda like how over on the KSP Forums they have a whole board for science, but since the FTB Forums are on topic for about 5 minutes a day, this is now a science thread.
Now post some Pusheen pics!