1
我想要移除玩家放棄某些物品的能力,同時移除除了我想取消的那些物品之外的所有物品,例如:玩家不能放下一把劍,但是當他放下一個蘑菇湯的空碗時,清理掉。我在主類上註冊了兩個監聽器類。bukkit - 防摔預防不起作用?
聽衆:
@EventHandler
public void onPlayerDropItem(PlayerDropItemEvent e) {
e.getItemDrop().remove();
}
PreventDropping:
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled=false)
public void onPlayerDropItem(PlayerDropItemEvent e) {
if(e.getItemDrop().equals(new ItemStack(Material.MUSHROOM_SOUP))
|| (e.getItemDrop().equals(new ItemStack(Material.DIAMOND_SWORD)))
|| (e.getItemDrop().equals(new ItemStack(Material.IRON_SWORD)))
|| (e.getItemDrop().equals(new ItemStack(Material.TNT)))
|| (e.getItemDrop().equals(new ItemStack(Material.ARROW)))
|| (e.getItemDrop().equals(new ItemStack(Material.BOW)))
|| (e.getItemDrop().equals(new ItemStack(Material.WOOD_SWORD)))
|| (e.getItemDrop().equals(new ItemStack(Material.STONE_SWORD))))
{
e.setCancelled(true);
}
}
主要(的onLoad部分):
@Override
public void onEnable() {
System.out.println("Main plugin enabled");
getCommand("pvp").setExecutor(new PvP(this));
getCommand("instakiller").setExecutor(new InstaKiller(this));
getCommand("wizard").setExecutor(new Wizard(this));
getCommand("archer").setExecutor(new Archer(this));
getServer().getPluginManager().registerEvents(new Listeners(this), this);
getServer().getPluginManager().registerEvents(new PreventDropping(this), this);
}
可悲的是,服務器會忽略我的第二個偵聽器,並清除所有的下降,而不是因此無法刪除PreventDropping中列出的itens。哪裏不對?
附加問題:箭頭錯誤,如評論中所述。
@EventHandler
public void onPlayerDropItem(PlayerDropItemEvent e) {
if(e.getItemDrop().getItemStack().getType() == Material.DIAMOND_SWORD ||
(e.getItemDrop().getItemStack().getType() == Material.IRON_SWORD) ||
(e.getItemDrop().getItemStack().getType() == Material.STONE_SWORD) ||
(e.getItemDrop().getItemStack().getType() == Material.WOOD_SWORD) ||
(e.getItemDrop().getItemStack().getType() == Material.TNT) ||
(e.getItemDrop().getItemStack().getType() == Material.BOW) ||
(e.getItemDrop().getItemStack().getType() == Material.ARROW) ||
(e.getItemDrop().getItemStack().getType() == Material.BLAZE_ROD)) {
e.setCancelled(true);
} else {
e.getItemDrop().remove();
}
}
謝謝!有效。 – MucaP
箭頭怎麼樣?當我放棄它們時,它們會自我複製,當我達到64時,它們就消失了@Squiddie – MucaP
使用OR ||像你在你的代碼中完成的那樣。 if(event.getItemDrop()。getItemStack()。getType()== Material.MUSHROOM_SOUP)|| event.getItemDrop()。getItemStack()。getType()== Material.ARROW'等 – Squiddie