1139 Commits

Author SHA1 Message Date
Dylan T.
866d473553
Merge branch 'minor-next' into feat/async-events 2024-11-29 13:49:20 +00:00
Dylan K. Taylor
12ae8dc03b
Merge branch 'stable' into minor-next 2024-11-25 14:32:30 +00:00
Dylan K. Taylor
a9787f0d99
Fix PHPStan error 2024-11-25 14:32:17 +00:00
Dylan K. Taylor
5325ecee37
Deal with a whole lot of PHPStan suppressed key casting errors
closes #6534
2024-11-25 14:30:58 +00:00
ShockedPlot7560
8338ebaffd
Add generic types for TaskHandler (#6030) 2024-11-24 14:14:34 +00:00
Dylan K. Taylor
d9080f182c
we don't need a fake server instance outside of setUp() in these tests 2024-11-20 16:44:00 +00:00
Dylan K. Taylor
1e3a858de6
Add setUp and tearDown for event unit tests 2024-11-20 16:42:50 +00:00
Dylan K. Taylor
d9f5634262
CS 2024-11-20 16:37:49 +00:00
Dylan K. Taylor
406e2c6c57
Convert integration tests to unit tests
this required mocking to get around #6524. Longer term we should make improvements to avoid the need for mocking here.
2024-11-20 16:35:20 +00:00
Dylan K. Taylor
4451770ca3
Merge branch 'minor-next' into feat/async-events 2024-11-20 15:43:17 +00:00
Dylan K. Taylor
844ba0ff9f
Move event test fixtures to a subdirectory 2024-11-20 15:40:34 +00:00
Dylan K. Taylor
49bdaee930
Move event handler inheritance test to PHPUnit using mock objects
this is dodgy and we shouldn't rely on it long term.

relates to #6524
2024-11-20 15:38:51 +00:00
Dylan T.
9195c88670
ConsoleReader: Use proc_open()'s socket support to send commands back to the main server process (#5273)
Support for this was introduced in PHP 8.0, though not mentioned in any changelog: php/php-src#5777

This simplifies the subprocess handling considerably. However, there is a potential for problems if PHP generates any E_* errors, since these get written to STDOUT as well.
To avoid error messages being treated as a command, a hash is attached to each IPC message, seeded with an incrementing counter. This prevents error messages causing command replays or unintended commands.

Unfortunately, PHP doesn't support binding pipes other than stdin/stdout/stderr on Windows for the child process, so we have to use stdout for this. In the future, if it becomes possible, a dedicated pipe for the purpose should be introduced. We'd need something like php://fd/<number> to work on Windows.
2024-11-20 14:56:52 +00:00
Dylan T.
33a7b46329
Use reflection to locate BlockTypeIds and ItemTypeIds for VanillaBlocks/VanillaItems (#6498)
Use reflection to locate BlockTypeIds and ItemTypeIds for VanillaBlocks/VanillaItems

Since BlockTypeIds and ItemTypeIds are derived from VanillaBlocks and VanillaItems respectively anyway (they only exist to allow identifying blocks/items without having to create instances of them), this hack is probably OK, and reduces the chances of mistakes.
Previously it was explored to have these IDs generated by auto-incrementing in VanillaBlocks/Items and have the constants generated that way, but this proved to be too problematic because of unstable diffs no matter how we chose to sort the elements. See #6313 for previous research on the subject.

This is obviously not a desirable hack to keep long-term. In the future it will probably make sense to redesign VanillaBlocks like so:

enum VanillaBlocks { ... }
VanillaBlocks::STONE (the type ID)
VanillaBlocks::STONE->new() (to create a block)

However, more research is needed on this, as I'd prefer not to make block creation any more verbose.
2024-11-14 17:32:22 +00:00
Dylan K. Taylor
667656b1c6
Split AsyncHandlerListManager
this allows further code deduplication at the expense of needing 2 calls to unregister all handlers
2024-11-13 22:08:28 +00:00
Dylan K. Taylor
ac1cf73f8e
Reduce code duplication 2024-11-13 21:09:52 +00:00
Dylan K. Taylor
96989d1dc4
cleanup 2024-11-13 20:44:35 +00:00
Dylan K. Taylor
8aed5d6b27
Handler inheritance is now working
this code should also perform somewhat better
2024-11-13 20:35:14 +00:00
Dylan K. Taylor
fa796535ff
ah hello my old friend, impossible-generics.neon
propagating generics all the way through the likes of HandlerList etc is more trouble than it's worth.
2024-11-13 19:09:52 +00:00
Dylan K. Taylor
32b1d6c0c2
Fixed test code
the test still doesn't pass, but at least it's actually testing the problem now...
2024-11-13 18:52:56 +00:00
Dylan K. Taylor
6f40c6fc1d
CS 2024-11-13 18:49:58 +00:00
Dylan K. Taylor
cb2fadeb26
Fixed bug in concurrency integration test 2024-11-13 18:47:46 +00:00
Dylan K. Taylor
a14afb4bb5
Add integration tests
most of these are failing - needs to be investigated
2024-11-13 18:39:14 +00:00
Dylan K. Taylor
48d2430064
Update PHPStan baseline 2024-11-13 14:58:09 +00:00
Dylan K. Taylor
86fb041a65
Merge branch 'minor-next' of github.com:pmmp/PocketMine-MP into feat/async-events 2024-11-13 14:46:32 +00:00
Dylan K. Taylor
72fc138631
Regenerate PHPStan baselines 2024-11-03 14:43:34 +00:00
Dylan K. Taylor
c63d0ef1b6
Fix dodgy ignored PHPStan error 2024-11-03 14:43:34 +00:00
Dylan K. Taylor
22718c4971
Add support for specialized flattenedProperties in schema format 2024-10-24 16:12:28 +01:00
IvanCraft623
4e6b34f573
Implement new 1.21 copper blocks (#6366)
Added the following new blocks:
- All types of Copper Bulb
- All types of Copper Door
- All types of Copper Trapdoor
- All types of Chiseled Copper
- All types of Copper Grate
2024-09-24 21:25:10 -05:00
github-actions
a4a07a8e5a Merge 'stable' into 'minor-next'
Automatic merge performed by: https://github.com/pmmp/RestrictedActions/actions/runs/10986731877
2024-09-23 02:36:00 +00:00
zSALLAZAR
bdbcfd10cc
Add ShellCheck (#6407)
Co-authored-by: IvanCraft623 <57236932+IvanCraft623@users.noreply.github.com>
2024-08-19 22:52:51 +01:00
IvanCraft623
787afb6b00
Implement all new 1.21 tuff blocks (#6391) 2024-07-23 11:34:46 -05:00
ipad54
2ffc38c835
Implement campfire & soul campfire (#4696) 2024-07-07 15:01:34 -05:00
ShockedPlot7560
b276133003 Merge remote-tracking branch 'origin/minor-next' into feat/async-events 2024-07-02 13:44:36 +00:00
Dylan K. Taylor
0ec8465fcf
shut! 2024-06-13 18:43:10 +01:00
Dylan K. Taylor
f121654452
Assemble 1.21.0 2024-06-13 18:41:41 +01:00
Dylan K. Taylor
e30e27dd57
Fix CS 2024-04-03 15:43:43 +01:00
Dylan K. Taylor
f013079ff6
Fixed MainLogger BC break 2024-04-03 15:31:37 +01:00
Dylan K. Taylor
de6a91dabc
Rework consistency check to tolerate dynamic type IDs
we don't actually care about the specific values, only whether all the blocks and their states have been correctly registered.
I'd prefer to track all of the state data permutations, but the APIs for that are private, so tracking the number of permutations will have to suffice (this should be good enough to detect bugs anyway, and also takes way less space).
2024-04-01 18:44:01 +01:00
Dylan K. Taylor
981f49ff56
CS 2024-03-15 18:03:44 +00:00
Dylan K. Taylor
f527a4c8fe
Added --no-log-file command line option
while this would be more user-friendly as a config option, configs are a pain because they aren't initialized until after the server log has already been set up.
In any case, I foresee that people will likely want to bake this into Dockerfiles directly anyway.
2024-03-15 17:53:50 +00:00
Dylan T
7148c7a222
Log rotate (#4032)
`server.log` is not rotated by default and grows unmanageably large, to the point where it's so huge that it's not possible to read it with any standard text editor anymore.

This PR implements automatic log rotation. 
- When the `server.log` reaches 32MB in size, it's moved to the `log_archive/` folder of the server's data folder.
- The archive's file name will look something like this: `server.2024-03-15T15.26.24.0.log`
- The file's name contains the date and time when the file was archived. This may be useful if you're trying to find logs from a particular time frame.

This has several benefits:
- Much more easily find logs from a particular time frame without scrolling through GBs of logs
- Free up space without stopping the server - Archived log files in `log_archive/` can be safely deleted and/or modified while the server is running

If you want to automatically compress or clean up the log files, I suggest an external cron job or disk watcher.

Closes #4029.
2024-03-15 16:44:37 +00:00
Dylan K. Taylor
8d7f1a8557
BlockStateUpgraderTest: fixed tests for 7ff0ae19d65e3b3029246b51de0e361cee6a1a01 2024-03-13 18:35:07 +00:00
Jason Wynn
90409b50d1
Allow offering different resource packs to different players (#6249)
closes #6248
2024-03-01 14:53:59 +00:00
Dylan K. Taylor
d211392b67
Merge remote-tracking branch 'origin/stable' into minor-next 2024-02-12 11:46:48 +00:00
Dylan K. Taylor
fe06bfcda0
Import alias cleanup courtesy of newest php-cs-fixer 2024-02-07 12:50:37 +00:00
ShockedPlot7560
6bb84bc46c
Add Promise::all (#6152) 2024-02-06 12:42:24 +00:00
ShockedPlot7560
d6b7a9ed45
merge remote tracking upstream 2024-01-21 11:28:24 +01:00
ShockedPlot7560
64bbff6286
Merge remote-tracking branch 'upstream/minor-next' into feat/async-events 2024-01-21 11:25:37 +01:00
Dylan K. Taylor
8372c9efc2
Merge branch 'stable' into minor-next 2024-01-09 12:27:25 +00:00