Dylan K. Taylor
fc7672c6ba
World: remove temporalVector (premature cold path optimisation again)
2020-06-20 21:44:05 +01:00
Dylan K. Taylor
d38c17835d
Properly switch to string entity IDs
2020-06-20 13:43:31 +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
fb4a99a0ef
Position: x,y,z parameters are now mandatory
2020-06-19 11:21:47 +01:00
Dylan K. Taylor
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
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
82b3e3398b
make more use of igbinary_serialize() and igbinary_unserialize()
2020-06-17 23:03:03 +01:00
Dylan K. Taylor
a2677eba02
Merge commit 'f3063e797fab56ff8d0213c8e5a3904085a6eb79'
...
# Conflicts:
# resources/vanilla
# src/pocketmine/level/format/io/ChunkUtils.php
2020-06-17 20:43:30 +01:00
Dylan K. Taylor
d2130265f8
Merge commit '8dcc88712c6b8a4d4a0c6be2f6b908ae85378209'
...
# Conflicts:
# resources/vanilla
# src/pocketmine/level/format/io/ChunkUtils.php
# tests/phpstan/configs/l7-baseline.neon
2020-06-17 20:42:28 +01:00
Dylan K. Taylor
506f98efc4
Eliminate usages of BaseNbtSerializer->readCompressed() and BaseNbtSerializer->writeCompressed()
2020-06-17 14:31:56 +01:00
Dylan K. Taylor
c618932d25
Eliminate usages of BinaryStream->setBuffer() and BinaryStream->reset()
2020-06-17 13:49:43 +01:00
Dylan K. Taylor
7d73630fb7
Merge branch 'stable'
...
# Conflicts:
# resources/vanilla
# src/world/format/io/region/RegionGarbageMap.php
# src/world/format/io/region/RegionLoader.php
# tests/phpstan/configs/l7-baseline.neon
# tests/phpunit/world/format/io/region/RegionLocationTableEntryTest.php
2020-06-15 20:10:15 +01:00
Dylan K. Taylor
f55a7f8b53
Merge commit 'd8d994351'
...
# Conflicts:
# composer.lock
# resources/vanilla
# tests/phpstan/configs/l7-baseline.neon
2020-06-14 19:47:21 +01:00
Dylan K. Taylor
0d186fe42c
Merge commit '725506510'
...
# Conflicts:
# resources/vanilla
# src/pocketmine/level/format/io/leveldb/LevelDB.php
2020-06-13 11:55:10 +01:00
Dylan K. Taylor
899da1b7f7
Merge commit '42e14f749'
...
# Conflicts:
# resources/vanilla
# src/pocketmine/Player.php
# src/pocketmine/item/Bow.php
# src/world/World.php
2020-06-03 12:31:17 +01:00
Dylan K. Taylor
bbf3f4c476
Merge branch 'next-minor'
2020-05-31 18:40:19 +01:00
Govdim
4ce5f2a6c6
WorldManager: Add access to WorldProviderManager ( #3527 )
...
* WorldProvider: Add access to WorldProviderManager
* WorldManager: Updated getProvider method
Co-authored-by: Govdim <govdim.govorek@gmail.com>
2020-05-26 06:59:19 +01:00
Dylan K. Taylor
c93038f574
Inject WorldProviderManager to WorldManager's constructor, no longer singleton
2020-05-24 19:22:04 +01:00
Dylan K. Taylor
437e4d75ab
WorldProviderManager: use $this-> instead of self::
2020-05-24 19:16:57 +01:00
Dylan K. Taylor
3473254d01
added Timings::INCLUDED_BY_OTHER_TIMINGS constant
2020-05-24 16:09:45 +01:00
Dylan K. Taylor
fe649d8d70
Extract ServerConfigGroup from Server
...
this API isn't very nice, but it's pretty much the same as the original, and at least this can be _kinda_ unit-tested...
2020-05-24 15:48:03 +01:00
Dylan K. Taylor
b05fab3e3c
FormatConverter: do not hardcode progress update interval
2020-05-24 14:30:59 +01:00
Dylan K. Taylor
c95951479c
FormatConverter: beware paths with \ on linux
2020-05-24 14:28:07 +01:00
Dylan K. Taylor
c9af5ce7a9
Convert GeneratorManager to singleton
2020-05-23 10:13:03 +01:00
Dylan K. Taylor
640428c415
Convert WorldProviderManager to singleton
2020-05-23 10:02:09 +01:00
Dylan K. Taylor
e2232dd8d4
WorldManager: reduce code duplication for world path discovery
2020-05-23 09:50:25 +01:00
Dylan K. Taylor
8d9759288c
WorldManager: don't hard-depend on server configuration for autosave settings
2020-05-23 09:43:59 +01:00
Dylan K. Taylor
fcea7da183
WorldManager: allow dataPath to be injected via constructor
2020-05-23 09:37:37 +01:00
Dylan K. Taylor
8a8b1b0b97
Remove Position->setWorld()
2020-05-19 18:33:16 +01:00
Dylan K. Taylor
148228e360
update pocketmine/math, adapt to add() changes
2020-05-19 12:26:18 +01:00
Dylan K. Taylor
232ff838db
Merge commit '22b5de09b476a8c1638adfaba56b210c1eb1faf0'
...
# Conflicts:
# resources/vanilla
# src/pocketmine/level/particle/InstantEnchantParticle.php
# src/world/sound/ExplodeSound.php
2020-05-18 20:30:00 +01:00
Dylan K. Taylor
58fb185e05
Merge commit '58e32086c04d6622c01f59d0cd7216bd8a50eddb'
...
# Conflicts:
# resources/vanilla
# src/world/World.php
2020-05-18 10:47:37 +01:00
Dylan K. Taylor
8d49bc93e0
Merge commit 'f5a49b6d55940584a6a4e9cdbc456c581182b5fd'
...
# Conflicts:
# resources/vanilla
2020-05-18 10:35:23 +01:00
Dylan K. Taylor
b3454b3488
BiomeArray: check lower bounds in ::idx() as well as upper bounds
2020-05-16 18:42:47 +01:00
Dylan K. Taylor
ae6a7b7cc9
imports cleanup
2020-05-16 18:42:08 +01:00
Dylan K. Taylor
88715c7055
extracted a HeightArray type from Chunk
2020-05-16 18:41:27 +01:00
Dylan K. Taylor
a31240f60b
FastChunkSerializer: added constants for internal flags
2020-05-16 18:06:00 +01:00
Dylan K. Taylor
82d361d75f
extract a BiomeArray unit from Chunk
...
this now also properly validates data read from disk.
2020-05-16 17:36:22 +01:00
Dylan K. Taylor
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
Dylan K. Taylor
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
Dylan K. Taylor
45f9c61d0f
forward-port of 2f47597d75b514944a2f3f5d293f2fb72dd7fb56 as best it fits
2020-05-13 13:28:35 +01:00
Dylan K. Taylor
11ef9fb0c0
Item-from-string parsing no longer depends on ItemIds
...
after this is done I'm banning the constant() function.
2020-05-13 00:18:49 +01:00
Dylan K. Taylor
b7cf4f01f9
remove utils\UUID, switch to pocketmine/uuid package
2020-05-11 10:46:48 +01:00
Dylan K. Taylor
8efe7fcfb0
World: allow configuring blocks-per-tick for random updating
...
this makes it much easier to observe and debug stuff that depends on it, such as grass, crop and tree growth, since they'll happen much faster.
A future improvement would be to have the update function use a non-global random so that the output can be reproduced using a given seed.
2020-05-10 11:50:31 +01:00
Dylan K. Taylor
81f982a8d9
remove hardcoded legacy entity type ID mapping, load from resources instead
2020-05-04 13:47:39 +01:00
Dylan K. Taylor
f0dfa45172
phpstorm fixing EOF newlines that phpstorm screwed up
2020-05-04 13:46:20 +01:00
Dylan K. Taylor
ba6fb87280
remove unused imports
2020-05-04 13:27:31 +01:00
Dylan K. Taylor
53a33e8c20
World: remove unused import
...
we're getting so close !!!
2020-05-04 11:58:57 +01:00
Dylan K. Taylor
d3dcb8a4e3
moving entity attack sounds to server-side
2020-05-04 11:50:42 +01:00