Dylan K. Taylor
4d54d6c552
Merge commit f8f39687e221b478d3bc6bc0affcd2180b3338dd
2021-11-01 17:41:47 +00:00
Dylan K. Taylor
485bc2c565
Merge commit 94737934de12954b16c8692697f94b584f8ccb2b
2021-11-01 17:41:10 +00:00
Dylan K. Taylor
07b4f844a9
Merge commit debb469de15493218e46df42d0444bd332e0f16f
2021-11-01 17:40:40 +00:00
Dylan K. Taylor
19e5775f6b
Merge commit 73dc0598e4512166db65ddfd51bc0b51c455eaba
2021-11-01 17:40:06 +00:00
Dylan K. Taylor
804fb3f603
Merge commit 141fbde6604da5001b73db0dae86fc6f397939e0
2021-11-01 17:39:40 +00:00
Dylan K. Taylor
6175b03433
Merge commit 69952ae2aff244715b986d35c3ed041863fb39ef
2021-11-01 17:36:34 +00:00
Dylan K. Taylor
a78248a19c
Merge commit '71f2a34616961d6328f06fd911b6d4450a61643e'
2021-11-01 17:33:02 +00:00
Dylan K. Taylor
414ccb9f10
Merge commit 'd17cd658030e66009c0bb32941387c7444d3ffe0'
2021-11-01 17:31:05 +00:00
Dylan K. Taylor
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
Dylan K. Taylor
ff27c5f7db
PHPStan 1.0.0
2021-11-01 17:24:20 +00:00
Dylan K. Taylor
4d4362801f
AvailableCommandsPacket: remove dead code
2021-11-01 17:01:26 +00:00
Dylan K. Taylor
0babe0a1ab
LevelDB: remove unused private method
2021-11-01 16:55:05 +00:00
Dylan K. Taylor
d696ebcda3
Level: do not use static:: to access levelIdCounter
...
the field is private.
2021-11-01 16:52:27 +00:00
Dylan K. Taylor
c3768b997a
Updated to pmmp/BedrockProtocol@146498c279
2021-11-01 16:13:33 +00:00
Dylan K. Taylor
f6480017ce
Update PHPUnit dependency junk
2021-11-01 16:12:37 +00:00
Dylan K. Taylor
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
Dylan K. Taylor
8865bb73ba
BanEntry: remove useless do/while
2021-11-01 15:52:55 +00:00
Dylan K. Taylor
2dee1dbc28
Remove ridiculous code in ResourcePackManager
2021-11-01 15:41:21 +00:00
Dylan K. Taylor
0f0b6f0efa
Utils: eliminate usages of backtick operator
2021-11-01 15:25:56 +00:00
Dylan K. Taylor
d5f13d8be2
Timezone: make PHPStan 1.0 happy
2021-11-01 15:24:16 +00:00
Dylan K. Taylor
27ae959e89
Terminal: backport shell_exec() code from PM4 to make PHPStan 1.0 happy
2021-11-01 15:23:36 +00:00
Dylan K. Taylor
f8f39687e2
Achievement: declare proper type for $list static property
2021-11-01 15:22:33 +00:00
Dylan K. Taylor
94737934de
PlayerDeathEvent: fixed LSP violation reported by PHPStan 1.0
2021-11-01 14:17:54 +00:00
Dylan K. Taylor
debb469de1
Updated PHPUnit dependency junk
2021-11-01 13:54:04 +00:00
Dylan K. Taylor
616eb0050d
World: remove premature optimisation of setBlockAt() introduced by ece28e5d7b0d4c8d12a9477cdd1d3337277e892d
...
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
Dylan K. Taylor
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
Dylan K. Taylor
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
Dylan K. Taylor
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
Dylan K. Taylor
e4a54f5b6a
World: deduplicate code in request/orderChunkPopulation
2021-11-01 00:33:18 +00:00
Dylan K. Taylor
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
Dylan K. Taylor
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
Dylan K. Taylor
f4a3c40b5c
World: use better variable names in orderChunkPopulation()
2021-10-31 23:48:00 +00:00
Dylan K. Taylor
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
Dylan K. Taylor
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
Dylan K. Taylor
bd60e41268
Revert "Revert "Player: do not re-request the same ungenerated chunks multiple times""
...
This reverts commit 3265d3f6b4d6705276b56fab5f765e2f97b5d992.
2021-10-31 22:57:56 +00:00
Dylan K. Taylor
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
Dylan K. Taylor
2fa0a914ff
World::orderChunkPopulation() may return a pre-resolved promise
...
this does not indicate a failure; it indicates that the chunk has already been successfully populated.
In this case, we shouldn't be putting the task back on the queue.
This is skirting around the real bug, which is that requestChunkPopulation() doesn't check if the target chunk is already populated before it creates a new promise that it will be.
2021-10-31 22:51:37 +00:00
Dylan K. Taylor
08636d079d
Promise: expose isResolved()
2021-10-31 22:48:52 +00:00
Dylan K. Taylor
3265d3f6b4
Revert "Player: do not re-request the same ungenerated chunks multiple times"
...
This reverts commit 866020dfdb06434b4f361a4a0f0faf7a89c30ed2.
For some fucking reason this broke resending chunks in some cases (and
sending chunks at all in others). I don't have time to debug this right
now, so it's going to have to remain broken, infuriatingly enough.
2021-10-31 21:25:21 +00:00
Dylan T
0f78a2b5ef
Advisory chunk locking for chunk population ( #4513 )
...
this allows chunks locked for population to be modified. If the PopulationTask detects that the chunk was modified during the onCompletion(), the result of the population will be discarded and rescheduled, so that it includes user modifications.
2021-10-31 21:11:20 +00:00
Dylan K. Taylor
f1a791ef75
Improved Promise API - separate resolver and consumer APIs
...
this makes creating a promise slightly more cumbersome, but I'm more concerned about people who might try to call 'new Promise' directly.
2021-10-31 19:49:57 +00:00
Dylan K. Taylor
866020dfdb
Player: do not re-request the same ungenerated chunks multiple times
...
this doesn't affect chunk resends, since they'll be kicked back to NEEDED, which is detected by orderChunks().
2021-10-31 18:52:37 +00:00
Dylan K. Taylor
c580bb2434
InGamePacketHandler: mark player as not using item in more cases
...
fixes #4355
2021-10-31 14:41:31 +00:00
Dylan K. Taylor
4fe3f69702
World: eliminate final remaining 'no loaders attached' debug message on player creation
2021-10-31 14:33:27 +00:00
Dylan K. Taylor
018006541e
changelog: mention block-picking changes
...
[ci skip]
2021-10-31 14:12:12 +00:00
Dylan K. Taylor
fbb91d123d
World::unregisterChunkListenerFromAll(): go through unregisterChunkListener()
...
this ensures that everything gets cleaned up properly (e.g. player chunk listeners).
2021-10-31 14:03:40 +00:00
Dylan K. Taylor
3dc75644d9
World: avoid duplicated logger code in initChunk()
2021-10-31 14:02:25 +00:00
Dylan K. Taylor
1cabe4baf3
World: do not crash on duplicate tiles loaded from disk
...
closes #4049
2021-10-31 13:58:32 +00:00
Dylan K. Taylor
73dc0598e4
CrashDump: remove derp space
2021-10-30 23:22:37 +01:00
Dylan K. Taylor
faad2365e2
World: Register a temporary chunk loader on chunks used by PopulationTask
...
fixes #3839
2021-10-30 22:17:06 +01:00