下面列出了怎么用org.bukkit.block.Dropper的API类实例代码及写法,或者点击链接到github查看源代码。
public static void destroyThisBlock(Block blk, Town town) {
WarRegen.saveBlock(blk, town.getName(), false);
switch (blk.getType()) {
case TRAPPED_CHEST:
((Chest)blk.getState()).getBlockInventory().clear();
break;
case CHEST:
((Chest)blk.getState()).getBlockInventory().clear();
break;
case DISPENSER:
((Dispenser)blk.getState()).getInventory().clear();
break;
case BURNING_FURNACE:
case FURNACE:
((Furnace)blk.getState()).getInventory().clear();
break;
case DROPPER:
((Dropper)blk.getState()).getInventory().clear();
break;
case HOPPER:
((Hopper)blk.getState()).getInventory().clear();
break;
default:
break;
}
ItemManager.setTypeId(blk, CivData.AIR);
ItemManager.setData(blk, 0x0, true);
}
private Inventory findIgnitionChamber(Block b) {
for (BlockFace face : faces) {
if (b.getRelative(face).getType() == Material.DROPPER && BlockStorage.check(b.getRelative(face), "IGNITION_CHAMBER")) {
return ((Dropper) b.getRelative(face).getState()).getInventory();
}
}
return null;
}
private static String blockToString(Block blk, boolean save_as_air) {
if (save_as_air) {
return blockAsAir(blk);
}
else {
String str = blockBasicString(blk);
Inventory inv = null;
switch (blk.getType()) {
case TRAPPED_CHEST:
case CHEST:
inv = ((Chest)blk.getState()).getBlockInventory();
str += blockInventoryString(inv);
break;
case DISPENSER:
inv = ((Dispenser)blk.getState()).getInventory();
str += blockInventoryString(inv);
break;
case BURNING_FURNACE:
case FURNACE:
inv = ((Furnace)blk.getState()).getInventory();
str += blockInventoryString(inv);
break;
case DROPPER:
inv = ((Dropper)blk.getState()).getInventory();
str += blockInventoryString(inv);
break;
case HOPPER:
inv = ((Hopper)blk.getState()).getInventory();
str += blockInventoryString(inv);
break;
case SIGN:
case SIGN_POST:
case WALL_SIGN:
Sign sign = (Sign)blk.getState();
str += blockSignString(sign);
break;
default:
break;
}
return str;
}
}
private static void restoreBlockFromString(String line) {
String[] split = line.split(":");
int type = Integer.valueOf(split[0]);
byte data = Byte.valueOf(split[1]);
int x = Integer.valueOf(split[2]);
int y = Integer.valueOf(split[3]);
int z = Integer.valueOf(split[4]);
String world = split[5];
Block block = BukkitObjects.getWorld(world).getBlockAt(x,y,z);
ItemManager.setTypeId(block, type);
ItemManager.setData(block, data, false);
// End of basic block info, try to get more now.
Inventory inv = null;
switch (block.getType()) {
case TRAPPED_CHEST:
inv = ((Chest)block.getState()).getBlockInventory();
InventorySerializer.StringToInventory(inv, split[6]);
break;
case CHEST:
inv = ((Chest)block.getState()).getBlockInventory();
InventorySerializer.StringToInventory(inv, split[6]);
break;
case DISPENSER:
inv = ((Dispenser)block.getState()).getInventory();
InventorySerializer.StringToInventory(inv, split[6]);
break;
case BURNING_FURNACE:
case FURNACE:
inv = ((Furnace)block.getState()).getInventory();
InventorySerializer.StringToInventory(inv, split[6]);
break;
case DROPPER:
inv = ((Dropper)block.getState()).getInventory();
InventorySerializer.StringToInventory(inv, split[6]);
break;
case HOPPER:
inv = ((Hopper)block.getState()).getInventory();
InventorySerializer.StringToInventory(inv, split[6]);
break;
case SIGN:
case SIGN_POST:
case WALL_SIGN:
Sign sign = (Sign)block.getState();
String[] messages = split[6].split(",");
for (int i = 0; i < 4; i++) {
if (messages[i] != null) {
sign.setLine(i, messages[i]);
}
}
sign.update();
break;
default:
break;
}
}
@EventHandler
public void onInteraction(PlayerInteractEvent event) {
if (testObserver(event.getPlayer())) {
event.setCancelled(true);
if ((event.getAction().equals(Action.RIGHT_CLICK_AIR) || event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) && (event.getPlayer().getInventory().getItemInMainHand() != null && event.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.WRITTEN_BOOK))){
event.setUseInteractedBlock(Event.Result.DENY);
event.setUseItemInHand(Event.Result.ALLOW);
}
if (event.getClickedBlock() != null && !event.getPlayer().isSneaking() && event.getAction() == Action.RIGHT_CLICK_BLOCK) {
if (event.getClickedBlock().getType().equals(Material.CHEST) || event.getClickedBlock().getType().equals(Material.TRAPPED_CHEST)) {
Inventory chest = Bukkit.createInventory(null, ((Chest) event.getClickedBlock().getState()).getInventory().getSize());
for (int i = 0; i < ((Chest) event.getClickedBlock().getState()).getInventory().getSize(); i++) {
chest.setItem(i, ((Chest) event.getClickedBlock().getState()).getInventory().getItem(i));
}
event.getPlayer().openInventory(chest);
}
if (event.getClickedBlock().getType().equals(Material.FURNACE) || event.getClickedBlock().getType().equals(Material.BURNING_FURNACE)) {
Inventory furnace = Bukkit.createInventory(null, InventoryType.FURNACE);
for (int i = 0; i < ((Furnace) event.getClickedBlock().getState()).getInventory().getSize(); i++) {
furnace.setItem(i, ((Furnace) event.getClickedBlock().getState()).getInventory().getItem(i));
}
event.getPlayer().openInventory(furnace);
}
if (event.getClickedBlock().getType().equals(Material.DISPENSER)) {
Inventory dispenser = Bukkit.createInventory(null, InventoryType.DISPENSER);
for (int i = 0; i < ((Dispenser) event.getClickedBlock().getState()).getInventory().getSize(); i++) {
dispenser.setItem(i, ((Dispenser) event.getClickedBlock().getState()).getInventory().getItem(i));
}
event.getPlayer().openInventory(dispenser);
}
if (event.getClickedBlock().getType().equals(Material.DROPPER)) {
Inventory dropper = Bukkit.createInventory(null, InventoryType.DROPPER);
for (int i = 0; i < ((Dropper) event.getClickedBlock().getState()).getInventory().getSize(); i++) {
dropper.setItem(i, ((Dropper) event.getClickedBlock().getState()).getInventory().getItem(i));
}
event.getPlayer().openInventory(dropper);
}
if (event.getClickedBlock().getType().equals(Material.HOPPER)) {
Inventory hopper = Bukkit.createInventory(null, InventoryType.HOPPER);
for (int i = 0; i < ((Hopper) event.getClickedBlock().getState()).getInventory().getSize(); i++) {
hopper.setItem(i, ((Hopper) event.getClickedBlock().getState()).getInventory().getItem(i));
}
event.getPlayer().openInventory(hopper);
}
if (event.getClickedBlock().getType().equals(Material.BREWING_STAND)) {
Inventory brewingStand = Bukkit.createInventory(null, InventoryType.BREWING);
for (int i = 0; i < ((BrewingStand) event.getClickedBlock().getState()).getInventory().getSize(); i++) {
brewingStand.setItem(i, ((BrewingStand) event.getClickedBlock().getState()).getInventory().getItem(i));
}
event.getPlayer().openInventory(brewingStand);
}
if (event.getClickedBlock().getType().equals(Material.BEACON)) {
Inventory beacon = Bukkit.createInventory(null, InventoryType.BEACON);
for (int i = 0; i < ((Beacon) event.getClickedBlock().getState()).getInventory().getSize(); i++) {
beacon.setItem(i, ((Beacon) event.getClickedBlock().getState()).getInventory().getItem(i));
}
event.getPlayer().openInventory(beacon);
}
}
}
}