0ae17af1e0
BiomeRegistry: fixed EOF newline
2020-11-01 16:53:42 +00:00
4231bfdc7e
Relocate biome ID constants to pocketmine\data\bedrock package
2020-11-01 16:53:06 +00:00
b176f4c12f
Switch to BiomeRegistry
...
I accidentally committed this in c869a7f099
and didn't notice. I intended to use it and never noticed.
2020-11-01 16:47:13 +00:00
f991961d9a
Generator no longer requires a ChunkManager to construct
...
this allows injection of arbitrary ChunkManagers into a single Generator instance.
The objective here was to remove the requirement to cache a SimpleChunkManager instance in worker-local storage, because that requires that the chunks it stores be manually removed to avoid memory leaks. However, there are some other obstacles, primarily the worldHeight which is not retained anywhere else.
2020-11-01 16:34:56 +00:00
315962c12c
Added __clone() for Chunk and SubChunk
...
we need this because the flatworld generator uses clone to produce new chunks, so we don't want the chunks getting fucked up.
2020-11-01 16:14:25 +00:00
1d551af54a
Merge remote-tracking branch 'origin/stable'
...
# Conflicts:
# resources/vanilla
# src/pocketmine/level/Level.php
# src/pocketmine/level/format/Chunk.php
# tests/phpstan/configs/l7-baseline.neon
2020-11-01 15:58:16 +00:00
2684ee96f7
World: do not perform base lighting calculation on non-generated chunks
...
this was causing twice as many light calculations for freshly generated chunks.
2020-11-01 15:53:50 +00:00
6cff08cd65
Chunk: fixed hasChanged being set on fastDeserialize() chunks (caused by 2bb497b716
)
...
this caused some performance issues and silent bugs with the generator, notably that the generator would always think all chunks had been changed, causing them to be re-set back into the world 9 times.
2020-11-01 15:50:21 +00:00
ef542880de
WorldManager: allow different World instances to have different AsyncPool instances
...
instead of being forced to use the Server async pool
right now the intent of this is to reduce (and ultimately eliminate) the dependency of World on Server, but it might come in useful for other stuff too, for example a chunkserver-based generator implementation which blocks on network instead of eating CPU (it would just waste CPU for other tasks).
2020-11-01 15:21:15 +00:00
11434f3a27
World::setBiomeId() now bails when trying to modify a non-generated chunk (or chunk locked for generation)
2020-11-01 15:00:48 +00:00
3e21e47b7a
Liquid: make getFlowVector() slightly less cancerous to read
2020-11-01 14:39:59 +00:00
fec42f16ba
Level: properly define type of generator field
2020-11-01 14:36:05 +00:00
19bc879dc1
lose useless blank line
2020-11-01 14:24:02 +00:00
be1da07ee5
tests: phpdoc cleanup
2020-11-01 14:23:44 +00:00
d6d9dde0b2
imports cleanup
2020-11-01 14:23:21 +00:00
73a8c90bee
Merge remote-tracking branch 'origin/stable'
...
# Conflicts:
# resources/vanilla
# src/world/Explosion.php
# tests/phpunit/item/ItemTest.php
# tests/phpunit/world/format/io/region/RegionLoaderTest.php
# tests/plugins/TesterPlugin/src/pmmp/TesterPlugin/tests/AsyncTaskMainLoggerTest.php
# tests/plugins/TesterPlugin/src/pmmp/TesterPlugin/tests/AsyncTaskMemoryLeakTest.php
2020-11-01 14:21:47 +00:00
deb0cee8a0
BaseInventory::canAddItem(): consider item max stack size ( #3881 )
...
this fixes addItem() failing when canAddItem() reported that an item can be added.
2020-11-01 13:49:13 +00:00
c312c8ddd6
fix build
2020-11-01 00:11:41 +00:00
c1a451f3b1
SubChunkExplorer: ditch subChunkChangeFunc
...
this is better implemented by checking the moveTo() result, which also won't have circular dependencies.
2020-10-31 23:46:27 +00:00
817372c55b
SkyLightUpdate: make heightmap calculation routines pure
2020-10-31 23:42:32 +00:00
c39a1407a2
Move heightmap calculation logic to SkyLightUpdate
2020-10-31 23:34:04 +00:00
59a3e8c096
BiomeArray: added ::fill()
2020-10-31 23:22:42 +00:00
05470d0621
phpstan: regenerate level 8 baseline (again)
2020-10-31 23:17:03 +00:00
4549522289
Rename Chunk::getSubChunkChecked() -> getSubChunk()
2020-10-31 23:12:03 +00:00
e09d78238f
Removed EmptySubChunk and SubChunkInterface
2020-10-31 23:10:31 +00:00
13d7b7ee1a
Removed final remaining usages of Chunk::getSubChunk()
...
this clears the way to get rid of EmptySubChunk.
2020-10-31 23:07:36 +00:00
f50be1ba63
Chunk: Use getSubChunkChecked() in getFullBlock()
2020-10-31 23:06:12 +00:00
bacfcf258e
World: remove unused function
2020-10-31 23:00:27 +00:00
8ee70dc30a
SimpleChunkManager: fix missing mask in getBlockAt()
2020-10-31 22:55:56 +00:00
40f9cd16cb
phpstan: drop a bunch of obsolete ignoredErrors from l8 baseline
2020-10-31 22:52:00 +00:00
d94877f5d2
fix build
2020-10-31 22:51:24 +00:00
01001dca74
Use Chunk::getSubChunkChecked() in places where we know that an invalid coordinate cannot be requested
2020-10-31 22:48:41 +00:00
b270029161
Rename Chunk::getWritableSubChunk() -> Chunk::getSubChunkChecked()
...
this is not specific to 'writable', it's just an opt-in to checked bounds so that an EmptySubChunk will never be received.
2020-10-31 22:46:33 +00:00
5701e733cc
World: fixed a crash in getFullBlock() when used on ungenerated terrain
2020-10-31 22:36:12 +00:00
f5807ac049
World::getBlockAt() now doesn't assume that AIR has a fullStateId of 0
2020-10-31 22:22:02 +00:00
d0470a80ab
SimpleChunkManager: remove post-mature optimisation
...
these methods are not used in hot paths and are inherently slow anyway, not to mention the introduction of morton codes eliminating the hashtable indexing problem.
2020-10-31 22:02:36 +00:00
ddda2d1e64
Remove $create parameter from ChunkManager::getChunk()
...
this restores SimpleChunkManager's behaviour to PM3, removing the need for GeneratorChunkManager (although I'm dubious whether SubChunkExplorer makes any sense in there any more now that we have morton in the mix).
2020-10-31 21:54:51 +00:00
dec235abab
World: don't create a new chunk just to read biome info
...
the chunk won't be generated, so we can provide the default result without creating a new chunk for no reason.
2020-10-31 21:29:39 +00:00
de867f1b86
World: don't create an empty chunk just for accessing the highest block
...
this is pointless since the chunk will not be generated anyway, so it serves no end to create it.
2020-10-31 21:27:16 +00:00
f0d62cf4ce
World: don't try to load chunks to read light levels
...
sync chunk load is useless here because lighting isn't immediately calculated anyway and it isn't available directly from the chunk when loaded.
2020-10-31 20:38:15 +00:00
68f5eada32
added fire extinguishing sound, closes #2777
2020-10-31 20:18:06 +00:00
f67ab094f2
fix build
2020-10-31 16:51:14 +00:00
5f7b0994b9
World: rename get(HighestAdjacent)BlockSkyLight(At) to make it clear these are **potentials**, not the actual light level
2020-10-31 16:47:34 +00:00
241a50387b
World: added getHighestAdjacentRealBlockSkyLight()
...
this is the same as its 'non-real' counterpart, but it accounts for time of day.
2020-10-31 16:44:42 +00:00
0b92e96e14
Player: set silent flag in spectator
2020-10-31 16:10:02 +00:00
8be0c0da0d
Implemented a silent property on entities and Entity->broadcastSound()
...
fixes #3516
2020-10-31 16:07:18 +00:00
66edf5a165
Particle::encode() now always returns ClientboundPacket[]
2020-10-31 15:51:17 +00:00
5a320f22b7
Sound::encode() now always returns an array
2020-10-31 15:48:46 +00:00
0cbc5c9a4a
region: harden handling of ByteArrayTag
...
previously this would just explode if the wrong length of data was given.
2020-10-31 15:37:06 +00:00
058bb3a91a
World: do not execute neighbour block updates on unloaded chunks
...
we might also need to delay this if any adjacent chunk is also not loaded, in case the block wants to access adjacent blocks during its neighbour update.
2020-10-29 13:37:14 +00:00