From 2f4ad00f1c72ee7e3948267965c3a075ec4ef728 Mon Sep 17 00:00:00 2001 From: RoinujNosde Date: Sun, 30 Apr 2023 18:40:23 -0300 Subject: [PATCH] fix: migrates land permissions on GP claim resize --- pom.xml | 2 +- .../providers/GriefPreventionProvider.java | 32 ++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 7ec65de94..cc6d0680c 100644 --- a/pom.xml +++ b/pom.xml @@ -222,7 +222,7 @@ com.github.TechFortress GriefPrevention - 16.17.1 + 16.18.1 provided diff --git a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/hooks/protection/providers/GriefPreventionProvider.java b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/hooks/protection/providers/GriefPreventionProvider.java index 07e05629a..2c38214e9 100644 --- a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/hooks/protection/providers/GriefPreventionProvider.java +++ b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/hooks/protection/providers/GriefPreventionProvider.java @@ -4,25 +4,34 @@ import me.ryanhamshire.GriefPrevention.DataStore; import me.ryanhamshire.GriefPrevention.GriefPrevention; import me.ryanhamshire.GriefPrevention.events.ClaimCreatedEvent; +import me.ryanhamshire.GriefPrevention.events.ClaimResizeEvent; +import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer; +import net.sacredlabyrinth.phaed.simpleclans.SimpleClans; import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.Coordinate; import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.Land; import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.ProtectionProvider; +import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager; +import net.sacredlabyrinth.phaed.simpleclans.managers.ProtectionManager; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.OfflinePlayer; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.Event; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; @SuppressWarnings("unused") -public class GriefPreventionProvider implements ProtectionProvider { +public class GriefPreventionProvider implements ProtectionProvider, Listener { @Override public void setup() { + Bukkit.getPluginManager().registerEvents(this, SimpleClans.getInstance()); } @Override @@ -104,4 +113,25 @@ private UUID getOwnerID(@NotNull Claim claim) { return Bukkit.getOfflinePlayer(claim.getOwnerName()).getUniqueId(); } } + + @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) + private void onResize(ClaimResizeEvent event) { + ClanManager clanManager = SimpleClans.getInstance().getClanManager(); + + Land originalLand = getLand(event.getFrom()); + Land newLand = getLand(event.getTo()); + if (originalLand == null || newLand == null) { + return; + } + for (UUID owner : originalLand.getOwners()) { + ClanPlayer cp = clanManager.getAnyClanPlayer(owner); + if (cp == null) continue; + for (ProtectionManager.Action action : ProtectionManager.Action.values()) { + if (cp.isAllowed(action, originalLand.getId())) { + cp.disallow(action, originalLand.getId()); + cp.allow(action, newLand.getId()); + } + } + } + } }