AlttdGriefPrevention/todo/0019-Add-warning-message-if-ignore-claims-remains-enabled.patch
2022-02-14 10:20:53 +01:00

149 lines
6.2 KiB
Diff

From 70ca78c5b565bc7bafb174785a1cae79ef1508cf Mon Sep 17 00:00:00 2001
From: destro174 <40720638+destro174@users.noreply.github.com>
Date: Thu, 3 Feb 2022 09:15:35 +0100
Subject: [PATCH] Add warning message if ignore claims remains enabled
diff --git a/pom.xml b/pom.xml
index 18f6fec..9fb0aac 100644
--- a/pom.xml
+++ b/pom.xml
@@ -146,6 +146,12 @@
</build>
<dependencies>
+ <!-- Galaxy -->
+ <dependency>
+ <groupId>com.alttd</groupId>
+ <artifactId>Galaxy-API</artifactId>
+ <version>1.18.1-R0.1-SNAPSHOT</version>
+ </dependency>
<!-- Bukkit API. Bukkit has never ever deployed a release version -->
<dependency>
<groupId>io.papermc.paper</groupId>
diff --git a/src/main/java/me/ryanhamshire/GriefPrevention/GriefPrevention.java b/src/main/java/me/ryanhamshire/GriefPrevention/GriefPrevention.java
index 381107c..ca7c451 100644
--- a/src/main/java/me/ryanhamshire/GriefPrevention/GriefPrevention.java
+++ b/src/main/java/me/ryanhamshire/GriefPrevention/GriefPrevention.java
@@ -20,6 +20,7 @@ package me.ryanhamshire.GriefPrevention;
import me.ryanhamshire.GriefPrevention.DataStore.NoTransferException;
import me.ryanhamshire.GriefPrevention.alttd.ClaimExpireTask;
+import me.ryanhamshire.GriefPrevention.alttd.IgnoreClaimWarningTask;
import me.ryanhamshire.GriefPrevention.alttd.config.Config;
import me.ryanhamshire.GriefPrevention.alttd.map.hook.Pl3xMapHook;
import me.ryanhamshire.GriefPrevention.events.PreventBlockBreakEvent;
@@ -248,7 +249,7 @@ public class GriefPrevention extends JavaPlugin
private String databasePassword;
private Pl3xMapHook pl3xmapHook;
-
+ private HashMap<UUID, IgnoreClaimWarningTask> ignoreClaimWarningTasks;
//how far away to search from a tree trunk for its branch blocks
public static final int TREE_RADIUS = 5;
@@ -405,6 +406,7 @@ public class GriefPrevention extends JavaPlugin
if (getServer().getPluginManager().isPluginEnabled("Pl3xMap")) {
pl3xmapHook = new Pl3xMapHook(this);
}
+ ignoreClaimWarningTasks = new HashMap<>();
AddLogEntry("Boot finished.");
try
@@ -1333,15 +1335,18 @@ public class GriefPrevention extends JavaPlugin
PlayerData playerData = this.dataStore.getPlayerData(player.getUniqueId());
playerData.ignoreClaims = !playerData.ignoreClaims;
-
+ UUID uuid = player.getUniqueId();
//toggle ignore claims mode on or off
if (!playerData.ignoreClaims)
{
GriefPrevention.sendMessage(player, TextMode.Success, Messages.RespectingClaims);
+ ignoreClaimWarningTasks.get(uuid).cancel();
+ ignoreClaimWarningTasks.remove(uuid);
}
else
{
GriefPrevention.sendMessage(player, TextMode.Success, Messages.IgnoringClaims);
+ ignoreClaimWarningTasks.putIfAbsent(uuid, new IgnoreClaimWarningTask(this, uuid));
}
return true;
diff --git a/src/main/java/me/ryanhamshire/GriefPrevention/alttd/IgnoreClaimWarningTask.java b/src/main/java/me/ryanhamshire/GriefPrevention/alttd/IgnoreClaimWarningTask.java
new file mode 100644
index 0000000..d8279cf
--- /dev/null
+++ b/src/main/java/me/ryanhamshire/GriefPrevention/alttd/IgnoreClaimWarningTask.java
@@ -0,0 +1,50 @@
+package me.ryanhamshire.GriefPrevention.alttd;
+
+import me.ryanhamshire.GriefPrevention.GriefPrevention;
+import me.ryanhamshire.GriefPrevention.alttd.config.Config;
+import net.kyori.adventure.text.minimessage.MiniMessage;
+import net.kyori.adventure.text.minimessage.Template;
+import net.kyori.adventure.text.minimessage.template.TemplateResolver;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.bukkit.scheduler.BukkitRunnable;
+
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+public class IgnoreClaimWarningTask extends BukkitRunnable
+{
+ private GriefPrevention plugin;
+ private UUID uuid;
+ private String time;
+
+ public IgnoreClaimWarningTask(GriefPrevention plugin, UUID uuid)
+ {
+ this.plugin = plugin;
+ this.uuid = uuid;
+ LocalTime localTime = LocalTime.now();
+ this.time = localTime.format(DateTimeFormatter.ofPattern("HH:mm"));
+ this.init();
+ }
+
+ public void init()
+ {
+ runTaskLater(plugin, Config.ignoreClaimWarningDelay);
+ }
+
+ @Override
+ public void run()
+ {
+ Player player = Bukkit.getPlayer(uuid);
+ if (player == null) return;
+ List<Template> templates = new ArrayList<>(List.of(
+ Template.template("player", player.displayName()),
+ Template.template("time", time)
+ ));
+ Bukkit.broadcast(MiniMessage.miniMessage().deserialize(Config.ignoreClaimWarningMessage, TemplateResolver.templates(templates)), Config.ignoreClaimWarningPermission);
+ this.init();
+ }
+}
diff --git a/src/main/java/me/ryanhamshire/GriefPrevention/alttd/config/Config.java b/src/main/java/me/ryanhamshire/GriefPrevention/alttd/config/Config.java
index f3fcabf..ecc207d 100644
--- a/src/main/java/me/ryanhamshire/GriefPrevention/alttd/config/Config.java
+++ b/src/main/java/me/ryanhamshire/GriefPrevention/alttd/config/Config.java
@@ -134,4 +134,12 @@ public class Config extends AbstractConfig {
EXPIRING_CLAIM_TOOLTIP = config.getString("settings.region.tooltip.expiring-claim", EXPIRING_CLAIM_TOOLTIP);
}
+ public static int ignoreClaimWarningDelay = 20 * 600;
+ public static String ignoreClaimWarningMessage = "<player> has had ignore claims on since <time>.";
+ public static String ignoreClaimWarningPermission = "griefprevention.ignoreclaimwarnings";
+ public static void miscSettings() {
+ ignoreClaimWarningDelay = config.getInt("settings.ignore-claim-warning-delay", ignoreClaimWarningDelay);
+ ignoreClaimWarningMessage = config.getString("settings.ignore-claim-warning-message", ignoreClaimWarningMessage);
+ ignoreClaimWarningPermission = config.getString("settings.ignore-claim-warning-permission", ignoreClaimWarningPermission);
+ }
}
--
2.34.1