Commit Graph

13119 Commits

Author SHA1 Message Date
ipad54
26df37e6ef Minecart: fixed max stack size to match vanilla (#5051) 2022-05-20 16:57:48 +01:00
Dylan K. Taylor
554f96bc24 InventoryManager: Defer opening new windows to the client until the window close handshake has been completed
fixes #5021 and probably a bunch of other inventory related glitches

When the server initiates a window close, it does so by sending a ContainerClose to the client, which causes the
client to behave as if it initiated the close itself. It responds by sending a ContainerClose back to the server,
which the server is then expected to respond to.

Sending the client a new window before sending this final response creates buggy behaviour on the client, which
is problematic when switching windows. Therefore, we defer sending any new windows until after the client
responds to our window close instruction, so that we can complete the window handshake correctly.

This is a pile of complicated garbage that only exists because Mojang overengineered the process of opening and
closing inventory windows.
2022-05-20 16:54:15 +01:00
ShockedPlot7560
6482aa7c64 Block: introduce logic for face support types (#4886)
fixes #4856
fixes #458
fixes #4529
fixes #3299

Added API method Block::getSupportType(Facing) : SupportType
Added SupportType enum
fixes torch, lantern, door etc. placement on slabs and upside-down stairs
2022-05-20 15:18:34 +01:00
Dylan K. Taylor
6d941640a9 Merge branch 'stable' into next-minor 2022-05-20 11:14:59 +01:00
Dylan K. Taylor
0ea3861d43 Fixed paintings not working in newly generated worlds
Paintings would not work unless at least one entity was loaded from disk
(or saved).
2022-05-20 11:13:14 +01:00
Dylan K. Taylor
df3a69dcb7 Modernize private property declarations in Threaded classes
I previously avoided this due to being unsure of the effects; however, it's clear that we already use typed properties on Threaded things in other places anyway, and the only known issues are with uninit properties, and arrays.
2022-05-17 22:42:18 +01:00
Dylan K. Taylor
d4b7f66e15 Promote some constructors 2022-05-17 22:34:58 +01:00
Dylan K. Taylor
8e767da29e Modernize some final remaining private property declarations 2022-05-17 21:55:57 +01:00
Dylan K. Taylor
c0b15de504 Modernize private static property declarations 2022-05-17 21:55:16 +01:00
Dylan K. Taylor
1d5430937f Modernize private property declarations in src/timings 2022-05-17 21:54:45 +01:00
Dylan K. Taylor
9de88aa734 Modernize private property declarations in src/scheduler 2022-05-17 21:53:38 +01:00
Dylan K. Taylor
9e59819f06 Modernize private property declarations in src/resourcepacks 2022-05-17 21:52:07 +01:00
Dylan K. Taylor
c60311617d Modernize private property declarations in src/plugin 2022-05-17 21:37:45 +01:00
Dylan K. Taylor
7bc3dcdefd Modernize private property declarations in src/player 2022-05-17 21:36:51 +01:00
Dylan K. Taylor
22edca610c Modernize private property declarations in src/permission 2022-05-17 21:28:42 +01:00
Dylan K. Taylor
6eac2ea7a5 Modernize private property declarations in src/network 2022-05-17 21:22:33 +01:00
Dylan K. Taylor
cd016bedce Network: Improve typeinfo for PHPStan on bannedIps 2022-05-17 21:19:48 +01:00
Dylan K. Taylor
95ad3f16e1 Modernize private property declarations in src/item 2022-05-17 20:59:24 +01:00
Dylan K. Taylor
fb4d332d1a Modernize private property declarations in src/inventory/transaction 2022-05-17 20:51:22 +01:00
Dylan K. Taylor
a06b9294df Modernize private property declarations in src/inventory 2022-05-17 20:49:12 +01:00
Dylan K. Taylor
221c6b8570 Remove useless @var 2022-05-17 20:46:24 +01:00
Dylan K. Taylor
eb95e2a97e Modernize private property declarations in src/event 2022-05-17 20:45:50 +01:00
Dylan K. Taylor
ec6769a6fc Modernize private property declarations in src/entity 2022-05-17 20:42:17 +01:00
Dylan K. Taylor
343a12626e Modernize private property declarations in src/data 2022-05-17 20:35:59 +01:00
Dylan K. Taylor
d11d77d328 Modernize private property declarations in src/crash 2022-05-17 20:35:24 +01:00
Dylan K. Taylor
20eb80fc9a Modernize private property declarations in src/console 2022-05-17 20:34:55 +01:00
Dylan K. Taylor
071067effb Fixed flower pot accepting any block 2022-05-17 20:30:02 +01:00
Duo Incure
89cc449808 Update exhaustion values for 1.18.30 (#5034) 2022-05-17 18:28:19 +01:00
ipad54
1e59679ec2 Implemented Stonecutter (#4732) 2022-05-17 16:01:03 +01:00
Dylan T
8b8560a701 Added PlayerPostChunkSendEvent (#4937)
this is primarily useful for debugging plugins, but could also be useful for other things, such as spawning fake blocks, particles, etc.
2022-05-17 15:40:01 +01:00
Dylan K. Taylor
8b1bd5b7ff World: do not hardcode length of day in computeSunAnglePercentage() 2022-05-16 18:17:32 +01:00
Dylan K. Taylor
4dbac79e86 Merge branch 'stable' into next-minor 2022-05-16 18:02:25 +01:00
Dylan K. Taylor
5abc7f866a 4.3.4 is next 2022-05-16 17:50:41 +01:00
Dylan K. Taylor
9dc2a01c2e Release 4.3.3 2022-05-16 17:50:29 +01:00
Dylan K. Taylor
7c3b78b0a0 ItemFactory: fix missing registration for dead coral fans
closes #5032

this is evidently not an ideal solution, and something more dynamic would be preferred so that we don't have to manually register an item for every permutation.
2022-05-13 13:53:28 +01:00
Dylan T
52e74296de Stop the server if any plugin failed to load or enable (#4951)
closes #3080 

If plugins fail to load for some reason, it's highly likely that some critical functionality of the server is compromised. For example:
- if an NPC plugin fails to load, all custom entities added by that plugin will be deleted from worlds
- if a world protection plugin fails, players will be able to grief your otherwise immutable lobby map
- if a worldgen plugin fails, worlds using custom generators won't load
- if a permission plugin fails, players might have access to commands and features they aren't supposed to have
- the list goes on...

This change makes the server commit graceful suicide if any plugin fails to load for error-related reasons, including (but not limited to):
- Incompatible API version
- Missing dependencies
- Invalid plugin.yml
- Invalid main class

Plugins prevented from loading by `plugin_list.yml` are not considered errors and **are not** included in this change. If a plugin is disallowed from loading due to the `plugin_list`, the server will continue to run as if the plugin was not present.
2022-05-11 20:43:38 +01:00
Dylan K. Taylor
3b7e274c34 Server: localize 'forcing server shutdown' message 2022-05-11 14:54:29 +01:00
Dylan K. Taylor
db6abfb227 Stop the server if generators specified for new worlds are not valid
I thought I did this already in eff856d8e5, but it looks like my brain slipped a gear.

Without this change, it's possible to crash the server by specifying an invalid generator for the default world if it doesn't yet exist.
2022-05-11 14:35:20 +01:00
Dylan K. Taylor
9ff1bf6deb Merge remote-tracking branch 'origin/stable' into next-minor 2022-05-11 13:12:45 +01:00
Dylan K. Taylor
212c94ce98 PluginManager: Log an error message when a plugin disables itself during enabling 2022-05-11 13:07:45 +01:00
Dylan K. Taylor
3e1246acff FormattedCommandAlias: Invoke commands directly with pre-parsed arguments
this resolves a range of issues with quoted arguments when using placeholders, as well as improving performance (no redundant combine -> re-parse needed).
2022-05-10 16:03:09 +01:00
Dylan K. Taylor
4c29f98292 "Fix CS" are going to be my final words ... 2022-05-10 15:39:44 +01:00
Dylan K. Taylor
5cc0d92eff Fixed PHPStan errors 2022-05-10 15:38:26 +01:00
Dylan K. Taylor
a5ebbf8adb Fix CS again 2022-05-10 15:23:55 +01:00
Dylan K. Taylor
217385efb9 CommandStringHelper::parse() returns a non-empty list of strings 2022-05-10 15:22:46 +01:00
Dylan K. Taylor
f70c36baf9 SimpleCommandMap: parse config-defined commands according to the same rules as manually typed commands 2022-05-10 15:21:39 +01:00
Dylan K. Taylor
d2e421c424 CommandStringHelper: fixed backslashes not being removed from escaped quotes
this time, without breaking eval commands ... stripslashes likes to strip ALL backslashes, whether they are actually escaping something or not, which is super annoying.
2022-05-10 15:09:57 +01:00
Dylan K. Taylor
6da53536ca Merge branch 'next-minor' of github.com:pmmp/PocketMine-MP into next-minor 2022-05-10 14:30:21 +01:00
Duo Incure
1da6aa40f8 Leaves: drop sticks with a 2% chance (#5019)
as per vanilla
2022-05-10 14:17:18 +01:00
Dylan K. Taylor
a913736235 fix CS 2022-05-10 14:13:01 +01:00