53 Commits

Author SHA1 Message Date
Dylan K. Taylor
224fa09327
First step towards removing Vector3 from Block 2024-12-04 15:54:31 +00:00
zSALLAZAR
a5f607138c
Implement Ice Bomb (#5452)
Co-authored-by: Dylan K. Taylor <dktapps@pmmp.io>
2024-11-24 15:01:26 +00:00
ipad54
e77f2c5198
Implemented End Crystal (#4715)
Co-authored-by: Dylan T. <dktapps@pmmp.io>
2024-11-16 17:57:57 +00:00
Dylan K. Taylor
0a3ecfdae9
Clean up terminology around block state IDs and their handling 2023-01-25 19:01:15 +00:00
Dylan K. Taylor
2a81a421f3
Merge branch 'next-minor' into next-major 2022-12-24 17:23:30 +00:00
Dylan K. Taylor
3d038b28ff
SplashPotion: const-ify missed NBT key 2022-12-24 15:19:56 +00:00
Dylan K. Taylor
16f90f4120
EntityFactory: remove legacy save IDs
this can be more cleanly handled using BedrockData.
2022-12-19 16:04:32 +00:00
Dylan K. Taylor
bf44edd179
Constify a bunch of NBT keys, pass 1 2022-12-18 22:12:15 +00:00
IvanCraft623
83a136a176
EntityFactory: Avoid code duplication on validation of creation functions (#5294) 2022-09-24 13:55:24 +01:00
Eren A. Akyol
82ba7903c8
Fixed wrong key being used for entity type ID in save data (#5288)
closes #5260
2022-09-15 13:40:48 +01:00
Dylan K. Taylor
38d6284671
Use PHP-CS-Fixer to enforce file header presence 2022-06-04 17:34:49 +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
ec6769a6fc
Modernize private property declarations in src/entity 2022-05-17 20:42:17 +01:00
Dylan K. Taylor
05fdd94754
fix CS 2022-03-12 00:57:32 +00:00
Dylan K. Taylor
05792826bc
EntityFactory: use import aliases to improve readability slightly 2022-03-09 23:39:45 +00:00
Dylan K. Taylor
5c7125f190
Improved error handling for loading broken entity / tile data 2021-11-23 17:41:26 +00:00
Dylan K. Taylor
444d902990
Fix CS 2021-06-21 20:45:31 +01:00
Dylan K. Taylor
5d6146a01f
Register missing potion types 2021-06-19 21:53:08 +01:00
Dylan K. Taylor
5387456e44
Move potion types to enum 2021-06-19 21:39:23 +01:00
Dylan K. Taylor
6fea09ded4
SplashPotion: Require potionId in constructor 2021-06-19 19:47:44 +01:00
Dylan K. Taylor
fc70b625b3
ExperienceOrb: Require providing XP value in constructor 2021-06-19 19:42:13 +01:00
Jason
532d57eec7
Arrow: Save and load critical state (#4241)
Fixes #3596
2021-06-09 14:00:36 +01:00
Dylan K. Taylor
b2e806e2fa
World: Harden chunk loading against bad data in entity/tile NBT 2021-05-12 12:26:41 +01:00
Dylan K. Taylor
8e0cba56b8 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	resources/vanilla
#	src/pocketmine/entity/Entity.php
#	src/pocketmine/tile/Tile.php
#	tests/phpstan/configs/check-explicit-mixed-baseline.neon
#	tests/phpstan/configs/l7-baseline.neon
2020-11-12 22:10:47 +00:00
Dylan K. Taylor
e6348bbd34 Entity: do not assume that save IDs are always strings
this is only the first of many changes needed to make entity savedata fully format-agnostic, but it's a start.
2020-11-06 13:05:17 +00:00
Dylan K. Taylor
12e185e3f6 Relocate EntityLegacyIds to pocketmine\data\bedrock package 2020-11-01 17:07:34 +00:00
Dylan K. Taylor
40d49b88dd EntityFactory: remove requirement for $className as return type on creation funcs
since the removal of EntityFactory::create() this isn't needed anymore, since these creation functions are only used for creating entities loaded from disk.
2020-08-17 13:20:34 +01:00
Dylan K. Taylor
279abb871d Remove all usages of CompoundTag->hasTag()
in pretty much every case, these usages really wanted to read the tag's contents anyway, which can be combined with a getTag() and instanceof call for more concise and static analysis friendly code.
In the few cases where the tag contents wasn't needed, it still wanted to check the type, which, again, can be done in a more static analysis friendly way by just using getTag() and instanceof.
2020-07-10 21:01:43 +01:00
Dylan K. Taylor
4e8e10ca45 EntityFactory: remove obsolete indirection (class mappings are redundant here now) 2020-06-19 22:18:42 +01:00
Dylan K. Taylor
0a43fd816c EntityFactory: drop unnecessary @param 2020-06-19 22:10:35 +01:00
Dylan K. Taylor
47baaf4c72 move NBT helper functions from EntityFactory to EntityDataHelper 2020-06-19 22:04:36 +01:00
Dylan K. Taylor
1a3445f4b5 EntityFactory: drop automatic provisioning of short class name as save ID 2020-06-19 22:03:22 +01:00
Dylan K. Taylor
012acdd4cb move runtime entity ID counter from EntityFactory back to Entity
EntityFactory is specialized for the purpose of deserializing data from worlds, and runtime ID assignment isn't related.
2020-06-19 21:55:49 +01:00
Dylan K. Taylor
6d3750994b EntityFactory: remove dead function 2020-06-19 21:54:23 +01:00
Dylan K. Taylor
60a6b4b10d Entity: use EntityFactory helper function to deserialize Motion 2020-06-19 10:51:27 +01:00
Dylan K. Taylor
1205432c34 Extract mandatory parameters into constructor parameters
the goal is obviously to ditch NBT entirely here, but there's more work to be done before that becomes possible.
2020-06-19 10:51:27 +01:00
Dylan K. Taylor
6a26c0bebf EntityFactory now exclusively handles loading data from disk
this commit removes the ability to replace centrally registered entity classes in favour of using constructors directly.
In future commits I may introduce a dedicated factory interface which allows an _actual_ factory pattern (e.g. factory->createArrow(world, pos, shooter, isCritical) with proper static analysability) but for now it's peripheral to my intended objective.
The purpose of this change is to facilitate untangling of NBT from entity constructors so that they can be properly created without using NBT at all, and instead use nice APIs.

Spawn eggs now support arbitrary entity creation functions like EntityFactory does, allowing much more flexibility in what can be passed to an entity's constructor (e.g. a Plugin reference can be injected by use()ing it in a closure or via traditional DI.
2020-06-19 10:51:27 +01:00
Dylan K. Taylor
72a7fc68c1 First look at making entity creation closure-driven
this allows doing stuff like injecting plugin references to entity constructors for now. I want to make this more flexible still, but I've done about as much as I feel like doing today and don't want this disappearing into a stash to never be seen again.
2020-06-19 10:51:27 +01:00
Dylan K. Taylor
b3df5f4e95 CS: strip unneeded phpdoc 2020-06-18 20:01:49 +01:00
Dylan K. Taylor
22425551ed separate default attribute creation from Attribute into AttributeMap 2020-05-18 18:12:04 +01:00
Dylan K. Taylor
7d9df6af6f Convert EntityFactory to singleton 2020-04-24 22:43:02 +01:00
Dylan K. Taylor
fb1126797a Merge branch 'stable' 2020-02-07 18:13:55 +00:00
Dylan K. Taylor
89c6da13ac phpstan: use more class-string 2020-01-31 22:05:33 +00:00
Dylan K. Taylor
f65bf76fd8 Merge commit '799183e13e61e89cc6820ad3132a4147454017c6'
# Conflicts:
#	resources/vanilla
#	src/Server.php
#	src/pocketmine/entity/Entity.php
#	src/pocketmine/level/format/io/LevelProviderManager.php
#	src/pocketmine/tile/Tile.php
#	src/world/generator/GeneratorManager.php
2020-01-31 21:26:40 +00:00
Dylan K. Taylor
cb16f5c142 Merge commit '260ac47588c76a2e6814cfba46773a990fb8c5da'
# Conflicts:
#	resources/vanilla
#	src/Server.php
#	src/lang/Language.php
#	src/network/mcpe/protocol/AddItemActorPacket.php
#	src/network/mcpe/protocol/AddPlayerPacket.php
#	src/network/mcpe/protocol/SetActorDataPacket.php
#	src/network/mcpe/serializer/NetworkBinaryStream.php
#	src/permission/Permission.php
#	src/pocketmine/block/Leaves.php
#	src/pocketmine/entity/DataPropertyManager.php
#	src/pocketmine/entity/Entity.php
#	src/pocketmine/item/Banner.php
#	src/pocketmine/item/Item.php
#	src/pocketmine/level/format/io/LevelProvider.php
#	src/pocketmine/level/format/io/LevelProviderManager.php
#	src/pocketmine/network/mcpe/protocol/AddActorPacket.php
#	src/pocketmine/network/mcpe/protocol/LoginPacket.php
#	src/pocketmine/tile/Banner.php
#	src/scheduler/BulkCurlTask.php
#	src/updater/AutoUpdater.php
#	src/utils/Config.php
#	src/utils/Utils.php
#	src/world/generator/Flat.php
#	src/world/generator/Generator.php
2020-01-31 21:07:34 +00:00
Dylan K. Taylor
5955ff5393 fix phpdoc spacing screwed up by phpstorm 2020-01-22 15:20:50 +00:00
Dylan K. Taylor
8efc4d12ec trim phpdoc lines 2020-01-22 15:18:37 +00:00
Dylan K. Taylor
055b13a6cf strip extra blank lines (php-cs-fixer) 2020-01-22 15:14:10 +00:00
Dylan K. Taylor
67bcc1c0fb phpdoc armageddon for master, pass 1 2020-01-22 11:55:03 +00:00