15080 Commits

Author SHA1 Message Date
Sergi del Olmo
f349ce75e4
Player: add ability to get & set flight speed multiplier (#6076)
Since this doesn't directly correspond to flight speed (it's multiplied by different values depending on whether sprinting or not, and possibly other states), "multiplier" was preferred instead of directly calling it flight speed.

Default value is 0.05.
2025-01-09 20:13:46 +00:00
Dylan K. Taylor
847ae26cad
PHPStan: don't remember possibly-impure function return values
I don't think we get much benefit from this, and the assumption that functions with a return value are pure is sketchy.
In any case, it's better to avoid these repeated calls anyway.
2025-01-08 02:04:06 +00:00
Dylan K. Taylor
d42ec06647
ZippedResourcePack: don't pass exception code to new exception
this is a BUT (int|string) under PHPStan, and we don't need the errors. We don't care about this code anyway.
2025-01-08 01:48:55 +00:00
Dylan K. Taylor
5e0f03dff0
Stub PalettedBlockArray functions that work with arrays
and workaround PHPStan stupidity
2025-01-08 01:48:15 +00:00
Dylan K. Taylor
4a83920db9
PlayerPreLoginEvent: improve array type info 2025-01-08 01:47:04 +00:00
Dylan K. Taylor
0a16daa619
Avoid dodgy array_flip hash building
the conventional way is using array_keys and array_fill_keys. Behaviour is more predictable & also avoids benevolent union fuckery from PHPStan.
2025-01-08 01:45:28 +00:00
Dylan K. Taylor
e8c4b743b5
LevelDB: stop overriding types from NBT
NBT has better quality type info already
2025-01-07 22:54:10 +00:00
Dylan K. Taylor
794641c0f8
Utils: split some horrifying code across multiple lines 2025-01-07 22:35:19 +00:00
Dylan K. Taylor
9633b7d8a7
Update to PHPStan 2.x 2025-01-07 22:34:43 +00:00
Dylan K. Taylor
d69a887b0d
Utils: fix parameter doc for printableExceptionInfo() 2025-01-07 22:24:26 +00:00
Dylan K. Taylor
b1c7fc017a
CS 2025-01-07 22:13:20 +00:00
Dylan K. Taylor
cd59e272bc
PHPStan 2.0 fixes 2025-01-07 22:10:42 +00:00
Dylan K. Taylor
7b1b35ab1f
generator: fixup issues reported by PHPStan 2.0 2025-01-07 22:07:38 +00:00
Dylan K. Taylor
28d31c97f8
Server: fixup PHPStan 2.x reported issues 2025-01-07 22:05:01 +00:00
Dylan K. Taylor
a17512de93
Command: don't trust plugins not to pass junk 2025-01-06 23:26:13 +00:00
Dylan K. Taylor
601be3fb33
stfu 2025-01-06 23:09:26 +00:00
Dylan K. Taylor
2e32c50670
NetworkSession: apparently aliases are already a list at this point??? 2025-01-06 23:08:48 +00:00
Dylan K. Taylor
d1fa6edc50
InGamePacketHandler: fix weak comparisons 2025-01-06 23:08:18 +00:00
Dylan K. Taylor
a1ba8bc3da
NetworkSession: improve PHPDoc types 2025-01-06 23:07:54 +00:00
Dylan K. Taylor
73edb8799d
SignalHandler: fixed dodgy setup logic 2025-01-06 23:06:19 +00:00
Dylan K. Taylor
9592f066f3
PHPDoc: Restrict ReversePriorityQueue to numeric priorities 2025-01-06 23:05:49 +00:00
Dylan K. Taylor
db9ba83001
Make some assumptions about proc_open() 2025-01-06 23:05:06 +00:00
Dylan K. Taylor
1b2d2a3fe1
plugin: improve PHPDocs and type compliance 2025-01-06 23:04:00 +00:00
Dylan K. Taylor
357dfb5c7e
Fixed build 2025-01-06 23:01:14 +00:00
Dylan K. Taylor
0358b7dce4
utils: avoid weak comparisons 2025-01-06 22:53:35 +00:00
Dylan K. Taylor
97c5902ae2
Internet: make postURL() error reporting behaviour more predictable
err is now always set to null when doing a new operation.

previously, if the same var was used multiple times and a previous one failed,
code might think that a previous error belonged to the current operation.
2025-01-06 22:52:05 +00:00
Dylan K. Taylor
9a130bce32
Config: remove bad assumptions about string root keys
these could just as easily be integers and the code should still work.
2025-01-06 22:50:25 +00:00
Dylan K. Taylor
b6bd3ef30c
Improve PHPDocs in world package 2025-01-06 22:46:16 +00:00
Dylan K. Taylor
c5a1c15389
TimingsCommand: beware crash on invalid timings server response 2025-01-06 22:44:17 +00:00
Dylan K. Taylor
e30ae487dc
SimpleCommandMap: ensure we always pass a list to Command::setAliases()
some offsets may have been removed if the alias failed to be registered.
2025-01-06 22:44:17 +00:00
Dylan K. Taylor
59f6c85105
Command: mark execute $args as being list<string> 2025-01-06 22:44:17 +00:00
Dylan K. Taylor
90f0b85d2e
Eliminate weak comparisons in entity package
Weak comparisons were used in cases when we were worried about comparing int and float.

