From 138aaacbcf306cd55740c9a50f22d47b90b24b58 Mon Sep 17 00:00:00 2001 From: fullwall Date: Tue, 14 Jun 2022 21:26:18 +0800 Subject: [PATCH] Fix null check in age --- .../commands/gui/NPCConfigurator.java | 6 +++--- .../src/main/java/net/citizensnpcs/trait/Age.java | 2 +- .../java/net/citizensnpcs/trait/ShopTrait.java | 15 +++++++++++---- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/main/src/main/java/net/citizensnpcs/commands/gui/NPCConfigurator.java b/main/src/main/java/net/citizensnpcs/commands/gui/NPCConfigurator.java index 0e5f1b33c..a2d18ba65 100644 --- a/main/src/main/java/net/citizensnpcs/commands/gui/NPCConfigurator.java +++ b/main/src/main/java/net/citizensnpcs/commands/gui/NPCConfigurator.java @@ -10,7 +10,7 @@ import org.bukkit.inventory.ItemStack; import com.google.common.collect.Maps; import net.citizensnpcs.api.gui.CitizensInventoryClickEvent; -import net.citizensnpcs.api.gui.InputMenu; +import net.citizensnpcs.api.gui.InputMenus; import net.citizensnpcs.api.gui.InventoryMenuPage; import net.citizensnpcs.api.gui.InventoryMenuSlot; import net.citizensnpcs.api.gui.Menu; @@ -72,8 +72,8 @@ public class NPCConfigurator extends InventoryMenuPage { SLOT_MAP.put(0, new ConfiguratorInfo(Util.getFallbackMaterial("OAK_SIGN", "SIGN"), (evt) -> { evt.slot.setDescription("Edit NPC name\n" + evt.npc.getName()); if (evt.event != null) { - evt.ctx.getMenu() - .transition(InputMenu.setter(() -> evt.npc.getName(), (input) -> evt.npc.setName(input))); + evt.ctx.getMenu().transition( + InputMenus.stringSetter(() -> evt.npc.getName(), (input) -> evt.npc.setName(input))); } })); diff --git a/main/src/main/java/net/citizensnpcs/trait/Age.java b/main/src/main/java/net/citizensnpcs/trait/Age.java index eaa2658dc..8f5eb7c17 100644 --- a/main/src/main/java/net/citizensnpcs/trait/Age.java +++ b/main/src/main/java/net/citizensnpcs/trait/Age.java @@ -53,7 +53,7 @@ public class Age extends Trait implements Toggleable { } else if (npc.getEntity() instanceof Zombie) { ((Zombie) npc.getEntity()).setBaby(age < 0); ageable = null; - } else if (npc.getEntity().getType().name().equals("TADPOLE")) { + } else if (npc.isSpawned() && npc.getEntity().getType().name().equals("TADPOLE")) { ((Tadpole) npc.getEntity()).setAge(age); ageable = null; } else { diff --git a/main/src/main/java/net/citizensnpcs/trait/ShopTrait.java b/main/src/main/java/net/citizensnpcs/trait/ShopTrait.java index b0b8f6f37..37a3dc34e 100644 --- a/main/src/main/java/net/citizensnpcs/trait/ShopTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/ShopTrait.java @@ -13,7 +13,8 @@ import com.google.common.collect.Maps; import net.citizensnpcs.api.gui.CitizensInventoryClickEvent; import net.citizensnpcs.api.gui.ClickHandler; -import net.citizensnpcs.api.gui.InputMenu; +import net.citizensnpcs.api.gui.InputMenus; +import net.citizensnpcs.api.gui.InputMenus.Choice; import net.citizensnpcs.api.gui.InventoryMenu; import net.citizensnpcs.api.gui.InventoryMenuPage; import net.citizensnpcs.api.gui.InventoryMenuSlot; @@ -49,7 +50,7 @@ public class ShopTrait extends Trait { @Persist private String requiredPermission; @Persist - private final ShopType type = ShopType.VIEW; + private ShopType type = ShopType.VIEW; private NPCShop(String name) { this.name = name; @@ -99,13 +100,19 @@ public class ShopTrait extends Trait { @ClickHandler(slot = { 0, 2 }) public void onPermissionChange(InventoryMenuSlot slot, CitizensInventoryClickEvent event) { event.setCancelled(true); - ctx.getMenu() - .transition(InputMenu.setter(() -> shop.getRequiredPermission(), (p) -> shop.setPermission(p))); + ctx.getMenu().transition( + InputMenus.stringSetter(() -> shop.getRequiredPermission(), (p) -> shop.setPermission(p))); } @ClickHandler(slot = { 0, 0 }) public void onShopTypeChange(InventoryMenuSlot slot, CitizensInventoryClickEvent event) { event.setCancelled(true); + ctx.getMenu().transition(InputMenus. picker("Edit shop type", (chosen) -> { + shop.type = chosen.getValue(); + }, Choice.of(ShopType.BUY, Material.DIAMOND, "Players buy items", shop.type == ShopType.BUY), + Choice.of(ShopType.SELL, Material.EMERALD, "Players sell items", shop.type == ShopType.SELL), + Choice.of(ShopType.VIEW, Material.ENDER_EYE, "Players view items only", + shop.type == ShopType.VIEW))); } }