15085 Commits

Author SHA1 Message Date
Dylan K. Taylor
433bd6a8aa
5.16.1 is next 2024-06-13 18:55:21 +01:00
Dylan K. Taylor
22a1549998
Release 5.16.0 2024-06-13 18:55:18 +01:00
Dylan K. Taylor
f121654452
Assemble 1.21.0 2024-06-13 18:41:41 +01:00
Vega Nicholas S
4c418b4318
Remove unnecessary return statement (#6350) 2024-05-31 16:54:50 +01:00
Hugo_
f772bb7384
WoodenStairs can be a fuel (#6345) 2024-05-13 09:34:18 +01:00
Dylan K. Taylor
1b082f99e9
DefaultPermissions: fixed typo 2024-05-07 12:34:42 +01:00
Max
371eccd007
Make access modifier consistent with parent abstract class (#6341) 2024-05-07 12:02:50 +01:00
Dylan K. Taylor
12179aa03a
Merge branch 'minor-next' into major-next 2024-05-06 15:42:49 +01:00
Dylan K. Taylor
ed158f8a1b
Server: include uptime in crash restart throttle message
this makes it clearer why the wait duration is chosen instead of it looking random.
2024-04-29 16:36:14 +01:00
Dylan K. Taylor
d70a7d34a7
Living: don't knockback or do hurt FX when attacked during cooldown
players were switching from a weaker tool to a stronger one to get double knockback in PvP.
while it's intended that we don't cancel the second attack during hit cooldown if the damage is
higher (the first damage is subtracted to prevent doubling up), we don't want them to get double
knockback.
this behaviour now matches vanilla to the best of my observations.

Come at me PvP community... I know some people are going to hate this change
2024-04-29 15:51:43 +01:00
Dylan K. Taylor
be6754494f
5.15.1 is next 2024-04-25 11:52:31 +01:00
Dylan K. Taylor
d273ccf87c
Release 5.15.0 2024-04-25 11:52:30 +01:00
Dylan K. Taylor
10238d7934
Removed beta change 2024-04-25 11:39:09 +01:00
Dylan K. Taylor
6077748caa
Changes for 1.20.80 2024-04-25 11:31:41 +01:00
Dylan K. Taylor
37322e0d50
Armor: only make sound when the item was equipped by player action
this ensures the greatest amount of consistency with vanilla.

in order to prevent the sounds being broadcasted on armor damage with the old method, we'd also have to sacrifice the sound when replacing one leather helmet with another, for example.
this approach minimizes the gameplay impact at the possible expense of plugins.

closes #6325
2024-04-08 14:05:47 +01:00
Dylan K. Taylor
55cf24aa02
5.14.2 is next 2024-04-05 18:41:27 +01:00
Dylan K. Taylor
3590d84d03
Release 5.14.1 2024-04-05 18:41:27 +01:00
Dylan K. Taylor
68f8fa8caf
Update pmmpthread required version 2024-04-05 18:40:43 +01:00
Dylan K. Taylor
1ad190024a
5.14.1 is next 2024-04-05 18:16:22 +01:00
Dylan K. Taylor
769a149057
Release 5.14.0 2024-04-05 18:16:19 +01:00
Dylan K. Taylor
16f29c775e
tools/generate-blockstate-upgrade-schema: added support for generating newFlattenedName with value transforms
as seen in pmmp/BedrockBlockUpgradeSchema@ebd768e5b2, this enables use of newFlattenedName in more places (by allowing the flattened values to be transformed before building the new ID), as well as reducing the number of remappedStates in general by compacting stuff which was partially transformed like color silver -> light_gray.
2024-04-05 17:13:38 +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
11fbc8db6f
Make use of pmmpthread 6.1.0 for Thread::getRunningCount()
ThreadManager doesn't count these correctly anymore since pmmpthread since thread-safe statics aren't copied anymore.
2024-04-02 19:40:44 +01:00
Dylan K. Taylor
98380e46bf
Ignore non-fatal error types in crash handlers
ErrorToExceptionHandler currently prevents these from appearing by turning them into exceptions, but this won't always be the case.
For example, in the future we may not want to turn ALL types of E_* errors into exceptions (e.g. E_DEPRECATED).
2024-04-02 19:22:40 +01:00
Dylan K. Taylor
dad9a7e6cd
Merge branch 'stable' into minor-next 2024-04-02 16:35:31 +01:00
Dylan T
d5919dc094
... 2024-03-25 17:24:52 +00:00
Dylan T
09904dc519
workaround for callback-validator not understanding arrow functions 2024-03-25 14:58:21 +00:00
ipad54
f799cfaba6
Implemented sound when equipping armor (#6303) 2024-03-25 14:15:54 +00:00
ShockedPlot7560
2584314202
NetherRoots: fix placement on soul soil (#6299) 2024-03-25 10:53:16 +00:00
ipad54
337e462c8f
Added new banner patterns (#6298) 2024-03-25 10:52:21 +00:00
ipad54
b680a1693c
Added sound when picking sweet berries (#6287) 2024-03-19 10:18:30 +00:00
Dylan T
0e5395c59b
PocketMine-MP.phar self-extraction to decompressed cache (#6217)
Because ext-phar sucks, tmp gets spammed by cache files for every thread when loading files from the phar on the fly.

Instead, we convert the `.phar` into a decompressed `.tar` in the tmp directory and require files from inside it. Surprisingly, this works because `ext-phar` supports `tar` and `zip` natively. No stream wrapper is required, as the `PocketMine.php` bootstrap loads files relative to its location, so the cache is automatically used for everything.

To be honest I would rather get rid of phars entirely, but they are still the easiest way to have PhpStorm load PocketMine-MP API information for now, and the alternatives are more complicated and inconvenient.

### Caveats
Everywhere that previously used `new Phar(Phar::running(false))` in the core code needs to be updated to use `PharData` for this to work correctly. Plugins don't need to do anything.

### Why not just use `Phar::decompressFiles()`?
This requires setting `phar.readonly` to `0`, which is a security issue. Technically, we could have used a subprocess to do this, but it just didn't seem right.

### WTF? `phar://` can be used on `tar` files???
Yup. I was just as surprised to find out that `require` works in such contexts.

### Relevant issues
- Closes #6214 

## Changes
### API changes
None.

### Behavioural changes
Server startup will be slightly slower, as the phar has to decompress and convert itself into a `.tar`. However, testing showed that this generally takes less than 200 ms, so it should be barely noticeable.

## Backwards compatibility
No BC issues.

## Tests
Locally tested and the CI will also verify
2024-03-18 16:48:17 +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
e31fd122d9
BlockStateReader: micro optimize unread properties check
this has a pretty much insignificant performance impact, but reduces the cost of this check to basically 0.
2024-03-14 17:54:26 +00:00
Dylan K. Taylor
e781c64540
Merge branch 'minor-next' into major-next 2024-03-14 12:47:18 +00:00
Dylan K. Taylor
a835069564
Merge remote-tracking branch 'origin/stable' into minor-next 2024-03-14 12:47:04 +00:00
Dylan K. Taylor
b77193b987
ZlibCompressor: Increase max decompression size to accommodate larger skins
again, very annoying that we have to account for this (it makes it easier for attackers to waste CPU time and memory), but we don't really have much of a choice.
2024-03-14 12:34:30 +00:00
Dylan K. Taylor
11ca208d93
RakLib: Allow larger number of split packet parts
some persona skins are insanely bloated and get split into hundreds of parts.
it's quite annoying that we have to accommodate this, but we can't keep allowing players to experience login timeouts without an obvious indication what's wrong.
2024-03-14 12:32:26 +00:00
Dylan K. Taylor
7ff0ae19d6
BlockStateUpgrader: a simple yet hard-to-explain optimization
Prior to this commit, upgrade schemas would be applied to blockstates with the same version, as there wasn't any way to know if they should be applied or not given Mojang's tendency to forget to bump the version.
However, it occurred to me that we only need to do this if there are multiple schemas present for the same version ID, which is rarely the case.
This allows skipping costly logic for blockstates on the newest version (the common case), reducing the time taken to process the blockstate for upgrading by over 30%.
Overall, this translates into less than 10% real performance improvement for chunk loading, but it's still a worthwhile improvement.
2024-03-13 18:19:51 +00:00
Dylan K. Taylor
1de66cb0de
RegistryTrait: added fast path optimization
this reduces VanillaBlocks access time from 360 ns to 230 ns on my machine - an improvement of about 35%.
2024-03-13 17:11:06 +00:00
Dylan K. Taylor
9f3533d870
Improved logging for block decode errors
this is still noisy, but less so than before.
this also adds logging to places where it was previously missing.
2024-03-13 16:42:23 +00:00
Dylan K. Taylor
2d24fac067
5.13.1 is next 2024-03-13 14:59:21 +00:00
Dylan K. Taylor
f193a990b0
Release 5.13.0 2024-03-13 14:59:21 +00:00
Dylan K. Taylor
c11c0679e3
Fix CS 2024-03-13 14:55:54 +00:00
Dylan K. Taylor
ba48f258f3
Support for 1.20.70 2024-03-13 14:53:27 +00:00
Dylan K. Taylor
e105c9bd76
5.12.2 is next 2024-03-13 13:48:59 +00:00
Dylan K. Taylor
23f4632409
Release 5.12.1 2024-03-13 13:48:56 +00:00
Dylan K. Taylor
a6202d0442
BlockStateUpgrader: calculate output version ID in a less stupid way
this improves the performance by a conservative 10%.
2024-03-12 11:48:48 +00:00