Commit Graph

15816 Commits

Author SHA1 Message Date
Dylan K. Taylor
58d5126ada InventoryManager: fixed crashes when setting contents or slots of inventories during InventoryCloseEvent (and other similar logic) 2023-03-24 13:31:30 +00:00
Dylan K. Taylor
f978c1e9a0 Merge remote-tracking branch 'origin/stable' into minor-next 2023-03-22 22:45:41 +00:00
Dylan K. Taylor
0b8193aeb3 4.17.2 is next 2023-03-22 22:35:25 +00:00
Dylan K. Taylor
00286e761c Release 4.17.1 4.17.1 2023-03-22 22:35:24 +00:00
Dylan K. Taylor
db59f71130 attempt to fix ghcr.io docker image push 2023-03-22 22:29:00 +00:00
Dylan K. Taylor
b11457d605 Fixed uncaught exception when retrieving a packet from the pool 2023-03-22 22:24:25 +00:00
Dylan K. Taylor
ea386c42d3 InGamePacketHandler: fixed dropping items from unselected hotbar slots 2023-03-21 14:45:18 +00:00
Dylan K. Taylor
043e81e737 4.18.0-ALPHA3 is next 2023-03-21 00:26:19 +00:00
Dylan K. Taylor
66a4c4c88b Release 4.18.0-ALPHA2 4.18.0-ALPHA2 2023-03-21 00:26:19 +00:00
Dylan K. Taylor
1a9322c00a ItemStackRequestExecutor: added some missing @throws 2023-03-21 00:23:31 +00:00
Dylan K. Taylor
c8d9477da1 ItemStackRequestExecutor: make non-final, and make some stuff protected
this allows for plugin extension, for example to implement anvils.
2023-03-21 00:22:21 +00:00
Dylan K. Taylor
08e8ef275f remove comment 2023-03-21 00:17:24 +00:00
Dylan K. Taylor
e57fbff28c ItemStackRequestExecutor: added a sanity check for recipe repetitions 2023-03-21 00:16:03 +00:00
Dylan K. Taylor
f90315c4a2 ItemStackRequestExecutor: harden against invalid item counts
these cases should all be impossible, but that's assuming that the core code doesn't start using them for a different purpose in the future.
2023-03-21 00:13:21 +00:00
Dylan K. Taylor
955f7944bb ItemStackRequestExecutor: fixed another possible crash condition 2023-03-21 00:06:33 +00:00
Dylan K. Taylor
ccd288d7fa Avoid repeated calls to getItemInHand() in drop item handler 2023-03-21 00:04:29 +00:00
Dylan K. Taylor
097632902a InGamePacketHandler: fixed crash condition in drop item handler 2023-03-21 00:02:32 +00:00
Dylan K. Taylor
e7771d76f2 Cover buffered inventory sync in timings 2023-03-20 23:29:02 +00:00
Dylan K. Taylor
ecc830a689 InventoryManager: avoid calling TypeConverter::getInstance() in a loop 2023-03-20 23:24:52 +00:00
Dylan K. Taylor
ee72e80fbb ItemStackResponseBuilder: removed incorrect code
the client expects that all itemstacks must be acked by ItemStackResponse, regardless of whether the server changed them to some other item.
We'll overwrite the item to the correct thing at the end of the tick anyway.
2023-03-20 23:21:24 +00:00
Dylan K. Taylor
63310cf764 Do not cache ItemStacks for every item
this is very memory inefficient, and only provides a performance advantage in cold code anyway.
2023-03-20 23:18:43 +00:00
Dylan K. Taylor
1992d3b6db InventoryManager: avoid useless work in trackItemStack()
this attempts to accommodate slots being set to themselves, which is a rare enough occurrence (only plugins will cause it) that it doesn't make sense to penalize every inventory update this way.
attempting to avoid changing the itemstackID in this way is detrimental to performance, and it doesn't actually matter if we set a new itemstackID anyway.
2023-03-20 23:08:17 +00:00
Dylan K. Taylor
035a0a4e9d InventoryManager: specialize trackItemStack() to avoid useless lookups 2023-03-20 22:57:58 +00:00
Dylan K. Taylor
23ea721164 Reduce packets-per-batch limit to 100
this should be well in excess of requirements with the ItemStackRequest system in use.
2023-03-20 22:15:02 +00:00
Dylan K. Taylor
8408da8534 Merge branch 'item-stack-request' into minor-next 2023-03-20 22:05:50 +00:00
Dylan K. Taylor
c9601ae67d Fixed crash when opening crafting table and other 'UI' inventories 2023-03-20 22:00:38 +00:00
Dylan K. Taylor
758b5ee500 InventoryManager: fixed armor slots hack
the correct condition for this should be an unsynced armor slot changed during a transaction, but conveying this information to syncSlot() is a bit of a hassle, so this will do for now.
2023-03-20 21:27:56 +00:00
Dylan K. Taylor
ca6d51498f Buffer slot and content syncing until the end of the tick
we may receive multiple requests in one tick (e.g. crafting in a batch)
2023-03-20 19:16:00 +00:00
Dylan K. Taylor
e8085e22a0 Fixed crash when opening main inventory
the InventoryManagerEntry was getting overwritten, since we don't expect to open the same inventory with two different window IDs.
2023-03-20 18:40:18 +00:00
Dylan K. Taylor
a83fc85f1e InventoryManagerEntry: fixed missing default 2023-03-20 17:32:44 +00:00
Dylan K. Taylor
3d70a169e1 Reduce chaos in InventoryManager
the information in these arrays is usually needed all at the same time, so it doesn't make sense to force multiple array lookups for it.

