34ea199fb0
World: fixed additional edge case - population promise rejected before task completion
...
if this happened, the index would stay set in activeChunkPopulationTasks, eventually causing the generation queue to jam up completely and non-forced generation to come to a standstill.
2021-11-02 14:30:23 +00:00
1775699f05
World: make sure that chunks locked by PopulationTask always get unlocked, no matter what
...
fixes #4527
2021-11-02 14:20:42 +00:00
32a857b8b4
fix CS
2021-11-02 14:09:16 +00:00
7e4be29fc4
Gracefully force-shutdown on failure to start RakLib
...
this now won't generate a crashdump.
2021-11-02 13:51:01 +00:00
c17587d436
World: use new Vector3() instead of Block->getPosition()
...
When profiling this, I noticed that we spend a stupidly large amount of time creating useless Position objects in the case of update=true, because Vector3->sides() calls Position->getSide(), which calls Position::fromObject(parent::getSide()). This is stupid because the update logic doesn't require Positions anywhere (as evidenced by this change needing no other alterations.
A rough profile shows that this improves setBlock() performance by about 25% in the update=true case, which is a pretty big margin.
As an added bonus, it gets rid of some unrealized cyclic dependencies in World->changedBlocks.
2021-11-02 03:00:00 +00:00
0f6b7e48cb
Updated BedrockProtocol:
...
it's weirdly satisfying that LevelChunkPacket::create() with the extra parameter turns out to be exactly the same length as the old way.
2021-11-02 01:37:56 +00:00
f2912fcdd8
Updated pocketmine/log and pocketmine/log-pthreads (BC breaks included)
...
AttachableLogger deals with Closures now instead of LoggerAttachment objects
ThreadedLoggerAttachment no longer implements LoggerAttachment
2021-11-01 22:22:22 +00:00
f6cb4f9597
Updated BedrockProtocol
2021-11-01 21:32:02 +00:00
54442f7e4b
Merge branch 'stable'
2021-11-01 21:18:35 +00:00
5257755dc5
shut
2021-11-01 21:15:58 +00:00
8c16ecaa5b
Merge branch 'stable'
2021-11-01 21:08:32 +00:00
3214da8642
pthreads 4.0.0
2021-11-01 21:01:59 +00:00
f827a555d5
Merge branch 'stable'
2021-11-01 18:13:24 +00:00
61145baded
Merge commit 27ae959e8
2021-11-01 17:42:31 +00:00
4d54d6c552
Merge commit f8f39687e2
2021-11-01 17:41:47 +00:00
485bc2c565
Merge commit 94737934de
2021-11-01 17:41:10 +00:00
07b4f844a9
Merge commit debb469de1
2021-11-01 17:40:40 +00:00
19e5775f6b
Merge commit 73dc0598e4
2021-11-01 17:40:06 +00:00
804fb3f603
Merge commit 141fbde660
2021-11-01 17:39:40 +00:00
6175b03433
Merge commit 69952ae2af
2021-11-01 17:36:34 +00:00
a78248a19c
Merge commit '71f2a34616961d6328f06fd911b6d4450a61643e'
2021-11-01 17:33:02 +00:00
414ccb9f10
Merge commit 'd17cd658030e66009c0bb32941387c7444d3ffe0'
2021-11-01 17:31:05 +00:00
794142fe49
Merge l7/l8/l9 baselines into actual-problems
...
it doesn't serve any practical purpose to keep these separated, particularly since it's getting so difficult to figure out which errors are coming from which levels (since we always use 9, it doesn't really make any difference).
2021-11-01 17:27:31 +00:00
ff27c5f7db
PHPStan 1.0.0
2021-11-01 17:24:20 +00:00
4d4362801f
AvailableCommandsPacket: remove dead code
2021-11-01 17:01:26 +00:00
0babe0a1ab
LevelDB: remove unused private method
2021-11-01 16:55:05 +00:00
d696ebcda3
Level: do not use static:: to access levelIdCounter
...
the field is private.
2021-11-01 16:52:27 +00:00
c3768b997a
Updated to pmmp/BedrockProtocol@146498c279
2021-11-01 16:13:33 +00:00
f6480017ce
Update PHPUnit dependency junk
2021-11-01 16:12:37 +00:00
9f5c16bc46
Projectile: use closure instead of do/while for reading id/data of block
...
not ideal, but whatever I guess... this at least provides scope isolation
2021-11-01 15:56:28 +00:00
8865bb73ba
BanEntry: remove useless do/while
2021-11-01 15:52:55 +00:00
2dee1dbc28
Remove ridiculous code in ResourcePackManager
2021-11-01 15:41:21 +00:00
0f0b6f0efa
Utils: eliminate usages of backtick operator
2021-11-01 15:25:56 +00:00
d5f13d8be2
Timezone: make PHPStan 1.0 happy
2021-11-01 15:24:16 +00:00
27ae959e89
Terminal: backport shell_exec() code from PM4 to make PHPStan 1.0 happy
2021-11-01 15:23:36 +00:00
f8f39687e2
Achievement: declare proper type for $list static property
2021-11-01 15:22:33 +00:00
94737934de
PlayerDeathEvent: fixed LSP violation reported by PHPStan 1.0
2021-11-01 14:17:54 +00:00
debb469de1
Updated PHPUnit dependency junk
2021-11-01 13:54:04 +00:00
616eb0050d
World: remove premature optimisation of setBlockAt() introduced by ece28e5d7b
...
closes #4531
it turns out that letting the light updates themselves handle this is faster than trying to get in the way.
2021-11-01 02:34:44 +00:00
9d30bc8b95
World: fixed assertion failure when requesting, cancelling, and then re-requesting chunks via requestChunkPopulation()
...
if the request/cancel/re-request happens all in the time before the queue gets drained, chunk hashes may appear multiple times in the queue. We don't want to process them twice if this happens (although it's mostly harmless anyway).
2021-11-01 02:17:11 +00:00
46b7d35cd3
Player: return from callback if used chunk status is not REQUESTED_GENERATION()
...
this can happen especially on large render distances when flying fast and changing direction - we decide we don't want the chunk, then, after changing direction and re-ordering chunks, we decide we do want it again, and end up registering a second callback. In this case, we need to ensure that only one of the callbacks gets executed (it doesn't matter which one).
2021-11-01 01:45:49 +00:00
c781efcf90
World: avoid calling the same logic twice in requestChunkPopulation()
...
orderChunkPopulation() checks the preconditions too. Have them both call an internal function that doesn't.
2021-11-01 00:36:57 +00:00
e4a54f5b6a
World: deduplicate code in request/orderChunkPopulation
2021-11-01 00:33:18 +00:00
afb54f1ae4
World: flip orderChunkPopulation() condition around
...
this makes it more obvious that the code is similar to requestChunkPopulation() barring one distinct difference.
2021-11-01 00:25:30 +00:00
8f803df511
World: check population locks _after_ checking if the chunk is already populated, not before
...
this led to another case where a population request would be queued up for an already-populated chunk for no reason.
2021-10-31 23:54:27 +00:00
f4a3c40b5c
World: use better variable names in orderChunkPopulation()
2021-10-31 23:48:00 +00:00
9dec82cdbc
World: fixed requestChunkPopulation() queuing requests for chunks which are already populated
...
this led to chunk sending getting bogged down if there were more than population-queue-size chunks waiting to be generated.
2021-10-31 23:40:34 +00:00
74031d2fbe
World: remove the fulfilled promise from the population request map
...
fixes crash when unregistering chunk loaders
2021-10-31 23:05:12 +00:00
bd60e41268
Revert "Revert "Player: do not re-request the same ungenerated chunks multiple times""
...
This reverts commit 3265d3f6b4
.
2021-10-31 22:57:56 +00:00
96cfdc79b8
World: fixed original promise not getting fulfilled if the chunk became populated=true after a promise was already made (but not fulfilled) to populate it
...
this could happen if a plugin calls setPopulated(true) on a chunk after a request for its population landed in the queue, but before it actually got processed. In that case, the promise would never get fulfilled.
2021-10-31 22:54:37 +00:00