下面列出了怎么用org.bukkit.block.Container的API类实例代码及写法,或者点击链接到github查看源代码。
@EventHandler
public void onDispenserShear(BlockShearEntityEvent event) {
if(!StackTools.hasSizeMoreThanOne(event.getEntity())) {
return;
}
if(event.getEntity() instanceof Sheep) {
Sheep sheep = (Sheep) event.getEntity();
if(sm.getLogic().doSheepShearAll(sheep, event.getTool())){
ItemStack is = ItemTools.damageItem(event.getTool(), StackTools.getSize(event.getEntity()));
sm.getServer().getScheduler().runTask(sm, () -> {
Container dispenser = (Container) event.getBlock().getState();
int itemId = dispenser.getInventory().first(event.getTool());
dispenser.getInventory().setItem(itemId, is);
});
return;
}
sm.getLogic().doSheepShearSingle(sheep);
} else {
throw new UnsupportedOperationException("This is not implemented!");
}
}
@Override
public void onProtectionInteract(LWCProtectionInteractEvent event) {
LWC lwc = event.getLWC();
Protection protection = event.getProtection();
Set<String> actions = event.getActions();
boolean canAccess = event.canAccess();
Player bPlayer = event.getPlayer();
LWCPlayer player = lwc.wrapPlayer(bPlayer);
if (!actions.contains("dropTransferSelect")) {
return;
}
if (!canAccess) {
lwc.sendLocale(player, "protection.interact.dropxfer.noaccess");
} else {
if (event.getEvent().getClickedBlock() instanceof Container) {
lwc.sendLocale(player, "protection.interact.dropxfer.notchest");
player.removeAllActions();
event.setResult(Result.CANCEL);
return;
}
Mode mode = new Mode();
mode.setName("dropTransfer");
mode.setData(protection.getId() + "");
mode.setPlayer(bPlayer);
player.enableMode(mode);
mode = new Mode();
mode.setName("+dropTransfer");
mode.setPlayer(bPlayer);
player.enableMode(mode);
lwc.sendLocale(player, "protection.interact.dropxfer.finalize");
}
player.removeAllActions(); // ignore the persist mode
}
public static boolean isValidContainer(Block block) {
if (Version.isAtLeast(Version.MC1_12_1)) {
return block.getState() instanceof Container;
} else {
return block.getState() instanceof Chest;
}
}
public static boolean isValidContainer(Inventory inventory) {
if (Version.isAtLeast(Version.MC1_12_1)) {
return inventory.getHolder() instanceof Container;
} else {
return inventory.getHolder() instanceof Chest;
}
}
public static Block getHolderBlock(InventoryHolder holder) {
if (Version.isAtLeast(Version.MC1_12_1)) {
return ((Container) holder).getBlock();
} else {
return ((Chest) holder).getBlock();
}
}
public static Inventory getBlockInventory(Block block) {
if (Version.isAtLeast(Version.MC1_12_1)) {
return ((Container) block.getState()).getInventory();
} else {
return ((Chest) block.getState()).getInventory();
}
}