123 Commits

Author SHA1 Message Date
blablubbabc
13caf84858 SPIGOT-5370: Fix Block#rayTrace considering other blocks. 2019-10-18 20:28:06 +02:00
md_5
401432b995 SPIGOT-4962: Bubble column blocks not classified as liquid 2019-05-20 19:27:02 +10:00
md_5
a584320126 SPIGOT-4836: Breaking barrier block causes error 2019-05-02 09:23:16 +10:00
md_5
e3df3d5cda Add Override annotations where appropriate 2019-04-28 11:38:01 +10:00
md_5
5fea790398 Apply import ordering rules to CraftBukkit classes 2019-04-23 14:56:58 +10:00
md_5
a2d787f6eb Update to Minecraft 1.14-pre5 2019-04-23 12:00:00 +10:00
md_5
6430d9c0ba SPIGOT-4632: BlockState location is not fixed 2019-02-21 20:32:44 +11:00
md_5
9dc56581e6 SPIGOT-4570: Add FluidLevelChangeEvent 2019-01-08 21:23:11 +11:00
md_5
d05c8b1481 Mappings Update 2018-12-26 08:00:00 +11:00
md_5
1b982fd67e Tweak Block.getTemperature to return actual block temperature 2018-12-19 10:53:08 +11:00
Evoluseis
f55c819185 SPIGOT-2151: Add support for getting simple bounding box of a block 2018-12-19 10:34:47 +11:00
md_5
aa36c8417b Mappings Update 2018-12-06 10:00:00 +11:00
blablubbabc
4a47be6164 Add ray tracing and bounding box API 2018-10-26 20:00:00 +11:00
md_5
b4230a9a7e Update to Minecraft 1.13.2 2018-10-23 06:00:00 +11:00
blablubbabc
e3d7b2fd96 Add Block#isPassable 2018-10-13 09:49:25 +11:00
md_5
e7ced970d2 Catch plugins setting null Material or BlockData to blocks 2018-10-13 09:43:05 +11:00
md_5
c2cbdc5ab4 SPIGOT-4316: Do even less processing when block placement without physics requested 2018-08-27 18:29:28 +10:00
md_5
ce1af0c348 Update to Minecraft 1.13.1 2018-08-26 12:00:00 +10:00
md_5
5e3082c7d8 SPIGOT-4230: Improve legacy block types 2018-08-05 10:04:19 +10:00
md_5
69970127c1 SPIGOT-4221: Update surrounding blocks for cancelled break/place 2018-08-03 11:34:26 +10:00
md_5
4d3ef4821f SPIGOT-4164: Treat new _AIR blocks as air 2018-07-28 08:28:56 +10:00
md_5
6a109cf6bc SPIGOT-4124: Fix misplaced PISTON_HEAD 2018-07-24 08:25:13 +10:00
md_5
7c0f69e449 CraftBlock.toString shouldn't make legacy call 2018-07-20 16:10:48 +10:00
md_5
9c98002856 Fix Block.setType alone being treated as legacy 2018-07-18 16:59:41 +10:00
md_5
404d6e776e SPIGOT-4036: Handle regular/uncoloured shulker boxes 2018-07-18 09:45:27 +10:00
md_5
421c1728c8 Update to Minecraft 1.13-pre7 2018-07-15 10:00:00 +10:00
md_5
67b763c5a7 Fix Block PistonMoveReaction 2018-01-10 10:47:26 +11:00
Lukas Hennig
19507baf8b Improvements to BlockStates
* Actually capture all the data of TileEntities. This is done by creating a copy of the TileEntity. The methods of BlockState which currently directly access the TileEntity reference will modify the data of that TileEntity-snapshot instead.
* With the call to BlockState.update, the captured TileEntity data gets applied to the current TileEntity in the world.
* Methods which trigger block specific actions will use the current TileEntity from the world.
* CraftBlockState does not hand out the wrapped or the snapshot TileEntity directly. Instead, it provides an applyTo method to copy the data to a given TileEntity and a method to directly get a copy of the TileEntity NBT data represented by the BlockState. CraftMetaBlockState was updated to make use of that.
* Added #getSnapshotInventory() to bukkit which allows modifiying the captured inventory snapshots of containers.
* Tried to clarify which methods only work if the BlockState is placed, which methods require the block in the world to still be of the same type (methods which trigger actions), and that .getInventory() directly modifies the inventory of the block in the world if the BlockState is placed and becomes invalid if the block type is changed.

Backwards compatibility

