10221 Commits

Author SHA1 Message Date
Dylan K. Taylor
11d21448fc Utils: remove dead function 2019-05-27 17:12:33 +01:00
Dylan K. Taylor
7eb8d8e366 Require Closures in more places instead of callable
Non-closure callables have strange context-dependent behaviour and are slower to call than a closure. It's possible to use Closure::fromCallable() in the origin scope, which guarantees that the callable will remain callable no matter where it's used.
2019-05-27 17:11:35 +01:00
Dylan K. Taylor
2720ff9607 Skin: debloat geometry in constructor directly 2019-05-27 16:45:55 +01:00
Dylan K. Taylor
89242543b9 Clean up Skin error handling, close #2926
Skin->__construct() now does all the validation.
2019-05-27 16:20:46 +01:00
Dylan K. Taylor
0a891f5408 Move some things out of LoginPacket and into the handler 2019-05-27 16:06:53 +01:00
SOFe
3902a3c28c Require opting into receiving cancelled events instead of opting out (#2906)
Warning for plugin developers: This is a silent BC break. It won't raise any errors.

This alters the default behaviour of event handlers to **not** receive cancelled events by default.
It is now required to opt into receiving cancelled events by using the @handleCancelled directive (or the handleCancelled parameter where it's appropriate).

The ambiguous @ignoreCancelled directive is now ignored.

Ramifications:
- The majority of handlers with `if($event->isCancelled()) return;` no longer need such checks.
- Handlers with `@ignoreCancelled true` or `@ignoreCancelled` annotations can have them removed.
- Handlers which want to receive cancelled events need to use `@handleCancelled`.
2019-05-27 15:47:58 +01:00
Dylan T
14bae72dd5
Create FUNDING.yml 2019-05-27 14:14:09 +01:00
Dylan K. Taylor
2eb498b84c ItemFactory: add getAllRegistered() 2019-05-26 19:45:47 +01:00
Dylan K. Taylor
c1a7d86670 leveldb: more historical versions 2019-05-26 19:35:18 +01:00
Dylan K. Taylor
e6048e115e leveldb: add more chunk versions 2019-05-26 18:01:24 +01:00
Dylan K. Taylor
2c40fbfe11 add some TODOs for tiles 2019-05-26 16:27:20 +01:00
Dylan K. Taylor
33d1203bfd Player: move sendAllInventories() to network layer 2019-05-26 15:58:03 +01:00
Dylan K. Taylor
85718e2750 Clean up a bunch of garbage in Furnace 2019-05-26 15:43:46 +01:00
Dylan K. Taylor
32e03cd92d DoubleChestInventory: remove duplicated code 2019-05-26 15:01:32 +01:00
Dylan K. Taylor
685f5d562b DoubleChestInventory: fixed use of void result 2019-05-26 14:48:52 +01:00
Dylan K. Taylor
d23dbc69f1 BlockFactory: Alias some classes to improve readability 2019-05-25 19:59:24 +01:00
Dylan K. Taylor
a44d47fd3c BlockFactory: Consistently use aliases to refer to tiles 2019-05-25 19:25:42 +01:00
Dylan K. Taylor
b329cac3d2 Move pocketmine\tile\* to pocketmine\block\tile\* 2019-05-25 19:23:43 +01:00
Dylan K. Taylor
066eadd687 Move responsibility of copying block-picked item NBT to Block instead of Player 2019-05-25 19:00:11 +01:00
Dylan K. Taylor
c29523baf4 added a bunch of new blocks 2019-05-24 19:59:03 +01:00
Dylan K. Taylor
54216c2fee Block: Blow away a bunch of useless classes 2019-05-24 19:38:43 +01:00
Dylan K. Taylor
d25ecbebd4 Merge branch 'stable' 2019-05-24 17:33:51 +01:00
Dylan K. Taylor
f35b43613d IronTrapdoor: fixed fuel time, closes #2914
this should be removed during branch merge.
2019-05-24 17:31:36 +01:00
Dylan K. Taylor
3d0fa10437 Stonecutter: fix hardness, close #2915 2019-05-24 17:30:20 +01:00
Dylan K. Taylor
3ea8da2dd3 Use EnumTrait->equals() instead of direct comparison
It's not guaranteed that objects provided are the same as those in the enum registry, so they can't be directly compared.

Implementing comparison with === would require some kind of __equals() implementation or an extension to hook into such functionality.
2019-05-24 17:21:44 +01:00
Dylan K. Taylor
9ce1e29a17 Player: fixed bow shooting, closes #2931 2019-05-24 15:58:00 +01:00
Dylan K. Taylor
1c99602a3f Player: give some inventory vars clearer names 2019-05-20 19:38:53 +01:00
Dylan K. Taylor
297ca25123 remove usage of inventory network IDs for marking permanent windows 2019-05-20 16:45:46 +01:00
Dylan K. Taylor
cd0f0cb66c missed this in previous commit 2019-05-20 16:45:00 +01:00
Dylan K. Taylor
d6ce3f82b1 Inventory: remove redundant return values 2019-05-20 16:30:00 +01:00
Dylan K. Taylor
c21a25efb9 move more rollback handling to network handlers, out of Player 2019-05-20 16:13:14 +01:00
Dylan K. Taylor
04d0b6c054 don't spam listeners with slot-change notifications when doing a content change 2019-05-20 15:45:15 +01:00
Dylan K. Taylor
c13b352b76 fix armour not being set correctly on entity spawn 2019-05-20 15:31:23 +01:00
Dylan K. Taylor
d9bc48bb01 CraftingGrid: Remove redundant overrides
the network session knows not to send this stuff because it's not associated with any window ID.
2019-05-20 15:15:20 +01:00
Dylan K. Taylor
bca0833035 Clean up handling of armour sync 2019-05-19 16:56:10 +01:00
Dylan K. Taylor
cd103cefcc Redesign inventory listening API
given that inventory listeners are no longer allowed to fiddle with the outcome of changing contents, it's now possible to allow having multiple listeners receiving events.

It's likely that this will be used for network inventory sync in the near future.
2019-05-19 16:36:38 +01:00
Dylan K. Taylor
dec6c9f49b Removed EntityInventoryChangeEvent and EntityArmorChangeEvent
there is nothing that these events do that can't be fulfilled by transactions. They complicate the internal implementation and produce unexpected behaviour for plugins when cancelled.

TL;DR: Use transactions. That's what they are there for.
2019-05-19 16:02:03 +01:00
Dylan K. Taylor
67affcea32 move more packet logic to net session
it seems like net session is turning into a giant dumping ground for sending API ... this needs to be cleaned up somehow.
2019-05-19 15:48:01 +01:00
Dylan K. Taylor
57219abc9d fix test failure 2019-05-18 20:20:33 +01:00
Dylan K. Taylor
c3c2dd3988 Rename SimpleSessionHandler -> InGameSessionHandler
the "simple" name comes from the early days of this refactor before I started splitting everything up into their own units. This handler is now in good enough condition to have a proper name.
2019-05-18 19:13:41 +01:00
Dylan K. Taylor
fa9fcea189 SimpleSessionHandler: Do not read blocks from world in onFailedBlockAction()
the world will do this anyway, so we can reduce our code burden here.
2019-05-18 19:11:23 +01:00
Dylan K. Taylor
d44ec702b0 Added BlockDataValidator::read5MinusHorizontalFacing() 2019-05-18 17:42:03 +01:00
Dylan K. Taylor
b11d3b0401 CraftingDataPacket: Fixed uncaught exception in decode
this is not exploitable because it's not a serverbound packet, but it should be fixed nonetheless.
2019-05-18 17:19:44 +01:00
Dylan K. Taylor
cd8645ff20 Removed PalettedBlockArray stub
the SubChunkConverter stub was accidentally removed in dd914e07523c7038c868c9969d88fdd97b00b7cf, but no great harm done ...
2019-05-18 15:15:20 +01:00
Dylan K. Taylor
6de0b48c1f PacketBatch: Always encode packets freshly, never reuse buffers
this causes bugs when a packet is modified during events and then re-sent to a player. Since we can't control this, we can't allow this kind of buffer reuse.

The only notable case where this will cause loss of performance is when broadcasting a series of packet(s) which accumulate to less than 256 bytes, which is reasonably cheap to encode anyway.
In addition, removing this caching is one roadblock to moving this serialization to native code, which will make it vastly faster.
2019-05-17 18:04:51 +01:00
Dylan K. Taylor
64f7f558a4 Merge branch 'stable'
# Conflicts:
#	resources/vanilla
#	src/pocketmine/entity/Human.php
2019-05-17 17:43:30 +01:00
Dylan K. Taylor
76e5ea385b Skin: improved error checking
plugin devs should find this less of a pain in the ass now.
2019-05-17 17:40:27 +01:00
Dylan K. Taylor
0f398bbe66 LevelDB: Added conversion of legacy extradata -> 4D subchunk block layers 2019-05-17 17:15:45 +01:00
Dylan K. Taylor
f7a9da4e92 PillarRotationTrait: Allow axis shift to be defined by the includer 2019-05-16 18:02:03 +01:00
Dylan K. Taylor
dd914e0752 Block: move all legacy metadata constants into a dedicated class
this makes it easier to see what is using metadata (and makes it easier to get rid of later).
2019-05-16 16:55:44 +01:00