Dylan K. Taylor
5dbb0d177e
Fixed double chest inventory desync issues, closes #2261 ( #2279 )
...
chest pairing really needs rewriting... this code really sucks
2018-07-05 17:42:30 +01:00
Dylan K. Taylor
fe21f0e916
Spawnable: change visibility of addAdditionalSpawnData()
2018-06-03 19:58:48 +01:00
Dylan K. Taylor
4c1d29cdf7
Tile: remove unnecessary removeTag() calls
...
these CompoundTags are now ephemeral, so it's not necessary to remove potential garbage from them anymore.
2018-06-03 18:31:23 +01:00
Dylan K. Taylor
fa21cd96c5
Tiles no longer store their NBT at runtime
...
This is a significant breaking change for anything utilizing Tiles as they now do not store their NBT at runtime anymore.
This is another step in the process of ridding PocketMine-MP of runtime NBT.
It can be noticed that all tiles are now using class fields to store properties instead of NBT, which is much faster, uses less memory and is also more concise when written in code.
Highlights:
- Tile->namedtag has been removed.
- Tile->saveNBT() now accepts a CompoundTag() parameter. Typically it's expected that this will be fed a newly-created CompoundTag (this part may be improved in the future).
- New internal methods Tile->readSaveData() and Tile->writeSaveData() have been added. Instead of overriding __construct() and saveNBT() to load and save properties from NBT, you should now implement these methods instead.
This is not final and will see further changes before it's done.
2018-06-03 18:29:08 +01:00
Dylan K. Taylor
a22e5616f6
Fixed tile and furnace custom names not being visible
...
This is caused by the Spawnable constructor calling spawnToAll() before the tile is fully initialized. I really really really hate constructors that _DO_ things by themselves.
2018-06-03 17:02:00 +01:00
Dylan K. Taylor
b1cb63ebd6
Tile: make ContainerTrait and NameableTrait non-dependent on context-retained NBT
2018-06-03 16:32:05 +01:00
Dylan K. Taylor
6aaaaefd2f
Make tiles less dependent on runtime NBT, use properties instead
...
This will ultimately culminate in the complete removal of runtime NBT, so plugins should also follow these steps if they have custom data.
2018-06-03 12:50:16 +01:00
Dylan K. Taylor
1bb0337420
Tile: Improved Nameable and NameableTrait to cut down code duplication
2018-06-02 15:17:32 +01:00
Dylan K. Taylor
556a465c05
Container tiles: remove unnecessary ListTag Items creation
...
the existence of this tag is checked for anyway.
2018-04-13 11:27:11 +01:00
Dylan K. Taylor
ac5a91b67e
Cleaned up bool comparison mess
2018-03-19 14:10:55 +00:00
Dylan K. Taylor
c4486d9ad7
Tile: Cleaned up utterly pointless overcomplicated code for inventories
2018-02-06 13:01:54 +00:00
Dylan K. Taylor
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
Dylan K. Taylor
91c256f1a9
Added Level->getTileAt()
2017-10-30 13:36:42 +00:00
Dylan K. Taylor
93443992be
Fixed chests not getting updated properly on pair/unpair, close #1514
...
it wasn't clearing spawn compound caches or chunk caches
2017-10-30 11:50:02 +00:00
Dylan K. Taylor
5a353012de
Clean up some unused imports
2017-10-19 16:39:34 +01:00
Dylan K. Taylor
68ac4f538f
Added ContainerTrait, reduce copy-pasted code in Tile
2017-10-16 20:01:17 +01:00
Dylan K. Taylor
f4ff5d81ea
Added missing parent calls for saveNBT() in Chest and Furnace
2017-10-16 18:56:48 +01:00
Dylan K. Taylor
28a840d161
Make use of CompoundTag->hasTag()
2017-10-16 18:32:08 +01:00
Dylan K. Taylor
20b86bdea8
Cleaned up tile NBT handling, use new CompoundTag API methods
2017-10-16 16:48:24 +01:00
Dylan K. Taylor
0b1a9ba062
Added more typehints to Tile namespace
2017-10-16 16:14:44 +01:00
Dylan K. Taylor
95fa1824c8
Use a trait for nameable tiles instead of repeating code
2017-10-16 12:32:10 +01:00
Dylan K. Taylor
68809d992b
Added BaseInventory->removeAllViewers()
2017-10-16 11:15:03 +01:00
Dylan K. Taylor
cd8006e242
Use constructor parameter for ListTags instead of setTagType() and removed some unnecessary type setting
2017-10-14 13:49:24 +01:00
Dylan K. Taylor
b7a9e10d49
Some cleanup to how tiles are created
2017-10-11 18:08:08 +01:00
Dylan K. Taylor
ef6250967f
Use Item->isNull() more
2017-09-21 10:29:29 +01:00
Dylan K. Taylor
85b2b2ae2e
Don't send tile inventory slots during the constructor
...
This is completely pointless and a waste of time.
2017-09-20 10:15:28 +01:00
Dylan K. Taylor
0b83c61494
Fixed cyclic reference with chest tiles and DoubleChestInventory
2017-09-03 11:24:34 +01:00
Dylan K. Taylor
876659cc73
Item factory refactor and added capability to register custom items
2017-08-21 17:49:26 +01:00
Dylan K. Taylor
dc3f13cd30
Cleanup from previous commit
2017-08-17 09:42:00 +01:00
Dylan K. Taylor
b4c4005009
Some condition simplifications suggested by static analysis
2017-08-16 20:06:48 +01:00
Muqsit Rayyan
7d3fca83f0
Tile NBT usage enhancements ( #1259 )
...
* Do not create new NBT objects on Tile::getSpawnCompound()
* PocketMine's string formatting
* Remove more useless array indices and create lesser new NBT objects.
* Remove unused imports and type-hint Sign::setText() params
* Do not mess with Sign::setText() params due to #1204
* Fix formatting
* Make getSpawnCompound() final and add abstract addAdditionalSpawnData()
* Make the same changes for Bed tile
* Fix a missing "->" and remove some unneeded int casting.
2017-08-06 12:35:37 +01:00
Dylan K. Taylor
c3b8be3f60
and more typehints
2017-07-14 10:56:51 +01:00
Dylan K. Taylor
a365c831a8
Fixed some doc problems
2017-06-25 12:07:28 +01:00
Dylan K. Taylor
890f72dbf2
Type-hinted NBT tag constructors, made getValue() and setValue() more strict, fix dozens of assorted related bugs
2017-06-08 19:17:52 +01:00
Dylan K. Taylor
51b0673b4b
Bite the bullet and enable strict types on everything
2017-06-07 12:53:16 +01:00
Dylan K. Taylor
2673e4de7f
More anti-leak measures for double chest inventory issues
2017-03-19 11:25:56 +00:00
Dylan K. Taylor
c21197ef17
Removed entanglement between chunks and providers. WARNING: BREAKING API CHANGES.
...
- All entity and tile constructors now require a \pocketmine\level\Level instead of a \pocketmine\level\format\Chunk.
- Chunk->getProvider() and Chunk->setProvider() have been removed.
- Chunk::__construct() has had the $provider parameter removed.
- Chunk->unload() has had the unused $save parameter removed.
- ChunkEvents now take a Level parameter instead of going through the Chunk
API bump to 3.0.0-ALPHA4
2017-02-21 17:08:45 +00:00
Dylan K. Taylor
e4aa3d72fe
Check for unloaded chunks, fix triple chest bug, fix Chest object leak, close #256
...
Revert "Fixed double chest tile memory leak on shutdown, close #256 (#261 )"
This reverts commit 9869aaa46ae38443ad860e9f4e5bb240d80536c7.
2017-01-19 15:34:51 +00:00
Dylan K. Taylor
9869aaa46a
Fixed double chest tile memory leak on shutdown, close #256 ( #261 )
2017-01-15 19:41:15 +00:00
Dylan K. Taylor
9004417456
Fixed file headers ( #255 )
2017-01-13 16:57:05 +00:00
Dylan K. Taylor
4c49db6036
New generic in-memory chunk format, fixed 0.17.0.1 chunk loading
...
Terrible performance, needs profiling. TODO: fix this.
2016-11-27 21:57:59 +00:00
Dylan K. Taylor
e51a2725de
Remove circular dependency between Item and NBT modules ( #121 )
2016-11-25 10:17:50 +00:00
SOF3
6fc435da0e
Imports rearrangement
2016-10-03 00:43:46 +08:00
Shoghi Cervantes
7f8b39a63c
Renamed NBT tags to have Tag in the name
2015-08-23 00:25:29 +02:00
Shoghi Cervantes
3e2cce3c2c
use cleanup
2015-08-07 21:26:24 +02:00
Shoghi Cervantes
696edfd31f
Added custom block data (example, chests), better deep checking of same NBT
2015-08-07 17:24:35 +02:00
Shoghi Cervantes
75b7b03857
Added support for more NBT data, renaming inventories, fixed tags not being saved, added support for tags in /give
2015-08-07 16:28:27 +02:00
Shoghi Cervantes
02cb9d69a9
Save items properly on several places, added NBT::getItemHelper() and NBT::putItemHelper()
2015-08-06 21:44:00 +02:00
Shoghi Cervantes
4258e22c02
Made some changes for 0.12
2015-08-01 19:14:44 +02:00
Shoghi Cervantes
f88aed1208
Fixed NBT parsing on false properties
2015-04-20 13:57:16 +02:00