SPIGOT-2706: Implement support for Lock NBT Tag

Containers may now implement the Lockable interface.

By: Senmori <thesenmori@gmail.com>
This commit is contained in:
Bukkit/Spigot
2016-10-21 16:32:56 +11:00
parent 5945e37165
commit a05a1330d3
8 changed files with 38 additions and 7 deletions

View File

@@ -9,7 +9,7 @@ import org.bukkit.potion.PotionEffectType;
/** /**
* Represents a beacon. * Represents a beacon.
*/ */
public interface Beacon extends BlockState, InventoryHolder { public interface Beacon extends BlockState, InventoryHolder, Lockable {
/** /**
* Returns the list of players within the beacon's range of effect. * Returns the list of players within the beacon's range of effect.

View File

@@ -6,7 +6,7 @@ import org.bukkit.inventory.InventoryHolder;
/** /**
* Represents a brewing stand. * Represents a brewing stand.
*/ */
public interface BrewingStand extends BlockState, InventoryHolder { public interface BrewingStand extends BlockState, InventoryHolder, Lockable {
/** /**
* How much time is left in the brewing cycle * How much time is left in the brewing cycle

View File

@@ -6,7 +6,7 @@ import org.bukkit.inventory.InventoryHolder;
/** /**
* Represents a chest. * Represents a chest.
*/ */
public interface Chest extends BlockState, InventoryHolder { public interface Chest extends BlockState, InventoryHolder, Lockable {
/** /**
* Returns the chest's inventory. If this is a double chest, it returns * Returns the chest's inventory. If this is a double chest, it returns

View File

@@ -6,7 +6,7 @@ import org.bukkit.projectiles.BlockProjectileSource;
/** /**
* Represents a dispenser. * Represents a dispenser.
*/ */
public interface Dispenser extends BlockState, InventoryHolder { public interface Dispenser extends BlockState, InventoryHolder, Lockable {
/** /**
* Gets the BlockProjectileSource object for this dispenser. * Gets the BlockProjectileSource object for this dispenser.

View File

@@ -5,7 +5,7 @@ import org.bukkit.inventory.InventoryHolder;
/** /**
* Represents a dropper. * Represents a dropper.
*/ */
public interface Dropper extends BlockState, InventoryHolder { public interface Dropper extends BlockState, InventoryHolder, Lockable {
/** /**
* Tries to drop a randomly selected item from the Dropper's inventory, * Tries to drop a randomly selected item from the Dropper's inventory,
* following the normal behavior of a Dropper. * following the normal behavior of a Dropper.

View File

@@ -6,7 +6,7 @@ import org.bukkit.inventory.InventoryHolder;
/** /**
* Represents a furnace. * Represents a furnace.
*/ */
public interface Furnace extends BlockState, InventoryHolder { public interface Furnace extends BlockState, InventoryHolder, Lockable {
/** /**
* Get burn time. * Get burn time.

View File

@@ -5,6 +5,6 @@ import org.bukkit.inventory.InventoryHolder;
/** /**
* Represents a hopper. * Represents a hopper.
*/ */
public interface Hopper extends BlockState, InventoryHolder { public interface Hopper extends BlockState, InventoryHolder, Lockable {
} }

View File

@@ -0,0 +1,31 @@
package org.bukkit.block;
/**
* Represents a block (usually a container) that may be locked. When a lock is
* active an item with a name corresponding to the key will be required to open
* this block.
*/
public interface Lockable {
/**
* Checks if the container has a valid (non empty) key.
*
* @return true if the key is valid.
*/
boolean isLocked();
/**
* Gets the key needed to access the container.
*
* @return the key needed.
*/
String getLock();
/**
* Sets the key required to access this container. Set to null (or empty
* string) to remove key.
*
* @param key the key required to access the container.
*/
void setLock(String key);
}