After some code digging I think I tracked down the line(s) where the issue happens. It's in FancyTrunkPlacer::placeTrunk
and looks something like this (local variable names are unknown, so I came up with some guesses):
double branchBaseTemp = branchPos.getY() - Math.sqrt(distX * distX + distZ * distZ) * 0.381;
int branchBase = branchBaseTemp > branchCutoff ? branchCutoff : branchBaseTemp;
Here (int)branchBaseTemp
rounds towards 0, which leads to branches generating 2 blocks above the sapling, instead of 3, so they are not prevented by the height limiter.
If you move the height limiter of the "positive" setup up one block you can see the difference:
[media]I also had a similar crash with the relevant line being
at aej.a(SourceFile:453) -> ServerLevel.tickChunks
Seems like the ServerLevel.random is the instance accessed from multiple threads.
Yeah, the issue is the event registered in MinecraftServer::registerJFRHooks
which keeps a reference to this
(the server) through the Runnable
.
The fix would be to store the Runnable
in a field and call FlightRecorder::removePeriodicEvent
when the server shuts down.
This is caused by StrongholdPiece::generateSmallDoorChildLeft
and StrongholdPiece::generateSmallDoorChildRight
having duplicate switch branches.
Using a different setup that also moves a lot of blocks (Comparable to the one in MC-192845) I got similar numbers:
1.12.2: 18-20 FPS
1.15.2: 13-17 FPS
1.16.1: 0 FPS
1.16.2-pre3 / 1.16.2-rc1: 5-10 FPS
Results from code digging:
the static field MinecraftServer.DEMO_SETTINGS now loads WorldGenSettings.DEMO_SETTINGS,
WorldGenSettings loads FlatLevelGeneratorSettings which loads structures/features.
As a result of that things are initialized in the wrong order because all of this happens before Bootstrap.bootStrap() in main()
TwistingVinesFeature::placeTwistingVines
loops as long as the block below isAir
but since void_air
is air it never terminates
Nevermind, I probably made a mistake while restarting the server
Still seems to happen in 20w10a
This is probably caused by the use of a Int2ObjectOpenHashMap
instead of a List
for storing the entities of a ServerWorld
(fabric name) which means the processing of entities happens in a seemingly random order instead of the order they were created.
Hopper and chest minecarts seem to overshoot the curve if accelerated by at least 2 powered rails.
As seen in the picture they can also activate detector rails while the bounding box is off track.
Present in 14w21b
Specifically this happens because
BeePollinateGoal.findNearestBlock
prefers blocks on the layer below the bee over blocks on the same layer and then after theremainingCooldownBeforeLocatingNewFlower
expires the bee will not have moved from its original position and find the same flower again, endlessly trying to get to the bottom flower without success.