Prevent users defining their own click events in descriptions/farewells/greetings by default

This commit is contained in:
dordsor21 2021-07-22 21:45:51 +01:00
parent fbde60fcf9
commit 51ff043af9
No known key found for this signature in database
GPG Key ID: 1E53E88969FFCF0B
3 changed files with 16 additions and 2 deletions

View File

@ -498,6 +498,11 @@ public class Settings extends Config {
"notify-enter, notify-leave, greeting or farewell flag."})
public static boolean NOTIFICATION_AS_ACTIONBAR = false;
@Comment({"Whether to strip any possible <click_event> components from user-defined messages, e.g. plot greeting",
"This can allow players to use commands to give themselves ranks as commands ran in this fashion cannot be prevent by " +
"permissions etc."})
public static boolean REMOVE_USER_DEFINED_CLICK_EVENTS = true;
}

View File

@ -169,8 +169,11 @@ public class PlotListener {
titles = titleFlag == TitlesFlag.TitlesFlagValue.TRUE;
}
final String greeting = plot.getFlag(GreetingFlag.class);
String greeting = plot.getFlag(GreetingFlag.class);
if (!greeting.isEmpty()) {
if (Settings.Chat.REMOVE_USER_DEFINED_CLICK_EVENTS) {
greeting = greeting.replaceAll(".([c-lC-L]{5}):([a-uA-U_]{11}):[^\\/]*[^>]*>>", "").replace("</click>", "");
}
if (!Settings.Chat.NOTIFICATION_AS_ACTIONBAR) {
plot.format(StaticCaption.of(greeting), player, false).thenAcceptAsync(player::sendMessage);
} else {
@ -390,8 +393,11 @@ public class PlotListener {
}
}
final String farewell = plot.getFlag(FarewellFlag.class);
String farewell = plot.getFlag(FarewellFlag.class);
if (!farewell.isEmpty()) {
if (Settings.Chat.REMOVE_USER_DEFINED_CLICK_EVENTS) {
farewell = farewell.replaceAll(".([c-lC-L]{5}):([a-uA-U_]{11}):[^\\/]*[^>]*>", "").replace("</click>", "");
}
if (!Settings.Chat.NOTIFICATION_AS_ACTIONBAR) {
plot.format(StaticCaption.of(farewell), player, false).thenAcceptAsync(player::sendMessage);
} else {

View File

@ -2785,6 +2785,9 @@ public class Plot {
String description = this.getFlag(DescriptionFlag.class);
if (description.isEmpty()) {
description = TranslatableCaption.of("info.plot_no_description").getComponent(player);
} else if (Settings.Chat.REMOVE_USER_DEFINED_CLICK_EVENTS) {
description = description.replaceAll(".([c-lC-L]{5}):([a-uA-U_]{11}):[^\\/]*[^>]*>", "").replace("</click>",
"");
}
Component flags;