a46029c0f6
LevelProvider: Nuked the complicated mess out of level providers
...
Level providers are now cut back to just an interface to a world's data. They don't keep their own chunk registries or any stupid shit like that because the Level already does that.
This furthers the goal of being able to move level I/O off the main thread, and also drastically decreases the complication of implementing level providers.
2018-01-01 11:21:46 +00:00
1a615591e2
LevelProvider: Remove cyclic dependency between Level and LevelProvider
...
This will now allow LevelProviders to be constructed on threads.
2018-01-01 10:50:13 +00:00
d19683b7dd
LevelProvider: Remove some dead methods
2017-12-31 18:35:23 +00:00
f17b3b2a3b
LevelProvider: Refactor providers to drop lots of duplicated code
2017-12-31 18:35:23 +00:00
a0a2ea01bc
LevelDB: Check for LEVELDB_ZLIB_RAW_COMPRESSION when checking for the extension's presence
...
We always want to validate that the leveldb provided supports the world format.
2017-12-31 17:49:02 +00:00
5132ab6cd9
LevelDB: Remove redundant folder creation in generate()
...
This is pointless because the call below - which is _also_ recursively creating directories - will create this directory anyway.
2017-12-31 17:46:07 +00:00
256bdf2581
McRegion: Use MainLogger::getLogger()
...
another one bites the dust
2017-12-31 16:06:08 +00:00
8a3f8b4706
LevelProvider: Remove redundant method requestChunkTask()
...
This removes one more dependency that LevelProvider has on Level.
2017-12-31 16:05:58 +00:00
7264ce43ae
McRegion: Added method pathToRegion()
2017-12-31 14:25:17 +00:00
66e475cbb8
Region: Remove RegionLoader/McRegion cyclic dependency
2017-12-30 19:59:35 +00:00
1e896efff9
McRegion: Added an assert
2017-12-30 19:49:44 +00:00
4db7a7e57f
Region: Change chunk offset calculation in regions to use bitmasks
...
I don't know why it wasn't done like this to start with. However this has not been tested yet, so this goes on a different branch for now to test.
2017-12-30 19:41:58 +00:00
54b23968e7
McRegion: Refactor some ambiguous variable names
2017-12-30 18:59:01 +00:00
965c19375f
NBT: Split up concerns of endianness and varint NBT into their own classes, separate stream handling from NBT class
...
The remaining methods, constants and fields in the NBT class now pertain to generic NBT functionality (except for the matchList()/matchTree() methods, but that's a job for another time). All NBT I/O specific logic has now been moved to NBTStream and its descendents.
2017-12-30 14:55:45 +00:00
4f8e4f0522
Add EOF newlines where missing (bulk) ( #1836 )
...
This should solve issues with people making GitHub PRs and having the web editor messing things up. GitHub Web Editor sucks :(
2017-12-20 11:56:36 +00:00
256527c953
Chunk: Fixed possible bug with Chunk->setBlockData()
...
to be honest this would probably never affect anything, but let's be consistent.
2017-11-27 19:26:20 +00:00
b93691a177
Chunk: Remove redundant assignment
2017-11-27 18:58:08 +00:00
48c5db4296
Chunk: Add some PhpDoc
2017-11-27 17:51:42 +00:00
c564655f9b
Chunk: Remove unnecessary default values
...
these are assigned in the constructor anyway.
2017-11-27 17:49:08 +00:00
49301b0d74
Chunk: Use an SplFixedArray for subchunks
2017-11-27 17:46:48 +00:00
8bc733514b
LevelDB: Fixed nonsensical array access in iterator loop
2017-11-27 17:21:26 +00:00
74b074753f
Bulk addition of constant visibilities
...
thanks PhpStorm inspections plugin for annoying the shit out of me until
I did this.
2017-11-21 14:44:10 +00:00
a9df383346
generalized conditions for saving entities with chunks
2017-11-19 18:06:38 +00:00
2fd61163bf
cleanup some chunks leftovers from 1.0
2017-11-19 17:52:36 +00:00
5640bcb0b8
add some new leveldb keys
2017-11-19 17:43:54 +00:00
ea3c7383fb
Added support for handling MCPE 1.2 leveldb worlds
...
requires php-leveldb version >=0.2.1 and the latest version of
pmmp/leveldb-mcpe
2017-11-19 17:31:09 +00:00
7e496afdd1
Fixed issues with LevelDB worlds silently getting overwritten with the default format when LevelDB extension is not loaded
...
Always register the level provider (to allow detecting the world format) but throw exceptions if anything tries to use it without the extension being loaded.
2017-11-19 17:28:16 +00:00
665130561e
Further cleanup on NBT dynamic field access
...
not sure how I missed so many of these... there are probably lots more besides :(
2017-11-17 11:19:36 +00:00
aa399a1109
migrate to new CompoundTag API ( #1515 )
2017-11-10 15:38:21 +00:00
67af4d3b65
Cleaned up PMAnvil implementation
2017-10-29 19:13:58 +00:00
48fefae920
Added cache for tile spawn compounds
...
avoids expensive repetetive NBT writes on chunk sends when the tile hasn't been changed
2017-10-27 10:23:48 +01:00
5a353012de
Clean up some unused imports
2017-10-19 16:39:34 +01:00
be2d134994
Added API to allow flagging an entity not to be saved to disk when its chunk is saved ( #1452 )
2017-10-11 16:09:08 +01:00
8fafef2f7f
Added tagType parameter to ListTag constructor, remove some boilerplate code
2017-10-08 13:28:01 +01:00
d294d5a91b
Clarified location table doc for RegionLoader
2017-10-06 09:40:46 +01:00
7f5fe137d1
Added some type docs to RegionLoader
2017-10-05 18:47:32 +01:00
afa37bd2aa
check range of valid compression values
...
zero is not allowed because it's pointless, just raise your compression threshold if you want zero compression.
Chunks will always be compressed regardless of threshold because they are huge. It doesn't make sense to allow uncompressed chunks when even compression level 1 will reduce their size 50x. The point of the last two (reverted) commits was to prevent compression level zero being used on chunks. Probably obvious that I was up late and not thinking very clearly.
Revert "Reduced chunk compression level to 7"
This reverts commit 49ac2555ce
.
Revert "Always use best compression for chunks"
This reverts commit 42dd9d6abd
.
2017-10-01 11:06:14 +01:00
49ac2555ce
Reduced chunk compression level to 7
...
According to benchmarks 8 and 9 are simply orders of magnitude slower while not saving enough bytes to make it worth the performance loss. 7 is a good balance.
2017-10-01 09:20:14 +01:00
42dd9d6abd
Always use best compression for chunks
2017-09-30 20:30:24 +01:00
d0bf0ff083
Imports cleanup
2017-09-28 10:51:05 +01:00
38fad4b963
Implement difficulty per-world ( #878 )
...
* Moved Server::getDifficultyFromString() to Level
* Added ability to set difficulty in worlds section of pocketmine.yml for generation
2017-09-26 11:16:51 +01:00
5d75d3d5b6
Merge branch 'php/7.0' into mcpe-1.2
2017-09-01 23:10:58 +01:00
297cfcf168
Check for existence of ChunkUtils extension
2017-08-31 21:42:24 +01:00
b9c4a65307
Don't save players with chunks!
...
I can't believe I didn't notice this
2017-08-30 16:55:17 +01:00
23752548fe
Address several LevelDB related crashdumps in the crash archive
2017-08-30 15:42:31 +01:00
1f70a7830e
Branch merge
2017-08-20 21:07:19 +01:00
02f42eba48
Move block registration to its own class
2017-08-20 18:05:01 +01:00
2688228a6f
Don't dump subchunk raw data
2017-08-18 16:57:07 +01:00
4f1302adf2
Merge branch 'master' into mcpe-1.2
2017-08-17 17:14:16 +01:00
5b4035253b
Casting cleanup and removed some 32-bit string-int leftovers
2017-08-17 11:24:49 +01:00