in addition, this (obviously) cleans up the code quite a lot.
2023-03-20 17:31:54 +00:00
Dylan K. Taylor
6ccb8f7373 git 2023-03-20 16:57:38 +00:00
Dylan K. Taylor
59bae9b077 Give InventoryManager internals clearer names
and stop mixing 'window' and 'inventory' terminology...
2023-03-20 16:53:57 +00:00
João
2751e1ec02 replacing new Vector3(0, 0, 0) with Vector3::zero() (#5640) 2023-03-20 12:54:28 +00:00
Dylan K. Taylor
c91168db66 ... 2023-03-20 01:35:15 +00:00
Dylan K. Taylor
4e55433ed8 Fixed request rejecting 2023-03-20 01:35:03 +00:00
Dylan K. Taylor
eece6c4433 InGamePacketHandler: remove dead code 2023-03-20 01:28:18 +00:00
Dylan K. Taylor
67b7b60d18 .............. 2023-03-20 01:19:07 +00:00
Dylan K. Taylor
804feedb67 Added some dumb limits 2023-03-20 00:54:33 +00:00
Dylan K. Taylor
d57aca1367 CS 2023-03-20 00:53:00 +00:00
Dylan K. Taylor
7b0816e42f Properly handle transaction building errors instead of kicking the player 2023-03-20 00:52:26 +00:00
Dylan K. Taylor
4864444440 Added CraftingManager::getCraftingRecipeFromIndex() 2023-03-19 22:14:23 +00:00
Dylan K. Taylor
52ea4feac0 Updated pocketmine/locale-data 2023-03-19 16:53:02 +00:00
Dylan K. Taylor
01d557062a Remove dead baseline 2023-03-19 16:41:01 +00:00
Dylan K. Taylor
a619fd2be6 Scrub PHPStan baselines 2023-03-19 16:37:38 +00:00
Dylan K. Taylor
05d9298958 PHPStan 1.10.7 2023-03-19 16:33:59 +00:00
Dylan K. Taylor
f696a5881b Merge remote-tracking branch 'origin/stable' into minor-next 2023-03-19 16:23:09 +00:00
Dylan K. Taylor
419962d3a2 Added timer for player-specific movement code
players use an entirely different pathway for movement processing, which could be costly.
2023-03-19 16:12:47 +00:00
Dylan K. Taylor
054c06fab9 Add specialized entityBaseTick timer for item entities
since item merging is a potential hotspot, we want to know if this code section is a performance problem.
Current timers only tell us whether overall ticking of a particular entity is slow, but that includes movement and therefore isn't particularly helpful.
2023-03-19 15:59:06 +00:00
Dylan K. Taylor
7bc5d8c824 Rename more timers 2023-03-19 15:57:36 +00:00