12626 Commits

Author SHA1 Message Date
Dylan K. Taylor
518a7827a6 BlockFactory: make slab registration slightly less awful to look at 2020-11-03 19:28:32 +00:00
Dylan K. Taylor
32929925aa Block: added a bunch of state manipulation APIs 2020-11-03 19:13:32 +00:00
Dylan K. Taylor
0a8dc3edd3 Fixed users of ColorInMetadataTrait having uninitialized default colours 2020-11-03 18:42:40 +00:00
Dylan K. Taylor
bcedbc364b BlockDataSerializer: added methods to read/write coral facing 2020-11-03 18:41:12 +00:00
Dylan K. Taylor
c3af0eff93 travis: use pmmp/leveldb 2020-11-03 17:56:15 +00:00
Dylan K. Taylor
5c5fe15483 tests: remove unused script 2020-11-03 14:42:29 +00:00
Dylan K. Taylor
a05f67bc77 Position::fromObject() world parameter is now mandatory (although still nullable) 2020-11-03 14:33:26 +00:00
Dylan K. Taylor
5cc2a9c3dd World: rename getChunkAtPosition() to getOrLoadChunkAtPosition()
this more accurately reflects what it does.
2020-11-03 14:12:47 +00:00
Dylan K. Taylor
bd78d0bff8 Player: added getItemCooldownExpiry() 2020-11-03 14:11:28 +00:00
Dylan K. Taylor
2e9b2d4aae World: fixed false unload events firing on chunk replacement when tiles and entities are deleted 2020-11-01 17:41:58 +00:00
Dylan K. Taylor
61112e4912 World: make create params of loadChunk and getOrLoadChunk mandatory
differences in the default values almost caused me to miss some bugs while trying to remove them.
2020-11-01 17:36:56 +00:00
Dylan K. Taylor
0bb37b5065 World: formalize setBlockAt()'s refusal to modify un-generated chunks
closes #2631
2020-11-01 17:24:09 +00:00
Dylan K. Taylor
b7690fed04 BiomeSelector: replace phpdoc with typehints 2020-11-01 17:09:10 +00:00
Dylan K. Taylor
12e185e3f6 Relocate EntityLegacyIds to pocketmine\data\bedrock package 2020-11-01 17:07:34 +00:00
Dylan K. Taylor
1f2bc8cb69 World: remove rogue import 2020-11-01 17:05:57 +00:00
Dylan K. Taylor
0ae17af1e0 BiomeRegistry: fixed EOF newline 2020-11-01 16:53:42 +00:00
Dylan K. Taylor
4231bfdc7e Relocate biome ID constants to pocketmine\data\bedrock package 2020-11-01 16:53:06 +00:00
Dylan K. Taylor
b176f4c12f Switch to BiomeRegistry
I accidentally committed this in c869a7f099237ca189dc574fe3df6e7630eeec51 and didn't notice. I intended to use it and never noticed.
2020-11-01 16:47:13 +00:00
Dylan K. Taylor
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
Dylan K. Taylor
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
Dylan K. Taylor
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
Dylan K. Taylor
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
Dylan K. Taylor
6cff08cd65 Chunk: fixed hasChanged being set on fastDeserialize() chunks (caused by 2bb497b7162719507184e0e3a36027cedd7bbe29)
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
Dylan K. Taylor
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
Dylan K. Taylor
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
Dylan K. Taylor
3e21e47b7a Liquid: make getFlowVector() slightly less cancerous to read 2020-11-01 14:39:59 +00:00
Dylan K. Taylor
fec42f16ba Level: properly define type of generator field 2020-11-01 14:36:05 +00:00
Dylan K. Taylor
19bc879dc1 lose useless blank line 2020-11-01 14:24:02 +00:00
Dylan K. Taylor
be1da07ee5 tests: phpdoc cleanup 2020-11-01 14:23:44 +00:00
Dylan K. Taylor
d6d9dde0b2 imports cleanup 2020-11-01 14:23:21 +00:00
Dylan K. Taylor
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
Nick
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
Dylan K. Taylor
c312c8ddd6 fix build 2020-11-01 00:11:41 +00:00
Dylan K. Taylor
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
Dylan K. Taylor
817372c55b SkyLightUpdate: make heightmap calculation routines pure 2020-10-31 23:42:32 +00:00
Dylan K. Taylor
c39a1407a2 Move heightmap calculation logic to SkyLightUpdate 2020-10-31 23:34:04 +00:00
Dylan K. Taylor
59a3e8c096 BiomeArray: added ::fill() 2020-10-31 23:22:42 +00:00
Dylan K. Taylor
05470d0621 phpstan: regenerate level 8 baseline (again) 2020-10-31 23:17:03 +00:00
Dylan K. Taylor
4549522289 Rename Chunk::getSubChunkChecked() -> getSubChunk() 2020-10-31 23:12:03 +00:00
Dylan K. Taylor
e09d78238f Removed EmptySubChunk and SubChunkInterface 2020-10-31 23:10:31 +00:00
Dylan K. Taylor
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
Dylan K. Taylor
f50be1ba63 Chunk: Use getSubChunkChecked() in getFullBlock() 2020-10-31 23:06:12 +00:00
Dylan K. Taylor
bacfcf258e World: remove unused function 2020-10-31 23:00:27 +00:00
Dylan K. Taylor
8ee70dc30a SimpleChunkManager: fix missing mask in getBlockAt() 2020-10-31 22:55:56 +00:00
Dylan K. Taylor
40f9cd16cb phpstan: drop a bunch of obsolete ignoredErrors from l8 baseline 2020-10-31 22:52:00 +00:00
Dylan K. Taylor
d94877f5d2 fix build 2020-10-31 22:51:24 +00:00
Dylan K. Taylor
01001dca74 Use Chunk::getSubChunkChecked() in places where we know that an invalid coordinate cannot be requested 2020-10-31 22:48:41 +00:00
Dylan K. Taylor
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
Dylan K. Taylor
5701e733cc World: fixed a crash in getFullBlock() when used on ungenerated terrain 2020-10-31 22:36:12 +00:00
Dylan K. Taylor
f5807ac049 World::getBlockAt() now doesn't assume that AIR has a fullStateId of 0 2020-10-31 22:22:02 +00:00