d72e4cb9a1
Tile: remove createNBT(), add create(), createFromData(), createFromItem()
2018-12-10 19:40:37 +00:00
4c848bb4c1
docs fixes
2018-11-22 17:07:36 +00:00
98efd27543
Remove ability to set blockID and blockdata independently
...
This was the cause of many inconsistency and broken world bugs. In the future (once we switch to paletted chunks) this won't be possible anyway. For now, some temporary API is provided to allow modifying chunkdata directly, but it is required that **both** must be provided.
2018-11-22 16:53:22 +00:00
e67b1a20de
Merge remote-tracking branch 'origin/release/3.4'
2018-11-17 14:47:35 +00:00
f8bfbc107d
Reduce chunk memory usage by 20-60% by exploiting PHP copy-on-write behaviour ( #2527 )
...
This takes advantage of two key behaviours of PHP:
1. Assigning a string does not copy the string
2. Changing an offset in a string causes the string to be copied.
These two factors combined, along with the fact that blocklight and skylight arrays are usually all-zeros, allow us to produce a significant memory usage reduction of loaded chunks.
A freshly generated PM world with 3,332 chunks loaded drops from 310MB to 200MB memory usage with these changes applied.
2018-11-17 14:46:05 +00:00
8b9ec5dde3
Merge branch 'release/3.4'
2018-11-07 22:11:27 +00:00
342a74ffcb
Level: Collect garbage from chunk internals in doChunkGarbageCollection()
2018-11-07 20:01:07 +00:00
0e87cf801e
Merge branch 'release/3.4'
2018-11-03 19:44:00 +00:00
a50a863ab7
Chunk: be more intelligent about fast-serializing chunks
...
This reduces the amount of useless data that pthreads has to copy around.
2018-11-03 19:43:35 +00:00
90482e79bc
Merge branch 'release/3.4'
2018-10-21 18:23:54 +01:00
45c9caa38c
Fixup some formatting issues
2018-10-21 18:15:25 +01:00
a430f7f4f7
Allow static properties and state masks to vary based on variant
2018-10-06 17:33:28 +01:00
8a062f440d
Chunk: remove column methods
...
these were (mostly) unused, and the places they were used breaks the interface definitions. It also exposes internals that are sensitive to change.
2018-10-03 18:35:39 +01:00
848bce193c
Chunk: change tile storage hash function to unbind Y coordinate
...
this isn't strictly needed but it is more scalable in the case of future build height limit lifts.
2018-08-19 16:56:50 +01:00
7c41bfcdf3
Removed Tile numeric runtime IDs, use block hashes instead
...
Tiles are level-local and are not indexed globally like entities. There is pretty much zero point to them having numeric runtime IDs.
2018-08-19 16:37:04 +01:00
28a72a93b4
Chunk: Use an SplFixedArray for heightmap
...
this goes on 3.1 because it changes the behaviour of chunk cloning, which might possibly break some plugins, and this isn't a bug fix.
This should see no change in behaviour other than a minor performance improvement and slight reduction in memory usage.
2018-07-05 11:58:20 +01:00
c4c6c58615
Added some missing typehints
2018-06-10 17:18:55 +01:00
857f6dd5df
Chunk: Share EmptySubChunk instance with other chunks on the same thread
2018-06-04 11:44:18 +01:00
66963fbf9a
Nuke block extradata
...
this has been superseded by multi-layer blockstorages in 1.2.14+
2018-05-19 11:03:28 +01:00
8228774ad4
Remove extra data, this time without API breaks
...
this is necessary because the next MCPE release will probably be made before the next PM release.
2018-05-02 12:08:44 +01:00
3962d32ffe
Chunk: Remove obsolete checks for entity/tile coordinate mismatches
...
This code is no longer necessary, because entities are constructed with a Level instead of a Chunk since API 3.0.0-ALPHA4. This means that they will not get allocated in the wrong chunk at runtime after having been saved on the wrong chunk by something else (such as an older version of PM). They will instead be allocated in a chunk selected by bitshifting their coordinates.
This is necessary to be able to fix #1789 without causing entities affected by the infamous bitshift-on-floats bugs to inexplicably vanish.
2018-02-14 18:58:52 +00:00
a0683dbb0f
Chunk: Remove useless code in fastDeserialize()
2018-01-08 21:38:30 +00:00
c16c9efdf3
Chunk: Rename unload() to onUnload()
...
this more accurately describes what the function does.
2018-01-02 10:50:22 +00:00
c3cc6f9880
Chunk: Clean up unnecessary checks in unload()
2018-01-02 10:48:01 +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
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
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
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
23752548fe
Address several LevelDB related crashdumps in the crash archive
2017-08-30 15:42:31 +01:00
02f42eba48
Move block registration to its own class
2017-08-20 18:05:01 +01:00
eebc52e00b
Added API method Entity->isClosed() and made Entity->closed protected
2017-08-16 19:30:23 +01:00
c3b8be3f60
and more typehints
2017-07-14 10:56:51 +01:00
2a7b736f18
Heap of bugfixes, cleanup and PHP 7 upgrades
2017-07-13 19:18:56 +01:00
30c5487f94
Drastically improved performance of basic chunk sky-light population
...
back 2 commits: 53ms per chunk
back 1 commit: 27ms per chunk
this commit: 3ms per chunk
(on my machine, of course)
2017-07-08 17:13:22 +01:00
728851594b
Improved performance of basic chunk sky-light population
...
No need to recalculate this 256 times
2017-07-08 13:37:45 +01:00
70bd9afd37
Updated leveldb implementation to support MCPE 1.1 worlds
2017-06-30 09:11:26 +01:00
a365c831a8
Fixed some doc problems
2017-06-25 12:07:28 +01:00
e11f1e94e9
Cleaned up SubChunk implementation
2017-06-19 15:40:31 +01:00
75863e2a44
OCD commit
2017-06-07 12:54:12 +01:00
8779259734
Stop spawning entities to players twice
...
This will be done when the chunk is sent to the player anyway.
2017-05-29 15:57:05 +01:00
7a2ed232cc
Merge branch 'api3/network' into api3/network-mcpe-1.1
2017-04-24 13:56:19 +01:00
559504225a
Throw an exception before calling base entity constructor if skin is not set or invalid, close #835 ( #855 )
2017-04-24 09:50:55 +01:00
b7b7a93e4e
Merge branch 'api3/network' into api3/network-mcpe-1.1
2017-04-18 14:52:06 +01:00
eefa8abaf2
Throw exceptions if something attempts to add a closed Tile or Entity to a chunk
2017-04-18 14:45:33 +01:00