In some cases (particularly involving Vector3) we do need to be wary of this, so floatval() is used to avoid incorrect type comparisons.
In other cases, we were already exclusively comparing float-float, so weak compare wasn't needed anyway.
2025-01-06 22:44:17 +00:00
Dylan K. Taylor
8ee70b209e
MemoryDump: fix PHPDoc types 2025-01-06 22:44:16 +00:00
Dylan K. Taylor
5c905d9a95
BlockBreakInfo: use strict comparison
weak compare isn't needed here since this can be float/float
2025-01-06 22:44:16 +00:00
Dylan K. Taylor
8b23231537
Fixup PHPDoc for blocks 2025-01-06 22:44:16 +00:00
Dylan K. Taylor
3da0b82b86
Merge branch 'stable' into minor-next 2025-01-03 19:26:45 +00:00
Dylan K. Taylor
da62eb9f33
... 2025-01-03 19:26:24 +00:00
pmmp-admin-bot[bot]
8cea4c13c4 Merge 'stable' into 'minor-next'
Automatic merge performed by: https://github.com/pmmp/RestrictedActions/actions/runs/12487960388
2024-12-25 01:23:09 +00:00
Dylan K. Taylor
81e3730b99
Fixed crashes containing PHP internal stack frames being flagged as plugin-caused 2024-12-24 14:20:16 +00:00
Dylan K. Taylor
8a5eb71432
ChunkCache: track strings in cache directly instead of CompressBatchPromise
this reduces memory footprint slightly, but more importantly reduces GC workload.
Since it also reduces the work done on cache hit, it might *slightly* improve performance,
but any improvement is likely to be minimal.
2024-12-23 21:04:33 +00:00
Dylan K. Taylor
306623e890
FormatConverter: do periodic GC
this reduces the risk of OOM during conversion of large worlds
we probably ought to limit the size of region caches for regionized worlds, but that's a problem for another time.
2024-12-21 17:49:03 +00:00
Dylan K. Taylor
ada3acdba4
FormatConverter: ensure we don't get stalled due to stdout buffer flood
this can happen due to very noisy outputs during conversion, e.g. if there were many unknown blocks.
2024-12-21 17:49:03 +00:00
Dylan K. Taylor
fea17fa4a9
RakLibServer: disable GC
GC is not required for RakLib as it doesn't generate any unmanaged cycles.
Cycles in general do exist (e.g. Server <-> ServerSession), but these are
explicitly cleaned up, so GC wouldn't have any useful work to do.
2024-12-19 20:33:40 +00:00
Dylan T.
aee358d329
This timings handler management is a crap design
This has bitten me on the ass so many times now
2024-12-16 03:11:07 +00:00
Dylan K. Taylor
80899ea72c
Make sure timings are counted under the proper parents 2024-12-15 21:34:16 +00:00
Dylan K. Taylor
42f90e94ff
AsyncWorker now manually triggers GC at the end of each task run, similar to the main thread
this avoids costly GC runs during hot code.
2024-12-15 21:25:32 +00:00
Dylan K. Taylor
8f536e6f21
always the CS 2024-12-15 20:46:10 +00:00
Dylan K. Taylor
45482e868d
Fixed AsyncWorker GC not getting re-enabled after memory dump
async workers still use automatic GC for now. We should probably switch to manual GC at some point, but it's not a priority right now.
2024-12-15 20:45:51 +00:00
Dylan K. Taylor
742aa46b88
Separate memory dumping utilities from MemoryManager 2024-12-15 20:44:00 +00:00
Dylan K. Taylor
cf1b360a62
World: Prevent block cache from getting too big
This has been a long-standing issue since at least 2016, and probably longer.
Heavy use of getBlock(At) could cause the cache to blow up and use all available memory.

Recently, it's become clear that unmanaged cache size is also a problem for GC, because
the large number of objects blows up the GC root buffer. At first, this causes more frequent
GC runs; later, the frequency of GC runs drops, but the performance cost of them goes up
substantially because of the sheer number of objects. We can avoid this by trimming the
cache when we detect that it's exceeded limits.

I've implemented this in such a way that failing to update blockCacheSize in new code
won't have lasting impacts, since the cache count will be recalculated during scheduled
cache cleaning anyway.

Closes #152.
2024-12-15 18:40:32 +00:00