From 694703bf89493bfb54fe196075efb7380e97e50a Mon Sep 17 00:00:00 2001 From: LoJoSho Date: Wed, 28 Dec 2022 10:41:18 -0600 Subject: [PATCH] API Events --- .../hmccosmetics/HMCCosmeticsPlugin.java | 3 ++ .../api/HMCCosmeticSetupEvent.java | 23 +++++++++ .../api/PlayerHideCosmeticEvent.java | 42 ++++++++++++++++ .../hmccosmetics/api/PlayerMenuOpenEvent.java | 49 +++++++++++++++++++ .../api/PlayerShowCosmeticEvent.java | 42 ++++++++++++++++ .../api/PlayerWardrobeEnterEvent.java | 42 ++++++++++++++++ .../api/PlayerWardrobeLeaveEvent.java | 42 ++++++++++++++++ .../com/hibiscusmc/hmccosmetics/gui/Menu.java | 9 ++++ .../hmccosmetics/user/CosmeticUser.java | 28 +++++++++++ 9 files changed, 280 insertions(+) create mode 100644 common/src/main/java/com/hibiscusmc/hmccosmetics/api/HMCCosmeticSetupEvent.java create mode 100644 common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerHideCosmeticEvent.java create mode 100644 common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerMenuOpenEvent.java create mode 100644 common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerShowCosmeticEvent.java create mode 100644 common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerWardrobeEnterEvent.java create mode 100644 common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerWardrobeLeaveEvent.java diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/HMCCosmeticsPlugin.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/HMCCosmeticsPlugin.java index 9396b0b9..4acf131c 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/HMCCosmeticsPlugin.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/HMCCosmeticsPlugin.java @@ -1,5 +1,6 @@ package com.hibiscusmc.hmccosmetics; +import com.hibiscusmc.hmccosmetics.api.HMCCosmeticSetupEvent; import com.hibiscusmc.hmccosmetics.command.CosmeticCommand; import com.hibiscusmc.hmccosmetics.command.CosmeticCommandTabComplete; import com.hibiscusmc.hmccosmetics.config.DatabaseSettings; @@ -171,6 +172,8 @@ public final class HMCCosmeticsPlugin extends JavaPlugin { getInstance().getLogger().info(Cosmetics.values().size() + " Cosmetics Successfully Setup"); getInstance().getLogger().info(Menus.getMenuNames().size() + " Menus Successfully Setup"); getInstance().getLogger().info("Data storage is set to " + DatabaseSettings.getDatabaseType()); + + Bukkit.getPluginManager().callEvent(new HMCCosmeticSetupEvent()); } public static boolean isDisable() { diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/api/HMCCosmeticSetupEvent.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/HMCCosmeticSetupEvent.java new file mode 100644 index 00000000..b2a85171 --- /dev/null +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/HMCCosmeticSetupEvent.java @@ -0,0 +1,23 @@ +package com.hibiscusmc.hmccosmetics.api; + +import org.bukkit.Bukkit; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class HMCCosmeticSetupEvent extends Event { + + public HMCCosmeticSetupEvent() { + // Empty + } + + private static final HandlerList handlers = new HandlerList(); + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerHideCosmeticEvent.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerHideCosmeticEvent.java new file mode 100644 index 00000000..70f31cc1 --- /dev/null +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerHideCosmeticEvent.java @@ -0,0 +1,42 @@ +package com.hibiscusmc.hmccosmetics.api; + +import com.hibiscusmc.hmccosmetics.user.CosmeticUser; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class PlayerHideCosmeticEvent extends Event implements Cancellable { + + private CosmeticUser user; + private boolean isCancelled; + + public PlayerHideCosmeticEvent(CosmeticUser user) { + this.user = user; + this.isCancelled = false; + } + + @Override + public boolean isCancelled() { + return isCancelled; + } + + @Override + public void setCancelled(boolean cancel) { + isCancelled = cancel; + } + + private static final HandlerList handlers = new HandlerList(); + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + public CosmeticUser getUser() { + return user; + } +} diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerMenuOpenEvent.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerMenuOpenEvent.java new file mode 100644 index 00000000..e8d86a93 --- /dev/null +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerMenuOpenEvent.java @@ -0,0 +1,49 @@ +package com.hibiscusmc.hmccosmetics.api; + +import com.hibiscusmc.hmccosmetics.gui.Menu; +import com.hibiscusmc.hmccosmetics.user.CosmeticUser; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class PlayerMenuOpenEvent extends Event implements Cancellable { + + private CosmeticUser user; + private Menu menu; + private boolean isCancelled; + + public PlayerMenuOpenEvent(CosmeticUser user, Menu menu) { + this.user = user; + this.menu = menu; + this.isCancelled = false; + } + + @Override + public boolean isCancelled() { + return isCancelled; + } + + @Override + public void setCancelled(boolean cancel) { + isCancelled = cancel; + } + + private static final HandlerList handlers = new HandlerList(); + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + public CosmeticUser getUser() { + return user; + } + + public Menu getMenu() { + return menu; + } +} diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerShowCosmeticEvent.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerShowCosmeticEvent.java new file mode 100644 index 00000000..33da33f8 --- /dev/null +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerShowCosmeticEvent.java @@ -0,0 +1,42 @@ +package com.hibiscusmc.hmccosmetics.api; + +import com.hibiscusmc.hmccosmetics.user.CosmeticUser; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class PlayerShowCosmeticEvent extends Event implements Cancellable { + + private CosmeticUser user; + private boolean isCancelled; + + public PlayerShowCosmeticEvent(CosmeticUser user) { + this.user = user; + this.isCancelled = false; + } + + @Override + public boolean isCancelled() { + return isCancelled; + } + + @Override + public void setCancelled(boolean cancel) { + isCancelled = cancel; + } + + private static final HandlerList handlers = new HandlerList(); + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + public CosmeticUser getUser() { + return user; + } +} \ No newline at end of file diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerWardrobeEnterEvent.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerWardrobeEnterEvent.java new file mode 100644 index 00000000..510a8719 --- /dev/null +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerWardrobeEnterEvent.java @@ -0,0 +1,42 @@ +package com.hibiscusmc.hmccosmetics.api; + +import com.hibiscusmc.hmccosmetics.user.CosmeticUser; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class PlayerWardrobeEnterEvent extends Event implements Cancellable { + + private CosmeticUser user; + private boolean isCancelled; + + public PlayerWardrobeEnterEvent(CosmeticUser user) { + this.user = user; + this.isCancelled = false; + } + + @Override + public boolean isCancelled() { + return isCancelled; + } + + @Override + public void setCancelled(boolean cancel) { + isCancelled = cancel; + } + + private static final HandlerList handlers = new HandlerList(); + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + public CosmeticUser getUser() { + return user; + } +} diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerWardrobeLeaveEvent.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerWardrobeLeaveEvent.java new file mode 100644 index 00000000..a867952a --- /dev/null +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerWardrobeLeaveEvent.java @@ -0,0 +1,42 @@ +package com.hibiscusmc.hmccosmetics.api; + +import com.hibiscusmc.hmccosmetics.user.CosmeticUser; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class PlayerWardrobeLeaveEvent extends Event implements Cancellable { + + private CosmeticUser user; + private boolean isCancelled; + + public PlayerWardrobeLeaveEvent(CosmeticUser user) { + this.user = user; + this.isCancelled = false; + } + + @Override + public boolean isCancelled() { + return isCancelled; + } + + @Override + public void setCancelled(boolean cancel) { + isCancelled = cancel; + } + + private static final HandlerList handlers = new HandlerList(); + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + public CosmeticUser getUser() { + return user; + } +} diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java index e4888a96..ddb98ec2 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java @@ -1,6 +1,8 @@ package com.hibiscusmc.hmccosmetics.gui; import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; +import com.hibiscusmc.hmccosmetics.api.PlayerMenuOpenEvent; +import com.hibiscusmc.hmccosmetics.api.PlayerWardrobeLeaveEvent; import com.hibiscusmc.hmccosmetics.config.serializer.ItemSerializer; import com.hibiscusmc.hmccosmetics.gui.type.Types; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; @@ -64,6 +66,13 @@ public class Menu { gui = getItems(user, gui); Gui finalGui = gui; + + PlayerMenuOpenEvent event = new PlayerMenuOpenEvent(user, this); + Bukkit.getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), () -> { finalGui.open(player); }); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java index 794d6da4..b389ccdb 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java @@ -1,6 +1,10 @@ package com.hibiscusmc.hmccosmetics.user; import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; +import com.hibiscusmc.hmccosmetics.api.PlayerHideCosmeticEvent; +import com.hibiscusmc.hmccosmetics.api.PlayerShowCosmeticEvent; +import com.hibiscusmc.hmccosmetics.api.PlayerWardrobeEnterEvent; +import com.hibiscusmc.hmccosmetics.api.PlayerWardrobeLeaveEvent; import com.hibiscusmc.hmccosmetics.config.WardrobeSettings; import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic; import com.hibiscusmc.hmccosmetics.cosmetic.CosmeticSlot; @@ -183,6 +187,12 @@ public class CosmeticUser { MessagesUtil.sendMessage(getPlayer(), "not-near-wardrobe"); return; } + PlayerWardrobeEnterEvent event = new PlayerWardrobeEnterEvent(this); + Bukkit.getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + wardrobe = new Wardrobe(this); wardrobe.start(); } @@ -192,6 +202,12 @@ public class CosmeticUser { } public void leaveWardrobe() { + PlayerWardrobeLeaveEvent event = new PlayerWardrobeLeaveEvent(this); + Bukkit.getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + wardrobe.end(); wardrobe = null; } @@ -323,6 +339,12 @@ public class CosmeticUser { public void hideCosmetics() { if (hideCosmetics == true) return; + PlayerHideCosmeticEvent event = new PlayerHideCosmeticEvent(this); + Bukkit.getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + hideCosmetics = true; if (hasCosmeticInSlot(CosmeticSlot.BALLOON)) { getBalloonEntity().removePlayerFromModel(getPlayer()); @@ -340,6 +362,12 @@ public class CosmeticUser { public void showCosmetics() { if (hideCosmetics == false) return; + + PlayerShowCosmeticEvent event = new PlayerShowCosmeticEvent(this); + Bukkit.getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } hideCosmetics = false; if (hasCosmeticInSlot(CosmeticSlot.BALLOON)) { CosmeticBalloonType balloonType = (CosmeticBalloonType) getCosmetic(CosmeticSlot.BALLOON);