* If the BlockState acts as InventoryHolder, getInventory() will still return the inventory directly backed by the TileEntity in the world (like before), and not the snapshot inventory. This compromise should reduce the potential of these changes to break existing plugins, or craftbukkit's own use of BlockState.
* The snapshot's inventory can be accessed by a new method getSnapshotInventory()
* In case the BlockState is not placed (if it was retrieved from the MetaBlockState of an item), the getInventory() method will however return the snapshot inventory. So that when the BlockState gets applied back to the item, the inventory changes are properly included.
* With the changes to CraftMetaBlockState it is no longer required to call the update method before passing a modified BlockState to the CraftMetaBlockState. For backwards compatibility the update method will simply return true for a non-placed BlockState, without actually doing anything.

Impact on plugins
* Restoring blocks now actually works as expected, properly restoring the TileEntity data, reglardless if the block changed its type in the meantime.
* Plugins are now consistently required to call the update method in order to apply changes to blocks. Though, regarding the Javadoc they should have been required to do so anyways.
* New feature: Plugins can take and modify inventory snapshots.
* Breaking change: If a plugin gets the BlockState of a block in the world, modifies the inventory returned by .getInventory(), and then tries to use the same BlockState to apply the TileEntity data to an ItemStack block meta, the ItemStack will use the snapshot inventory, disregarding the changes made to the inventory returned by .getInventory(). This is the compromise of .getInventory() returning the inventory directly backed by the TileEntity in the world.

Other fixes related to BlockState:
* TileEntityContainer#getLocation() will run into a NPE if the TileEntity is non-placed (ex. when getting the BlockState from a CraftMetaBlockState).
* Beacon.getEntitiesInRange() would previously throw a NPE if called for a non-placed BlockState. It was changed to now require to be placed and use the current TileEntity in the world. If the TileEntity in the world is no longer a beacon, it will return an empty list.
* EndGateway now supports setting and getting the exit location even for non-placed EndGateways (inside BlockStateMeta) by using / returning a location with world being null.
2017-08-05 14:37:19 +10:00
md_5
5195487ec6 Update to Minecraft 1.12-pre2 2017-05-14 12:00:00 +10:00
md_5
b6ad714e85 SPIGOT-2871: Improve BlockStates + BlockStateMeta 2016-12-02 09:29:33 +11:00
md_5
83fd16e453 SPIGOT-2835: CraftBlock getDrops Returns Air 2016-11-23 22:02:36 +11:00
md_5
c25ddf063a Update to Minecraft 1.11 2016-11-17 12:41:03 +11:00
md_5
6af9f5b84a SPIGOT-2679: Add meta for StructureBlock 2016-09-18 09:58:54 +10:00
md_5
09f1a19609 Hook into World for light getters due to additional validation. 2016-07-25 19:04:06 +10:00
md_5
02d704b55a SPIGOT-2503: Optimize block set 2016-07-08 14:05:22 +10:00
md_5
00359a18fa SPIGOT-2456: Don't wipe tiles if type is still the same 2016-06-27 11:25:49 +10:00
md_5
0ebb9c7afa BUILDTOOLS-251: Make much of Bukkit locale independent 2016-06-26 19:32:05 +10:00
md_5
568e27fbd0 Fix air setting block updates 2016-06-26 12:31:24 +10:00
md_5
341da0730b SPIGOT-611: Improve setBlock for tile->tile transitions 2016-06-25 20:16:48 +10:00
md_5
a28041daa7 SPIGOT-1292: BlockState based FlowerPot API. 2016-06-03 20:41:43 +10:00
md_5
4e19de1295 SPIGOT-2285: New CommandBlock types. 2016-05-16 16:38:43 +10:00
Matthew
da444904c2 Implement EndGateway state 2016-03-18 14:30:03 +11:00
md_5
aa008dff0f Update to Minecraft 1.9 2016-03-01 09:32:45 +11:00
md_5
6dfcbc61ab SPIGOT-204: Add way to set block type without using IDs or updating physics. 2014-12-22 19:48:02 +11:00
Thinkofdeath
733e4290d8 [Slightly breaking] setType(Id) will not longer reuse the previous data value
of the block and instead reset the the data value to the block's default
2014-12-02 12:03:02 +00:00
Thinkofdeath
923b375d8e Fix missed case in CraftBlock 2014-11-29 00:14:46 +00:00
Thinkofdeath
24557bc2b3 Update to Minecraft 1.8
For more information please see http://www.spigotmc.org/
2014-11-28 17:16:30 +11:00
Travis Watkins
dbb5e6e3cd Update CraftBukkit to Minecraft 1.7.10 2014-07-08 14:31:10 -05:00
Travis Watkins
8f771c7378 Update CraftBukkit to Minecraft 1.7.8 2014-04-11 22:28:35 -05:00
t00thpick1
a565486ee1 [Bleeding] Return correct drops for Cocoa blocks. Fixes BUKKIT-5159
For Cocoa Blocks, Block.getDropType() returns the item form of the Cocoa
block, rather than the Cocoa Bean item. Because of this, Cocoa blocks need
to have explicit handling in order to return the proper drop contents.
2013-12-13 22:42:39 -07:00