From 491143ce45e4390c16a233f2b36a782053836732 Mon Sep 17 00:00:00 2001 From: ceze88 Date: Mon, 12 Feb 2024 22:41:28 +0100 Subject: [PATCH] Make sure non island members can't access EpicSpawners GUI --- .../listeners/hooks/EpicSpawners.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/main/java/com/craftaro/skyblock/listeners/hooks/EpicSpawners.java b/src/main/java/com/craftaro/skyblock/listeners/hooks/EpicSpawners.java index 56bd3e6f..59051590 100644 --- a/src/main/java/com/craftaro/skyblock/listeners/hooks/EpicSpawners.java +++ b/src/main/java/com/craftaro/skyblock/listeners/hooks/EpicSpawners.java @@ -1,5 +1,6 @@ package com.craftaro.skyblock.listeners.hooks; +import com.craftaro.epicspawners.api.events.SpawnerAccessEvent; import com.craftaro.epicspawners.api.events.SpawnerBreakEvent; import com.craftaro.epicspawners.api.events.SpawnerChangeEvent; import com.craftaro.epicspawners.api.events.SpawnerPlaceEvent; @@ -7,6 +8,7 @@ import com.craftaro.skyblock.SkyBlock; import com.craftaro.skyblock.island.Island; import com.craftaro.skyblock.island.IslandLevel; import com.craftaro.skyblock.island.IslandManager; +import com.craftaro.skyblock.permission.PermissionManager; import com.craftaro.skyblock.utils.version.CompatibleSpawners; import com.craftaro.skyblock.world.WorldManager; import org.bukkit.Bukkit; @@ -132,4 +134,31 @@ public class EpicSpawners implements Listener { } } } + + @EventHandler + public void onSpawnerAccess(SpawnerAccessEvent event) { + if (event.getSpawner().getLocation() == null) { + return; + } + + IslandManager islandManager = this.plugin.getIslandManager(); + WorldManager worldManager = this.plugin.getWorldManager(); + + Location location = event.getSpawner().getLocation(); + if (!worldManager.isIslandWorld(location.getWorld())) { + return; + } + + Island island = islandManager.getIslandAtLocation(location); + + if (island == null) { + return; + } + + PermissionManager permissionManager = this.plugin.getPermissionManager(); + + if (!permissionManager.hasPermission(event.getPlayer(), island, permissionManager.getPermission("SpawnEgg"))) { + event.setCancelled(true); + } + } }