Make spec confirmation configurable

Signed-off-by: Etzelia <etzelia@hotmail.com>
spec_confirm
Etzelia 2019-10-04 10:21:54 -05:00
parent 8d0e30cfa3
commit 1637e43bc8
No known key found for this signature in database
GPG Key ID: 3CAEB74806C4ADE5
5 changed files with 32 additions and 19 deletions

View File

@ -16,8 +16,11 @@ Additions
``**bold**`` |br| ``**bold**`` |br|
``~~strikethrough~~`` ``~~strikethrough~~``
* `Spec Confirm`_ - Updates the TP confirmation to allow for a configurable list of commands
.. _Checkup Command: https://git.etztech.xyz/24CarrotCraft/QoL/pulls/33 .. _Checkup Command: https://git.etztech.xyz/24CarrotCraft/QoL/pulls/33
.. _Discord Syntax: https://git.etztech.xyz/24CarrotCraft/QoL/pulls/36 .. _Discord Syntax: https://git.etztech.xyz/24CarrotCraft/QoL/pulls/36
.. _Spec Confirm: https://git.etztech.xyz/24CarrotCraft/QoL/pulls/39
Bug Fixes Bug Fixes
--------- ---------

View File

@ -24,7 +24,7 @@ Permissions
``qol.auditor`` - Ability to bypass auditing when running commands on auditable ``qol.auditor`` - Ability to bypass auditing when running commands on auditable
``qol.tpconfirm`` - Forces a player to confirm teleports when outside spectator mode ``qol.specconfirm`` - Forces a player to confirm a (configurable) command(s) when outside spectator mode
``qol.whitelist.bypass`` - Allows someone into the server when Whitelist mode is enabled ``qol.whitelist.bypass`` - Allows someone into the server when Whitelist mode is enabled

View File

@ -16,15 +16,12 @@ import xyz.etztech.qol.QoL;
import xyz.etztech.qol.other.LinkCommand; import xyz.etztech.qol.other.LinkCommand;
import org.dynmap.DynmapAPI; import org.dynmap.DynmapAPI;
import java.util.HashMap; import java.util.*;
import java.util.Map;
import java.util.UUID;
import java.util.Collection;
public class CommandPreprocessListener implements Listener { public class CommandPreprocessListener implements Listener {
QoL plugin; QoL plugin;
private Map<UUID, String> confirmTpMap = new HashMap<>(); private Map<UUID, String> confirmMap = new HashMap<>();
private Map<UUID, Boolean> dynmapVisibleStatusMap = new HashMap<>(); private Map<UUID, Boolean> dynmapVisibleStatusMap = new HashMap<>();
public CommandPreprocessListener(QoL plugin) { public CommandPreprocessListener(QoL plugin) {
@ -77,23 +74,30 @@ public class CommandPreprocessListener implements Listener {
dynmap.setPlayerVisiblity(sender.getName(), visibleStatus); dynmap.setPlayerVisiblity(sender.getName(), visibleStatus);
} }
// Spec TP confirmation // Spec confirmation
if (sender.hasPermission("qol.tpconfirm")) { List<String> specConfirm = plugin.getConfig().getStringList("spec-confirm");
//check if the command is a tp command if (sender.hasPermission("qol.specconfirm")) {
if (noSlash(base).equals("tp") || noSlash(base).toLowerCase().startsWith("tele") || noSlash(command).toLowerCase().startsWith("lagg tpchunk")) { boolean confirm = false;
//If the user is in the confirm tp map, remove them and let the command run for (String confirmable : specConfirm) {
if (command.equals(confirmTpMap.get(sender.getUniqueId()))) { if (noSlash(command).toLowerCase().startsWith(confirmable.toLowerCase())) {
confirmTpMap.remove(sender.getUniqueId()); confirm = true;
} }
//If the user is running the tp command for the first time outside of spec }
//check if the command is a spec confirm command
if (confirm) {
//If the user is in the confirm map, remove them and let the command run
if (command.equals(confirmMap.get(sender.getUniqueId()))) {
confirmMap.remove(sender.getUniqueId());
}
//If the user is running the command for the first time outside of spec
else if (sender.getGameMode() != GameMode.SPECTATOR) { else if (sender.getGameMode() != GameMode.SPECTATOR) {
//Cancel the command //Cancel the command
event.setCancelled(true); event.setCancelled(true);
//Add the user to the tp confirm map //Add the user to the spec confirm map
confirmTpMap.put(sender.getUniqueId(), command); confirmMap.put(sender.getUniqueId(), command);
TextComponent message = new TextComponent(ChatColor.GREEN + "You are TPing out of spec, run command again to confirm."); TextComponent message = new TextComponent(ChatColor.GREEN + "You are running this command out of spec, run again to confirm.");
sender.spigot().sendMessage(message); sender.spigot().sendMessage(message);
} }
} }

View File

@ -93,3 +93,9 @@ disable-fire:
# Overrides view distance per world, format is [World Name]: [View Distance] # Overrides view distance per world, format is [World Name]: [View Distance]
view-distances: view-distances:
world: 2 world: 2
# A list of commands to confirm before using if the user isn't in spectator mode
spec-confirm:
- "tp"
- "checkup"
- "lagg tpchunk"

View File

@ -91,8 +91,8 @@ permissions:
qol.auditor: qol.auditor:
description: Ability to bypass auditing when running commands on auditable description: Ability to bypass auditing when running commands on auditable
default: op default: op
qol.tpconfirm: qol.specconfirm:
description: Makes the user confirm they want to TP out of spec description: Makes the user confirm they want to run (configurable) command(s) out of spec
default: op default: op
qol.griefalert: qol.griefalert:
description: Alerts the user when monitored actions are encountered description: Alerts the user when monitored actions are encountered