7e331c590d
Use static-analysis-friendly method for getting effects from EffectManager
...
fixes 5 phpstan level 8 errors
2020-06-27 13:09:05 +01:00
9e6f1c9a5a
Living: check if damager is null before trying to use it
2020-06-27 13:09:05 +01:00
b7b5ea6fc9
Painting: use motive directly internally
...
this is cleaner and also fixes a phpstan level 8 error
2020-06-27 13:09:05 +01:00
3c1b8b83f5
HungerManager: use AttributeMap->mustGet()
...
fixes 2 errors on phpstan level 8
2020-06-27 13:09:05 +01:00
80e150c803
Entity: get rid of temporalVector mutation
...
except for checkBlockCollision, these are all cold paths ... this gets us one step closer to immutable Vector3
2020-06-20 21:41:19 +01:00
d38c17835d
Properly switch to string entity IDs
2020-06-20 13:43:31 +01:00
4e8e10ca45
EntityFactory: remove obsolete indirection (class mappings are redundant here now)
2020-06-19 22:18:42 +01:00
0a43fd816c
EntityFactory: drop unnecessary @param
2020-06-19 22:10:35 +01:00
47baaf4c72
move NBT helper functions from EntityFactory to EntityDataHelper
2020-06-19 22:04:36 +01:00
1a3445f4b5
EntityFactory: drop automatic provisioning of short class name as save ID
2020-06-19 22:03:22 +01:00
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
6d3750994b
EntityFactory: remove dead function
2020-06-19 21:54:23 +01:00
954e8e6e6f
update pocketmine/math dependency
2020-06-19 11:33:10 +01:00
9f89f2887a
Location: x,y,z parameters are now mandatory
2020-06-19 11:19:05 +01:00
4b0bf34adb
Location: add native typehints
2020-06-19 11:17:20 +01:00
60a6b4b10d
Entity: use EntityFactory helper function to deserialize Motion
2020-06-19 10:51:27 +01:00
4b528aa637
NBT is no longer needed to create an entity
...
it's still able to be provided, but shouldn't be needed in the majority of cases (constructor args and/or API methods should be sufficient).
2020-06-19 10:51:27 +01:00
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
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
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
ced89add3c
Human: remove dead function
2020-06-19 01:13:00 +01:00
cf85857660
Entity: remove duplicated code from saveNBT()
2020-06-19 01:07:18 +01:00
b3df5f4e95
CS: strip unneeded phpdoc
2020-06-18 20:01:49 +01:00
14d3e5ce27
Merge commit '62ea7c93a9ba1e71bef868efefdd9cc6dcc84a08'
...
# Conflicts:
# resources/vanilla
# src/entity/Skin.php
# src/item/InvalidSkinException.php
2020-06-17 20:34:19 +01:00
3e9018a838
Merge commit '7af4e70f6'
...
# Conflicts:
# resources/vanilla
# src/pocketmine/entity/Entity.php
2020-06-04 14:02:00 +01:00
b58c425189
Merge branch 'next-minor'
...
# Conflicts:
# changelogs/3.12.md
# resources/vanilla
# src/VersionInfo.php
2020-06-03 13:11:30 +01:00
2bf73c7a4a
Merge commit '8c5a81cf5'
...
# Conflicts:
# resources/vanilla
2020-06-03 12:50:09 +01:00
e7d712aeb6
Merge commit '2b58f2baf'
...
# Conflicts:
# resources/vanilla
# src/entity/object/FallingBlock.php
2020-06-03 12:47:44 +01:00
c72937a4af
Merge commit '5dadf1237'
...
# Conflicts:
# resources/vanilla
2020-06-03 12:46:06 +01:00
6df43338df
Merge commit 'c3a795e87'
...
# Conflicts:
# resources/vanilla
# src/pocketmine/Player.php
# src/pocketmine/entity/Entity.php
2020-05-31 14:56:37 +01:00
6257f717b1
Entity: make networkProperties private
...
this reduces the temptation to use it in high-level code, as well as making syncNetworkData() more useful (now it can export to many data collections, which means we can start to think about having a property cache per network session, which is more flexible)
2020-05-21 20:29:06 +01:00
1aa92bd6a8
Living: Do not rely on attribute map for moveSpeed attribute access
2020-05-21 20:13:24 +01:00
f77eea8c44
Living: set SPRINTING flag when it's needed, close #3521
2020-05-21 20:01:37 +01:00
ec8ee29291
moving sneak & sprint properties to Living
2020-05-21 19:55:58 +01:00
74e1f6320a
Store attributes as local vars, reduce usage of AttributeMap
...
ideally we want attribute map to only be used for properties that need synchronization.
2020-05-21 19:18:00 +01:00
f93bc0739c
Force types of RegistryTrait usages to shut PHPStan up
...
we need generic traits to solve this problem properly.
2020-05-21 19:12:48 +01:00
7aca41a530
Living: do not loop downwards searching for collision block, closes #3517
2020-05-20 20:33:25 +01:00
3f1f135a59
remove a couple more Position->getWorld() usages
2020-05-19 21:38:51 +01:00
45ec4645d2
Merge commit '089180fef4534b383a31a9d560a76bfaf0d16c6b'
...
# Conflicts:
# resources/vanilla
# src/entity/Living.php
2020-05-19 21:14:54 +01:00
337addf1de
Eradicate remaining usages of public Position->world field
...
and as an added bonus, ditch a bunch of extra phpstan errors
2020-05-19 19:14:56 +01:00
8a8b1b0b97
Remove Position->setWorld()
2020-05-19 18:33:16 +01:00
148228e360
update pocketmine/math, adapt to add() changes
2020-05-19 12:26:18 +01:00
22425551ed
separate default attribute creation from Attribute into AttributeMap
2020-05-18 18:12:04 +01:00
ae6a7b7cc9
imports cleanup
2020-05-16 18:42:08 +01:00
c30dd9f1b6
Entity: add abstract getNetworkTypeId(), remove NETWORK_ID constant
...
this now requires that subclasses supply a proper NETWORK_ID.
2020-05-16 16:08:12 +01:00
86db3af896
remove utils\Color, use new pocketmine/color class
...
we're so close to separating protocol from core !!!
2020-05-14 20:38:08 +01:00
4437756987
Inventory: reduce API duplication by using a Set for viewers
2020-05-14 14:13:28 +01:00
3dafee6aa6
NetworkSession: explicitly unregister effect manager hooks on dispose,
...
close #3455
2020-05-14 10:59:10 +01:00
b7cf4f01f9
remove utils\UUID, switch to pocketmine/uuid package
2020-05-11 10:46:48 +01:00
9cf410d484
Player: fixed broken behaviour of entity spawning on chunk send, closes #3355
2020-05-05 18:55:13 +01:00