Compare commits

..

1 Commits

Author SHA1 Message Date
e0d87e2c7a refactor: Deprecate Load#secToTime() 2022-03-27 10:13:16 +02:00
6 changed files with 60 additions and 61 deletions

View File

@ -76,6 +76,7 @@ import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.MathMan; import com.plotsquared.core.util.MathMan;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.PremiumVerification; import com.plotsquared.core.util.PremiumVerification;
import com.plotsquared.core.util.RegExUtil;
import com.plotsquared.core.util.entity.EntityCategories; import com.plotsquared.core.util.entity.EntityCategories;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import com.plotsquared.core.util.task.TaskTime; import com.plotsquared.core.util.task.TaskTime;
@ -222,9 +223,10 @@ public class PlayerEventListener extends PlotListener implements Listener {
} }
} }
@SuppressWarnings("StringSplitter")
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void playerCommand(PlayerCommandPreprocessEvent event) { public void playerCommand(PlayerCommandPreprocessEvent event) {
String msg = event.getMessage().replace("/", "").toLowerCase(Locale.ROOT).trim(); String msg = event.getMessage().toLowerCase().replaceAll("/", "").trim();
if (msg.isEmpty()) { if (msg.isEmpty()) {
return; return;
} }
@ -238,9 +240,11 @@ public class PlayerEventListener extends PlotListener implements Listener {
String[] parts = msg.split(" "); String[] parts = msg.split(" ");
Plot plot = plotPlayer.getCurrentPlot(); Plot plot = plotPlayer.getCurrentPlot();
// Check WorldEdit // Check WorldEdit
switch (parts[0]) { switch (parts[0].toLowerCase()) {
case "up": case "up":
case "/up":
case "worldedit:up": case "worldedit:up":
case "worldedit:/up":
if (plot == null || (!plot.isAdded(plotPlayer.getUUID()) && !Permissions if (plot == null || (!plot.isAdded(plotPlayer.getUUID()) && !Permissions
.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_BUILD_OTHER, true))) { .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_BUILD_OTHER, true))) {
event.setCancelled(true); event.setCancelled(true);
@ -254,67 +258,63 @@ public class PlayerEventListener extends PlotListener implements Listener {
List<String> blockedCommands = plot != null ? List<String> blockedCommands = plot != null ?
plot.getFlag(BlockedCmdsFlag.class) : plot.getFlag(BlockedCmdsFlag.class) :
area.getFlag(BlockedCmdsFlag.class); area.getFlag(BlockedCmdsFlag.class);
if (blockedCommands.isEmpty()) { if (!blockedCommands.isEmpty() && !Permissions
return; .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_INTERACT_BLOCKED_CMDS)) {
} String part = parts[0];
if (Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_INTERACT_BLOCKED_CMDS)) { if (parts[0].contains(":")) {
return; part = parts[0].split(":")[1];
} msg = msg.replace(parts[0].split(":")[0] + ':', "");
// When using namespaced commands, we're not interested in the namespace }
String part = parts[0]; String s1 = part;
if (part.contains(":")) { List<String> aliases = new ArrayList<>();
String[] namespaced = part.split(":"); for (HelpTopic cmdLabel : Bukkit.getServer().getHelpMap().getHelpTopics()) {
part = namespaced[1]; if (part.equals(cmdLabel.getName())) {
msg = msg.substring(namespaced[0].length() + 1); break;
} }
msg = replaceAliases(msg, part); String label = cmdLabel.getName().replaceFirst("/", "");
for (String blocked : blockedCommands) { if (aliases.contains(label)) {
if (blocked.equalsIgnoreCase(msg)) { continue;
String perm; }
if (plot != null && plot.isAdded(plotPlayer.getUUID())) { PluginCommand p;
perm = "plots.admin.command.blocked-cmds.shared"; if ((p = Bukkit.getPluginCommand(label)) != null) {
for (String a : p.getAliases()) {
if (aliases.contains(a)) {
continue;
}
aliases.add(a);
a = a.replaceFirst("/", "");
if (!a.equals(label) && a.equals(part)) {
part = label;
break;
}
}
}
}
if (!s1.equals(part)) {
msg = msg.replace(s1, part);
}
for (String s : blockedCommands) {
Pattern pattern;
if (!RegExUtil.compiledPatterns.containsKey(s)) {
RegExUtil.compiledPatterns.put(s, pattern = Pattern.compile(s));
} else { } else {
perm = "plots.admin.command.blocked-cmds.road"; pattern = RegExUtil.compiledPatterns.get(s);
} }
if (!Permissions.hasPermission(plotPlayer, perm)) { if (pattern.matcher(msg).matches()) {
plotPlayer.sendMessage(TranslatableCaption.of("blockedcmds.command_blocked")); String perm;
event.setCancelled(true); if (plot != null && plot.isAdded(plotPlayer.getUUID())) {
} perm = "plots.admin.command.blocked-cmds.shared";
return; } else {
} perm = "plots.admin.command.blocked-cmds.road";
}
}
private String replaceAliases(String msg, String part) {
String s1 = part;
Set<String> aliases = new HashSet<>();
for (HelpTopic cmdLabel : Bukkit.getServer().getHelpMap().getHelpTopics()) {
if (part.equals(cmdLabel.getName())) {
break;
}
String label = cmdLabel.getName().replaceFirst("/", "");
if (aliases.contains(label)) {
continue;
}
PluginCommand p = Bukkit.getPluginCommand(label);
if (p != null) {
for (String a : p.getAliases()) {
if (aliases.contains(a)) {
continue;
} }
aliases.add(a); if (!Permissions.hasPermission(plotPlayer, perm)) {
a = a.replaceFirst("/", ""); plotPlayer.sendMessage(TranslatableCaption.of("blockedcmds.command_blocked"));
if (!a.equals(label) && a.equals(part)) { event.setCancelled(true);
part = label;
break;
} }
return;
} }
} }
} }
if (!s1.equals(part)) {
msg = msg.replace(s1, part);
}
return msg;
} }
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)

View File

@ -227,7 +227,7 @@ public class Load extends SubCommand {
/** /**
* @deprecated Use {@link TimeUtil#secToTime(long)} * @deprecated Use {@link TimeUtil#secToTime(long)}
*/ */
@Deprecated(forRemoval = true, since = "6.6.2") @Deprecated(forRemoval = true, since = "TODO")
public String secToTime(long time) { public String secToTime(long time) {
StringBuilder toreturn = new StringBuilder(); StringBuilder toreturn = new StringBuilder();
if (time >= 33868800) { if (time >= 33868800) {

View File

@ -29,7 +29,6 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@Deprecated(since = "6.6.2", forRemoval = true)
public class RegExUtil { public class RegExUtil {
public static Map<String, Pattern> compiledPatterns; public static Map<String, Pattern> compiledPatterns;

View File

@ -18,7 +18,7 @@ plugins {
idea idea
} }
version = "6.6.2" version = "6.6.2-SNAPSHOT"
allprojects { allprojects {
group = "com.plotsquared" group = "com.plotsquared"

View File

@ -6,7 +6,7 @@ guava = "31.0.1-jre" # Version set by Minecraft
# Platform expectations # Platform expectations
paper = "1.18.1-R0.1-SNAPSHOT" paper = "1.18.1-R0.1-SNAPSHOT"
checker-qual = "3.21.4" checker-qual = "3.21.3"
guice = "5.1.0" guice = "5.1.0"
findbugs = "3.0.1" findbugs = "3.0.1"
snakeyaml = "1.30" # Version set by Bukkit snakeyaml = "1.30" # Version set by Bukkit

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists