From 016b24987a1e1364b47388ffc4cac0c1d550e60e Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Sat, 9 Jul 2022 16:34:38 +0200 Subject: [PATCH] add getShopBySignLocation(Location signLocation) to api --- .../alttd/playershops/api/ShopHandler.java | 8 ++++ .../api/events/PlayerCreateShopEvent.java | 13 ------ .../api/events/PlayerDestroyShopEvent.java | 13 ------ .../api/events/PlayerExchangeShopEvent.java | 13 ------ .../api/events/PlayerInitializeShopEvent.java | 13 ------ .../api/events/ShopBalanceChangeEvent.java | 41 +++++++++++++++++++ .../playershops/listener/ShopListener.java | 31 ++++++++++++++ 7 files changed, 80 insertions(+), 52 deletions(-) create mode 100644 api/src/main/java/com/alttd/playershops/api/events/ShopBalanceChangeEvent.java diff --git a/api/src/main/java/com/alttd/playershops/api/ShopHandler.java b/api/src/main/java/com/alttd/playershops/api/ShopHandler.java index 92d1fcf..a122406 100644 --- a/api/src/main/java/com/alttd/playershops/api/ShopHandler.java +++ b/api/src/main/java/com/alttd/playershops/api/ShopHandler.java @@ -19,6 +19,14 @@ public interface ShopHandler { // TODO finish docs */ Shop getShop(Location location); + /** + * Get the shop at a given location + * + * @param signLocation Location of the shopSign + * @return Shop at the given location or null if no shop is found there + */ + Shop getShopBySignLocation(Location signLocation); + /** * Checks whether there is a shop at a given location * @param location Location to check diff --git a/api/src/main/java/com/alttd/playershops/api/events/PlayerCreateShopEvent.java b/api/src/main/java/com/alttd/playershops/api/events/PlayerCreateShopEvent.java index 7a9db05..bce42a0 100644 --- a/api/src/main/java/com/alttd/playershops/api/events/PlayerCreateShopEvent.java +++ b/api/src/main/java/com/alttd/playershops/api/events/PlayerCreateShopEvent.java @@ -2,15 +2,12 @@ package com.alttd.playershops.api.events; import com.alttd.playershops.api.Shop; import org.bukkit.entity.Player; -import org.bukkit.event.Cancellable; -import org.bukkit.event.Event; import org.bukkit.event.HandlerList; import org.jetbrains.annotations.NotNull; public class PlayerCreateShopEvent extends ShopEvent { private static final HandlerList handlers = new HandlerList(); private final Player player; - private boolean cancelled; public PlayerCreateShopEvent(Player player, Shop shop) { super(shop); @@ -21,16 +18,6 @@ public class PlayerCreateShopEvent extends ShopEvent { return player; } - @Override - public boolean isCancelled() { - return cancelled; - } - - @Override - public void setCancelled(boolean set) { - cancelled = set; - } - @NotNull @Override public HandlerList getHandlers() { diff --git a/api/src/main/java/com/alttd/playershops/api/events/PlayerDestroyShopEvent.java b/api/src/main/java/com/alttd/playershops/api/events/PlayerDestroyShopEvent.java index 1b714be..a87d246 100644 --- a/api/src/main/java/com/alttd/playershops/api/events/PlayerDestroyShopEvent.java +++ b/api/src/main/java/com/alttd/playershops/api/events/PlayerDestroyShopEvent.java @@ -2,8 +2,6 @@ package com.alttd.playershops.api.events; import com.alttd.playershops.api.Shop; import org.bukkit.entity.Player; -import org.bukkit.event.Cancellable; -import org.bukkit.event.Event; import org.bukkit.event.HandlerList; import org.jetbrains.annotations.NotNull; @@ -11,7 +9,6 @@ public class PlayerDestroyShopEvent extends ShopEvent { private static final HandlerList handlers = new HandlerList(); private final Player player; - private boolean cancelled; public PlayerDestroyShopEvent(Player player, Shop shop) { super(shop); @@ -22,16 +19,6 @@ public class PlayerDestroyShopEvent extends ShopEvent { return player; } - @Override - public boolean isCancelled() { - return cancelled; - } - - @Override - public void setCancelled(boolean set) { - cancelled = set; - } - @NotNull @Override public HandlerList getHandlers() { diff --git a/api/src/main/java/com/alttd/playershops/api/events/PlayerExchangeShopEvent.java b/api/src/main/java/com/alttd/playershops/api/events/PlayerExchangeShopEvent.java index 9e4a055..118db1f 100644 --- a/api/src/main/java/com/alttd/playershops/api/events/PlayerExchangeShopEvent.java +++ b/api/src/main/java/com/alttd/playershops/api/events/PlayerExchangeShopEvent.java @@ -2,8 +2,6 @@ package com.alttd.playershops.api.events; import com.alttd.playershops.api.Shop; import org.bukkit.entity.Player; -import org.bukkit.event.Cancellable; -import org.bukkit.event.Event; import org.bukkit.event.HandlerList; import org.jetbrains.annotations.NotNull; @@ -11,7 +9,6 @@ public class PlayerExchangeShopEvent extends ShopEvent { private static final HandlerList handlers = new HandlerList(); private final Player player; - private boolean cancelled; public PlayerExchangeShopEvent(Player player, Shop shop) { super(shop); @@ -22,16 +19,6 @@ public class PlayerExchangeShopEvent extends ShopEvent { return player; } - @Override - public boolean isCancelled() { - return cancelled; - } - - @Override - public void setCancelled(boolean set) { - cancelled = set; - } - @NotNull @Override public HandlerList getHandlers() { diff --git a/api/src/main/java/com/alttd/playershops/api/events/PlayerInitializeShopEvent.java b/api/src/main/java/com/alttd/playershops/api/events/PlayerInitializeShopEvent.java index f31e627..0033807 100644 --- a/api/src/main/java/com/alttd/playershops/api/events/PlayerInitializeShopEvent.java +++ b/api/src/main/java/com/alttd/playershops/api/events/PlayerInitializeShopEvent.java @@ -2,8 +2,6 @@ package com.alttd.playershops.api.events; import com.alttd.playershops.api.Shop; import org.bukkit.entity.Player; -import org.bukkit.event.Cancellable; -import org.bukkit.event.Event; import org.bukkit.event.HandlerList; import org.jetbrains.annotations.NotNull; @@ -11,7 +9,6 @@ public class PlayerInitializeShopEvent extends ShopEvent { private static final HandlerList handlers = new HandlerList(); private final Player player; - private boolean cancelled; public PlayerInitializeShopEvent(Player player, Shop shop) { super(shop); @@ -22,16 +19,6 @@ public class PlayerInitializeShopEvent extends ShopEvent { return player; } - @Override - public boolean isCancelled() { - return cancelled; - } - - @Override - public void setCancelled(boolean set) { - cancelled = set; - } - @NotNull @Override public HandlerList getHandlers() { diff --git a/api/src/main/java/com/alttd/playershops/api/events/ShopBalanceChangeEvent.java b/api/src/main/java/com/alttd/playershops/api/events/ShopBalanceChangeEvent.java new file mode 100644 index 0000000..1f31557 --- /dev/null +++ b/api/src/main/java/com/alttd/playershops/api/events/ShopBalanceChangeEvent.java @@ -0,0 +1,41 @@ +package com.alttd.playershops.api.events; + +import com.alttd.playershops.api.Shop; +import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; + +public class ShopBalanceChangeEvent extends ShopEvent { + private static final HandlerList handlers = new HandlerList(); + private final ChangeReason changeReason; + + public ShopBalanceChangeEvent(Shop shop, ChangeReason reason) { + super(shop); + this.changeReason = reason; + } + + @NotNull + @Override + public HandlerList getHandlers() { + return handlers; + } + + @NotNull + public static HandlerList getHandlerList() { + return handlers; + } + + public ChangeReason getChangeReason() { + return changeReason; + } + + public enum ChangeReason { + + DEPOSIT, + WIDRAW, + SELL, + BUY, + UPKEEP + + } + +} diff --git a/plugin/src/main/java/com/alttd/playershops/listener/ShopListener.java b/plugin/src/main/java/com/alttd/playershops/listener/ShopListener.java index 287a632..1420e52 100644 --- a/plugin/src/main/java/com/alttd/playershops/listener/ShopListener.java +++ b/plugin/src/main/java/com/alttd/playershops/listener/ShopListener.java @@ -1,6 +1,15 @@ package com.alttd.playershops.listener; import com.alttd.playershops.PlayerShops; +import com.alttd.playershops.api.Shop; +import com.alttd.playershops.config.Config; +import org.bukkit.Location; +import org.bukkit.Tag; +import org.bukkit.block.Block; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityExplodeEvent; + +import java.util.Iterator; public class ShopListener extends EventListener { @@ -10,4 +19,26 @@ public class ShopListener extends EventListener { this.plugin = plugin; this.register(this.plugin); } + + @EventHandler(ignoreCancelled = true) + public void onEntityExplosion(EntityExplodeEvent event) { + if(!this.isRegistered) return; + + Iterator blockIterator = event.blockList().iterator(); + Shop shop = null; + while (blockIterator.hasNext()) { + + Block block = blockIterator.next(); + Location location = block.getLocation(); + if (Tag.WALL_SIGNS.isTagged(block.getType())) { + shop = plugin.getShopHandler().getShopBySignLocation(location); + } else if (plugin.getShopHandler().isShopMaterial(block)) { + shop = plugin.getShopHandler().getShop(location); + } + + if (shop != null) { + blockIterator.remove(); + } + } + } }