Add 'offhand' for setting the NPC's offhand item

This commit is contained in:
fullwall 2016-03-06 16:29:12 +08:00
parent 2e41832873
commit 4bb29894bd

View File

@ -44,24 +44,42 @@ public class EquipmentEditor extends Editor {
@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void onPlayerChat(final AsyncPlayerChatEvent event) { public void onPlayerChat(final AsyncPlayerChatEvent event) {
if (!event.getMessage().equals("helmet") if (event.getMessage().equals("helmet")
|| !event.getPlayer().hasPermission("citizens.npc.edit.equip.any-helmet")) && !event.getPlayer().hasPermission("citizens.npc.edit.equip.any-helmet")) {
return; Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() {
Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() { @Override
@Override public void run() {
public void run() { if (!event.getPlayer().isValid())
if (!event.getPlayer().isValid()) return;
return; ItemStack hand = event.getPlayer().getInventory().getItemInMainHand();
ItemStack hand = event.getPlayer().getItemInHand(); if (hand.getType() == Material.AIR || hand.getAmount() <= 0) {
if (hand.getType() == Material.AIR || hand.getAmount() <= 0) { return;
return; }
npc.getTrait(Equipment.class).set(EquipmentSlot.HELMET,
new ItemStack(event.getPlayer().getInventory().getItemInMainHand().getType(), 1));
hand.setAmount(hand.getAmount() - 1);
event.getPlayer().getInventory().setItemInMainHand(hand);
} }
npc.getTrait(Equipment.class).set(EquipmentSlot.HELMET, });
new ItemStack(event.getPlayer().getItemInHand().getType(), 1)); }
hand.setAmount(hand.getAmount() - 1); if (event.getMessage().equals("offhand")
event.getPlayer().setItemInHand(hand); && !event.getPlayer().hasPermission("citizens.npc.edit.equip.offhand")) {
} Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() {
}); @Override
public void run() {
if (!event.getPlayer().isValid())
return;
ItemStack hand = event.getPlayer().getInventory().getItemInMainHand();
if (hand.getType() == Material.AIR || hand.getAmount() <= 0) {
return;
}
npc.getTrait(Equipment.class).set(EquipmentSlot.OFF_HAND,
new ItemStack(event.getPlayer().getInventory().getItemInMainHand().getType(), 1));
hand.setAmount(hand.getAmount() - 1);
event.getPlayer().getInventory().setItemInMainHand(hand);
}
});
}
} }
@EventHandler @EventHandler