5a56f68991
Normal: make gaussian non-static
...
this allows each generator to (potentially) have a different gaussian curve for biome blending, as well as fixing a few phpstan level 7 errors.
2020-06-28 19:08:18 +01:00
db8e094d11
Extract a Gaussian unit from Normal generator
2020-06-28 18:45:52 +01:00
78c270a96e
PopulationTask: check the correct instance
2020-06-28 18:45:51 +01:00
2a9586f6fd
Explosion: fixed assert failure on explodeB()
2020-06-27 23:17:27 +01:00
17054e1001
Merge commit '89521f166d8b43f2fd2af99f367888a34b44c492'
...
# Conflicts:
# resources/vanilla
# src/world/Explosion.php
2020-06-26 18:42:30 +01:00
137605ab8c
Position: make World constructor parameter required
2020-06-22 14:15:27 +01:00
a16de8747e
Explosion: stop using Vector3->setComponents()
...
this kills two birds with one stone: this inlined version of the logic should be faster than the vector-abusing version.
2020-06-20 22:19:37 +01:00
bf5c06f285
World: get rid of temporalPosition too (entirely unused)
2020-06-20 21:45:35 +01:00
fc7672c6ba
World: remove temporalVector (premature cold path optimisation again)
2020-06-20 21:44:05 +01:00
d38c17835d
Properly switch to string entity IDs
2020-06-20 13:43:31 +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
fb4a99a0ef
Position: x,y,z parameters are now mandatory
2020-06-19 11:21:47 +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
82b3e3398b
make more use of igbinary_serialize() and igbinary_unserialize()
2020-06-17 23:03:03 +01:00
a2677eba02
Merge commit 'f3063e797fab56ff8d0213c8e5a3904085a6eb79'
...
# Conflicts:
# resources/vanilla
# src/pocketmine/level/format/io/ChunkUtils.php
2020-06-17 20:43:30 +01:00
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
506f98efc4
Eliminate usages of BaseNbtSerializer->readCompressed() and BaseNbtSerializer->writeCompressed()
2020-06-17 14:31:56 +01:00
c618932d25
Eliminate usages of BinaryStream->setBuffer() and BinaryStream->reset()
2020-06-17 13:49:43 +01:00
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
f55a7f8b53
Merge commit 'd8d994351'
...
# Conflicts:
# composer.lock
# resources/vanilla
# tests/phpstan/configs/l7-baseline.neon
2020-06-14 19:47:21 +01:00
0d186fe42c
Merge commit '725506510'
...
# Conflicts:
# resources/vanilla
# src/pocketmine/level/format/io/leveldb/LevelDB.php
2020-06-13 11:55:10 +01:00
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
bbf3f4c476
Merge branch 'next-minor'
2020-05-31 18:40:19 +01:00
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
c93038f574
Inject WorldProviderManager to WorldManager's constructor, no longer singleton
2020-05-24 19:22:04 +01:00
437e4d75ab
WorldProviderManager: use $this-> instead of self::
2020-05-24 19:16:57 +01:00
3473254d01
added Timings::INCLUDED_BY_OTHER_TIMINGS constant
2020-05-24 16:09:45 +01:00
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
b05fab3e3c
FormatConverter: do not hardcode progress update interval
2020-05-24 14:30:59 +01:00
c95951479c
FormatConverter: beware paths with \ on linux
2020-05-24 14:28:07 +01:00
c9af5ce7a9
Convert GeneratorManager to singleton
2020-05-23 10:13:03 +01:00
640428c415
Convert WorldProviderManager to singleton
2020-05-23 10:02:09 +01:00
e2232dd8d4
WorldManager: reduce code duplication for world path discovery
2020-05-23 09:50:25 +01:00
8d9759288c
WorldManager: don't hard-depend on server configuration for autosave settings
2020-05-23 09:43:59 +01:00
fcea7da183
WorldManager: allow dataPath to be injected via constructor
2020-05-23 09:37:37 +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
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
58fb185e05
Merge commit '58e32086c04d6622c01f59d0cd7216bd8a50eddb'
...
# Conflicts:
# resources/vanilla
# src/world/World.php
2020-05-18 10:47:37 +01:00
8d49bc93e0
Merge commit 'f5a49b6d55940584a6a4e9cdbc456c581182b5fd'
...
# Conflicts:
# resources/vanilla
2020-05-18 10:35:23 +01:00
b3454b3488
BiomeArray: check lower bounds in ::idx() as well as upper bounds
2020-05-16 18:42:47 +01:00
ae6a7b7cc9
imports cleanup
2020-05-16 18:42:08 +01:00
88715c7055
extracted a HeightArray type from Chunk
2020-05-16 18:41:27 +01:00
a31240f60b
FastChunkSerializer: added constants for internal flags
2020-05-16 18:06:00 +01:00
82d361d75f
extract a BiomeArray unit from Chunk
...
this now also properly validates data read from disk.
2020-05-16 17:36:22 +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
45f9c61d0f
forward-port of 2f47597d75
as best it fits
2020-05-13 13:28:35 +01:00