From f6d7ebe80909de50495e706df6e500805bd247b4 Mon Sep 17 00:00:00 2001 From: fullwall Date: Sat, 22 Oct 2022 10:42:44 +0800 Subject: [PATCH] Add STOP_ELYTRA PlayerAnimation, add a right click option to /npc shop to avoid having to make a command for it --- .../main/java/net/citizensnpcs/EventListen.java | 4 ++++ .../net/citizensnpcs/commands/NPCCommands.java | 2 +- .../java/net/citizensnpcs/trait/ShopTrait.java | 17 +++++++++++++++++ .../net/citizensnpcs/util/PlayerAnimation.java | 1 + .../nms/v1_10_R1/util/PlayerAnimationImpl.java | 3 +++ .../nms/v1_11_R1/util/PlayerAnimationImpl.java | 3 +++ .../nms/v1_12_R1/util/PlayerAnimationImpl.java | 3 +++ .../nms/v1_13_R2/util/PlayerAnimationImpl.java | 3 +++ .../nms/v1_14_R1/util/PlayerAnimationImpl.java | 3 +++ .../nms/v1_15_R1/util/PlayerAnimationImpl.java | 3 +++ .../nms/v1_16_R3/util/PlayerAnimationImpl.java | 3 +++ .../nms/v1_17_R1/util/PlayerAnimationImpl.java | 3 +++ .../nms/v1_18_R2/util/PlayerAnimationImpl.java | 3 +++ .../nms/v1_19_R1/util/PlayerAnimationImpl.java | 3 +++ 14 files changed, 53 insertions(+), 1 deletion(-) diff --git a/main/src/main/java/net/citizensnpcs/EventListen.java b/main/src/main/java/net/citizensnpcs/EventListen.java index 4543866aa..613da268d 100644 --- a/main/src/main/java/net/citizensnpcs/EventListen.java +++ b/main/src/main/java/net/citizensnpcs/EventListen.java @@ -106,6 +106,7 @@ import net.citizensnpcs.trait.CommandTrait; import net.citizensnpcs.trait.Controllable; import net.citizensnpcs.trait.CurrentLocation; import net.citizensnpcs.trait.ScoreboardTrait; +import net.citizensnpcs.trait.ShopTrait; import net.citizensnpcs.util.ChunkCoord; import net.citizensnpcs.util.Messages; import net.citizensnpcs.util.NMS; @@ -493,6 +494,9 @@ public class EventListen implements Listener { if (npc.hasTrait(CommandTrait.class)) { npc.getTraitNullable(CommandTrait.class).dispatch(player, CommandTrait.Hand.RIGHT); } + if (npc.hasTrait(ShopTrait.class)) { + npc.getTraitNullable(ShopTrait.class).onRightClick(player); + } } @EventHandler(priority = EventPriority.MONITOR) diff --git a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java index 7f06014f3..33a38b067 100644 --- a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java +++ b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java @@ -1523,7 +1523,7 @@ public class NPCCommands { @Command( aliases = { "npc" }, - modifiers = { "name" }, + modifiers = { "name", "hidename" }, usage = "name (-h(over))", desc = "Toggle nameplate visibility, or only show names on hover", min = 1, diff --git a/main/src/main/java/net/citizensnpcs/trait/ShopTrait.java b/main/src/main/java/net/citizensnpcs/trait/ShopTrait.java index adc505ffa..845df5a92 100644 --- a/main/src/main/java/net/citizensnpcs/trait/ShopTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/ShopTrait.java @@ -68,9 +68,18 @@ public class ShopTrait extends Trait { return StoredShops.GLOBAL_SHOPS.computeIfAbsent(name, NPCShop::new); } + public void onRightClick(Player player) { + NPCShop shop = getDefaultShop(); + if (shop.openOnRightClick) { + shop.display(player); + } + } + public static class NPCShop { @Persist(value = "") private String name; + @Persist + private boolean openOnRightClick; @Persist(reify = true) private final List pages = Lists.newArrayList(); @Persist @@ -497,6 +506,7 @@ public class ShopTrait extends Trait { this.ctx = ctx; ctx.getSlot(2).setDescription("Edit shop view permission
" + shop.getRequiredPermission()); ctx.getSlot(6).setDescription("Edit shop title
" + shop.title); + ctx.getSlot(8).setDescription("Show shop on right click
" + shop.openOnRightClick); } @MenuSlot(slot = { 0, 4 }, material = Material.FEATHER, amount = 1, title = "Edit shop items") @@ -529,6 +539,13 @@ public class ShopTrait extends Trait { Choice.of(ShopType.COMMAND, Material.ENDER_EYE, "Clicks trigger commands only", shop.type == ShopType.COMMAND))); } + + @MenuSlot(slot = { 0, 8 }, material = Material.COMMAND_BLOCK, amount = 1) + public void onToggleRightClick(InventoryMenuSlot slot, CitizensInventoryClickEvent event) { + event.setCancelled(true); + shop.openOnRightClick = !shop.openOnRightClick; + ctx.getSlot(8).setDescription("Show shop on right click
" + shop.openOnRightClick); + } } @Menu(title = "Shop", type = InventoryType.CHEST, dimensions = { 5, 9 }) diff --git a/main/src/main/java/net/citizensnpcs/util/PlayerAnimation.java b/main/src/main/java/net/citizensnpcs/util/PlayerAnimation.java index 15976627e..6a92134df 100644 --- a/main/src/main/java/net/citizensnpcs/util/PlayerAnimation.java +++ b/main/src/main/java/net/citizensnpcs/util/PlayerAnimation.java @@ -27,6 +27,7 @@ public enum PlayerAnimation { START_ELYTRA, START_USE_MAINHAND_ITEM, START_USE_OFFHAND_ITEM, + STOP_ELYTRA, STOP_SITTING, STOP_SLEEPING, STOP_SNEAKING, diff --git a/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/util/PlayerAnimationImpl.java b/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/util/PlayerAnimationImpl.java index 0caf61bac..e8ba9f0fa 100644 --- a/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/util/PlayerAnimationImpl.java +++ b/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/util/PlayerAnimationImpl.java @@ -37,6 +37,9 @@ public class PlayerAnimationImpl { case START_ELYTRA: player.M(); break; + case STOP_ELYTRA: + player.N(); + break; case START_USE_MAINHAND_ITEM: player.c(EnumHand.MAIN_HAND); sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player, diff --git a/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/util/PlayerAnimationImpl.java b/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/util/PlayerAnimationImpl.java index 25efb6978..42009736b 100644 --- a/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/util/PlayerAnimationImpl.java +++ b/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/util/PlayerAnimationImpl.java @@ -27,6 +27,9 @@ public class PlayerAnimationImpl { case START_ELYTRA: player.M(); break; + case STOP_ELYTRA: + player.N(); + break; case SLEEP: PacketPlayOutBed packet = new PacketPlayOutBed(player, new BlockPosition((int) player.locX, (int) player.locY, (int) player.locZ)); diff --git a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/PlayerAnimationImpl.java b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/PlayerAnimationImpl.java index b0119f33c..a40fed451 100644 --- a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/PlayerAnimationImpl.java +++ b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/PlayerAnimationImpl.java @@ -37,6 +37,9 @@ public class PlayerAnimationImpl { case START_ELYTRA: player.N(); break; + case STOP_ELYTRA: + player.O(); + break; case START_USE_MAINHAND_ITEM: player.c(EnumHand.MAIN_HAND); sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player, diff --git a/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/PlayerAnimationImpl.java b/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/PlayerAnimationImpl.java index 8d93ae01a..d24f7b7ef 100644 --- a/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/PlayerAnimationImpl.java +++ b/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/PlayerAnimationImpl.java @@ -37,6 +37,9 @@ public class PlayerAnimationImpl { case START_ELYTRA: player.J(); break; + case STOP_ELYTRA: + player.K(); + break; case START_USE_MAINHAND_ITEM: player.c(EnumHand.MAIN_HAND); sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player, diff --git a/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/util/PlayerAnimationImpl.java b/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/util/PlayerAnimationImpl.java index e739dd7a8..087a90cfd 100644 --- a/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/util/PlayerAnimationImpl.java +++ b/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/util/PlayerAnimationImpl.java @@ -40,6 +40,9 @@ public class PlayerAnimationImpl { case START_ELYTRA: player.J(); break; + case STOP_ELYTRA: + player.K(); + break; case START_USE_MAINHAND_ITEM: player.c(EnumHand.MAIN_HAND); sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player, diff --git a/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/util/PlayerAnimationImpl.java b/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/util/PlayerAnimationImpl.java index f71a1a7d9..76b17ca73 100644 --- a/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/util/PlayerAnimationImpl.java +++ b/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/util/PlayerAnimationImpl.java @@ -40,6 +40,9 @@ public class PlayerAnimationImpl { case START_ELYTRA: player.startGliding(); break; + case STOP_ELYTRA: + player.stopGliding(); + break; case START_USE_MAINHAND_ITEM: player.c(EnumHand.MAIN_HAND); sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player, diff --git a/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/util/PlayerAnimationImpl.java b/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/util/PlayerAnimationImpl.java index 3e0812c23..a84f0710a 100644 --- a/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/util/PlayerAnimationImpl.java +++ b/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/util/PlayerAnimationImpl.java @@ -40,6 +40,9 @@ public class PlayerAnimationImpl { case START_ELYTRA: player.startGliding(); break; + case STOP_ELYTRA: + player.stopGliding(); + break; case START_USE_MAINHAND_ITEM: player.c(EnumHand.MAIN_HAND); sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player, diff --git a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/PlayerAnimationImpl.java b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/PlayerAnimationImpl.java index 445c975fa..c6550fc2d 100644 --- a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/PlayerAnimationImpl.java +++ b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/PlayerAnimationImpl.java @@ -33,6 +33,9 @@ public class PlayerAnimationImpl { case START_ELYTRA: player.startFallFlying(); break; + case STOP_ELYTRA: + player.stopFallFlying(); + break; case START_USE_MAINHAND_ITEM: player.startUsingItem(InteractionHand.MAIN_HAND); sendPacketNearby(new ClientboundSetEntityDataPacket(player.getId(), player.getEntityData(), true), diff --git a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/PlayerAnimationImpl.java b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/PlayerAnimationImpl.java index 1ab280c12..280257495 100644 --- a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/PlayerAnimationImpl.java +++ b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/PlayerAnimationImpl.java @@ -33,6 +33,9 @@ public class PlayerAnimationImpl { case START_ELYTRA: player.startFallFlying(); break; + case STOP_ELYTRA: + player.stopFallFlying(); + break; case START_USE_MAINHAND_ITEM: player.startUsingItem(InteractionHand.MAIN_HAND); sendPacketNearby(new ClientboundSetEntityDataPacket(player.getId(), player.getEntityData(), true), diff --git a/v1_19_R1/src/main/java/net/citizensnpcs/nms/v1_19_R1/util/PlayerAnimationImpl.java b/v1_19_R1/src/main/java/net/citizensnpcs/nms/v1_19_R1/util/PlayerAnimationImpl.java index 5f291798e..e4b302ca5 100644 --- a/v1_19_R1/src/main/java/net/citizensnpcs/nms/v1_19_R1/util/PlayerAnimationImpl.java +++ b/v1_19_R1/src/main/java/net/citizensnpcs/nms/v1_19_R1/util/PlayerAnimationImpl.java @@ -33,6 +33,9 @@ public class PlayerAnimationImpl { case START_ELYTRA: player.startFallFlying(); break; + case STOP_ELYTRA: + player.stopFallFlying(); + break; case START_USE_MAINHAND_ITEM: player.startUsingItem(InteractionHand.MAIN_HAND); sendPacketNearby(new ClientboundSetEntityDataPacket(player.getId(), player.getEntityData(), true),