55 lines
2.1 KiB
Java
55 lines
2.1 KiB
Java
package net.citizensnpcs.editor;
|
|
|
|
import org.bukkit.Material;
|
|
import org.bukkit.event.Event.Result;
|
|
import org.bukkit.event.inventory.InventoryAction;
|
|
import org.bukkit.event.inventory.InventoryType;
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import net.citizensnpcs.api.gui.CitizensInventoryClickEvent;
|
|
import net.citizensnpcs.api.gui.ClickHandler;
|
|
import net.citizensnpcs.api.gui.InjectContext;
|
|
import net.citizensnpcs.api.gui.InventoryMenuPage;
|
|
import net.citizensnpcs.api.gui.InventoryMenuSlot;
|
|
import net.citizensnpcs.api.gui.Menu;
|
|
import net.citizensnpcs.api.gui.MenuContext;
|
|
import net.citizensnpcs.api.gui.MenuPattern;
|
|
import net.citizensnpcs.api.gui.MenuSlot;
|
|
import net.citizensnpcs.api.npc.NPC;
|
|
import net.citizensnpcs.trait.Saddle;
|
|
|
|
@Menu(title = "NPC 装备", type = InventoryType.HOPPER, dimensions = { 0, 5 })
|
|
@MenuSlot(slot = { 0, 0 }, material = Material.SADDLE, amount = 1, lore = "在此处放置马鞍 ->")
|
|
@MenuPattern(
|
|
offset = { 0, 2 },
|
|
slots = { @MenuSlot(pat = 'x', compatMaterial = { "BARRIER", "FIRE" }, title = "<4>未使用") },
|
|
value = "xxx")
|
|
public class SteerableEquipperGUI extends InventoryMenuPage {
|
|
@InjectContext
|
|
private NPC npc;
|
|
@MenuSlot(slot = { 0, 1 })
|
|
private InventoryMenuSlot saddle;
|
|
|
|
@Override
|
|
public void initialise(MenuContext ctx) {
|
|
Saddle trait = npc.getOrAddTrait(Saddle.class);
|
|
if (trait.useSaddle()) {
|
|
saddle.setItemStack(new ItemStack(Material.SADDLE, 1));
|
|
}
|
|
}
|
|
|
|
@ClickHandler(slot = { 0, 1 }, filter = { InventoryAction.PICKUP_ALL, InventoryAction.PLACE_ALL })
|
|
public void setSaddle(InventoryMenuSlot slot, CitizensInventoryClickEvent event) {
|
|
if (event.getAction() == InventoryAction.PICKUP_ALL && event.getCursor() != null) {
|
|
event.setResult(Result.DENY);
|
|
return;
|
|
}
|
|
if (event.getAction() == InventoryAction.PLACE_ALL
|
|
&& (event.getCurrentItem() != null || event.getCursor().getType() != Material.SADDLE)) {
|
|
event.setResult(Result.DENY);
|
|
return;
|
|
}
|
|
npc.getOrAddTrait(Saddle.class).toggle();
|
|
}
|
|
}
|