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