Skip to content

Commit 3be5e53

Browse files
committed
allow toggling of first join messages in seperate config and command
1 parent d5eb503 commit 3be5e53

File tree

23 files changed

+493
-247
lines changed

23 files changed

+493
-247
lines changed

AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/AnarchyExploitFixes.java

Lines changed: 35 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public final class AnarchyExploitFixes extends JavaPlugin {
4747

4848
private static TickReporter tickReporter;
4949
private static PermissionHandler permissionHandler;
50-
private static ComponentLogger prefixedLogger, unPrefixedLogger;
50+
private static ComponentLogger componentLogger;
5151

5252
private Metrics metrics;
5353
private VersionChecker versionChecker;
@@ -76,8 +76,7 @@ public void onEnable() {
7676
return;
7777
}
7878

79-
prefixedLogger = ComponentLogger.logger(getLogger().getName());
80-
unPrefixedLogger = ComponentLogger.logger("");
79+
componentLogger = getComponentLogger();
8180

8281
if (getServer().getPluginManager().getPlugin("packetevents") == null) {
8382
Stream.of(" ",
@@ -93,7 +92,7 @@ public void onEnable() {
9392
" or choose a dev build on their jenkins: ",
9493
" https://ci.codemc.io/job/retrooper/job/packetevents/ ",
9594
" "
96-
).forEach(prefixedLogger::error);
95+
).forEach(logger()::error);
9796
getServer().shutdown();
9897
return;
9998
}
@@ -112,7 +111,7 @@ public void onEnable() {
112111
" or choose a dev build on github actions: ",
113112
" https://github.com/tr7zw/Item-NBT-API/actions ",
114113
" "
115-
).forEach(prefixedLogger::error);
114+
).forEach(logger()::error);
116115
getServer().shutdown();
117116
return;
118117
}
@@ -127,54 +126,54 @@ public void onEnable() {
127126
" ",
128127
" ")
129128
.map(str -> Component.text(str).color(KyoriUtil.AEF_WHITE))
130-
.forEach(prefixedLogger::info);
129+
.forEach(logger()::info);
131130

132-
prefixedLogger.info("Detected {} {}", Platform.getMajorType().toString(), Platform.getServerVersion().getReleaseName());
131+
logger().info("Detected {} {}", Platform.getMajorType().toString(), Platform.getServerVersion().getReleaseName());
133132

134133
if (Platform.getServerVersion().isOlderThan(ServerVersion.V_1_19_4) ||
135134
(Platform.getServerVersion().equals(ServerVersion.V_1_19_4) && !Platform.FOLIA.isPresent())) {
136-
prefixedLogger.error("This plugin jar is incompatible with your Server. Please use the Legacy jar.");
135+
logger().error("This plugin jar is incompatible with your Server. Please use the Legacy jar.");
137136
getServer().getPluginManager().disablePlugin(instance);
138137
return;
139138
}
140139

141140
try {
142141
Files.createDirectories(getDataFolder().toPath());
143142
} catch (Exception e) {
144-
prefixedLogger.error("Unable to create plugin directory.", e);
143+
logger().error("Unable to create plugin directory.", e);
145144
getServer().getPluginManager().disablePlugin(instance);
146145
return;
147146
}
148147

149148
// Hide all messages with a log level lower than WARNING because of the same reason as Reflections logging.
150149
java.util.logging.Logger.getLogger("NBTAPI").setLevel(java.util.logging.Level.WARNING);
151150
if (!NBT.preloadApi()) {
152-
prefixedLogger.error(" ");
153-
prefixedLogger.error(" Error preloading NBT-API! ");
154-
prefixedLogger.error(" !! This will break all NBT related modules !! ");
155-
prefixedLogger.error(" ");
156-
prefixedLogger.error(" The reason for this could be: ");
157-
prefixedLogger.error(" - your server version is too new for the ");
158-
prefixedLogger.error(" item-nbt-api-plugin.jar in your plugins ");
159-
prefixedLogger.error(" folder. ");
160-
prefixedLogger.error(" - the item-nbt-api-plugin.jar in your ");
161-
prefixedLogger.error(" plugins folder is bad. ");
162-
prefixedLogger.error(" ");
151+
logger().error(" ");
152+
logger().error(" Error preloading NBT-API! ");
153+
logger().error(" !! This will break all NBT related modules !! ");
154+
logger().error(" ");
155+
logger().error(" The reason for this could be: ");
156+
logger().error(" - your server version is too new for the ");
157+
logger().error(" item-nbt-api-plugin.jar in your plugins ");
158+
logger().error(" folder. ");
159+
logger().error(" - the item-nbt-api-plugin.jar in your ");
160+
logger().error(" plugins folder is bad. ");
161+
logger().error(" ");
163162
}
164163

165-
prefixedLogger.info("Registering Permissions");
164+
logger().info("Registering Permissions");
166165
AEFPermission.registerAll();
167166

168-
prefixedLogger.info("Loading Config");
167+
logger().info("Loading Config");
169168
reloadConfiguration();
170169

171-
prefixedLogger.info("Loading Translations");
170+
logger().info("Loading Translations");
172171
reloadTranslations();
173172

174-
prefixedLogger.info("Loading Metrics");
173+
logger().info("Loading Metrics");
175174
metrics = new Metrics(instance, 8700);
176175

177-
prefixedLogger.info("Done.");
176+
logger().info("Done.");
178177
}
179178

180179
@Override
@@ -202,8 +201,7 @@ public void onDisable() {
202201
metrics.shutdown();
203202
metrics = null;
204203
}
205-
unPrefixedLogger = null;
206-
prefixedLogger = null;
204+
componentLogger = null;
207205
instance = null;
208206
config = null;
209207
}
@@ -224,12 +222,8 @@ public static Config config() {
224222
return config;
225223
}
226224

227-
public static ComponentLogger prefixedLogger() {
228-
return prefixedLogger;
229-
}
230-
231-
public static ComponentLogger unprefixedLogger() {
232-
return unPrefixedLogger;
225+
public static ComponentLogger logger() {
226+
return componentLogger;
233227
}
234228

235229
public static Translation translation(Pointered pointered) {
@@ -259,15 +253,15 @@ private void reloadConfiguration() {
259253
AEFCommand.reloadCommands();
260254
config.saveConfig();
261255
} catch (Throwable t) {
262-
prefixedLogger.error("Failed while loading config!", t);
256+
logger().error("Failed while loading config!", t);
263257
}
264258
}
265259

266260
public void reloadTranslations() {
267261
final List<Locale> available = getAvailableTranslations();
268262

269263
if (available.isEmpty()) {
270-
prefixedLogger.error("No translations available for loading. Keeping previous translation if there are any.");
264+
logger().error("No translations available for loading. Keeping previous translation if there are any.");
271265
} else {
272266
Map<Locale, Translation> newTranslations = new HashMap<>(available.size());
273267
StringBuilder neatlyListedTranslations = new StringBuilder();
@@ -282,7 +276,7 @@ public void reloadTranslations() {
282276
if (i < available.size() - 1)
283277
neatlyListedTranslations.append(", ");
284278
if ((i + 1) % 4 == 0 || i == available.size() - 1) {
285-
prefixedLogger.info(neatlyListedTranslations.toString());
279+
logger().info(neatlyListedTranslations.toString());
286280
neatlyListedTranslations.setLength(0); // Clear StringBuilder for next line
287281
}
288282
}
@@ -291,16 +285,16 @@ public void reloadTranslations() {
291285
if (!newTranslations.isEmpty()) {
292286
if (newTranslations.containsKey(config.default_lang)) { // Ensure default lang is available
293287
translations = newTranslations;
294-
prefixedLogger.info("Loaded {} translations.", translations.size());
288+
logger().info("Loaded {} translations.", translations.size());
295289
} else {
296-
prefixedLogger.error("Can't find translation for default language '{}'!", config.default_lang);
290+
logger().error("Can't find translation for default language '{}'!", config.default_lang);
297291
}
298292
}
299293
}
300294

301295
// Make sure plugin doesn't enter a state where console gets spammed by exceptions
302296
if (translations == null || translations.isEmpty()) {
303-
prefixedLogger.error("Unable to load translations. Disabling.");
297+
logger().error("Unable to load translations. Disabling.");
304298
getServer().getPluginManager().disablePlugin(this);
305299
}
306300
}
@@ -320,7 +314,7 @@ public void reloadTranslations() {
320314
} else {
321315
// If there is a file where the lang directory is supposed to be, rename and create new empty folder
322316
String newName = langFolder.getPath() + ".non-directory";
323-
prefixedLogger.warn("Found weird non-directory file at '{}'. Renaming to '{}'.", langFolder.getPath(), newName);
317+
logger().warn("Found weird non-directory file at '{}'. Renaming to '{}'.", langFolder.getPath(), newName);
324318
if (!langFolder.renameTo(new File(newName)))
325319
throw new FileAlreadyExistsException("Could not rename existing file at lang directory path.");
326320
Files.createDirectories(langFolder.toPath());
@@ -348,7 +342,7 @@ public void reloadTranslations() {
348342
.filter(locale -> config.auto_lang || locale == config.default_lang)
349343
.collect(Collectors.toList());
350344
} catch (IOException e) {
351-
prefixedLogger.error("Failed while searching for available translations!", e);
345+
logger().error("Failed while searching for available translations!", e);
352346
return Collections.emptyList();
353347
}
354348
}

AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/commands/AEFCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,9 @@ public static void reloadCommands() {
8989
}
9090
} catch (Throwable t) {
9191
if (t.getCause() instanceof NoClassDefFoundError) {
92-
AnarchyExploitFixes.prefixedLogger().info("Dependencies for command class {} missing, not enabling.", cmdClass.getSimpleName());
92+
AnarchyExploitFixes.logger().info("Dependencies for command class {} missing, not enabling.", cmdClass.getSimpleName());
9393
} else {
94-
AnarchyExploitFixes.prefixedLogger().warn("Failed initialising command class '{}'.", cmdClass.getSimpleName(), t);
94+
AnarchyExploitFixes.logger().warn("Failed initialising command class '{}'.", cmdClass.getSimpleName(), t);
9595
}
9696
}
9797
}

AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/commands/ToggleConnectionMsgsCmd.java

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
public class ToggleConnectionMsgsCmd extends AEFCommand {
1919

2020
public ToggleConnectionMsgsCmd() {
21-
super("toggleconnectionmsgs", "Toggle connection messages", "/toggleconnectionmsgs", Collections.singletonList("tcmsgs"));
21+
super("toggleconnectionmsgs", "Toggle connection messages on/off",
22+
"/toggleconnectionmsgs | /togglejoins", Collections.singletonList("togglejoins"));
2223
}
2324

2425
@Override
@@ -42,26 +43,28 @@ public boolean execute(@NotNull CommandSender sender, @NotNull String commandLab
4243
}
4344

4445
if (!(sender instanceof Player player)) {
45-
sender.sendMessage(Component.text("Only players can execute this command.").color(NamedTextColor.RED));
46+
sender.sendMessage(Component.text("Only players can execute this command.", NamedTextColor.RED));
4647
return true;
4748
}
4849

49-
boolean msgsWereVisible;
50-
PersistentDataContainer dataContainer = player.getPersistentDataContainer();
50+
player.getScheduler().run(getPlugin(), toggleJoinLeaveSettings -> {
51+
boolean msgsWereVisibleBeforeCmd;
52+
PersistentDataContainer dataContainer = player.getPersistentDataContainer();
5153

52-
if (!dataContainer.has(AEFKey.CONNECT_MSG_TOGGLE.getKey(), PersistentDataType.BOOLEAN)) {
53-
msgsWereVisible = AnarchyExploitFixes.config().connectionMsgsAreOnByDefault;
54-
} else {
55-
msgsWereVisible = dataContainer.get(AEFKey.CONNECT_MSG_TOGGLE.getKey(), PersistentDataType.BOOLEAN);
56-
}
54+
if (!dataContainer.has(AEFKey.CONNECT_MSG_TOGGLE.getKey(), PersistentDataType.BOOLEAN)) {
55+
msgsWereVisibleBeforeCmd = AnarchyExploitFixes.config().connectionMsgsAreOnByDefault;
56+
} else {
57+
msgsWereVisibleBeforeCmd = dataContainer.get(AEFKey.CONNECT_MSG_TOGGLE.getKey(), PersistentDataType.BOOLEAN);
58+
}
5759

58-
dataContainer.set(AEFKey.CONNECT_MSG_TOGGLE.getKey(), PersistentDataType.BOOLEAN, !msgsWereVisible);
60+
dataContainer.set(AEFKey.CONNECT_MSG_TOGGLE.getKey(), PersistentDataType.BOOLEAN, !msgsWereVisibleBeforeCmd);
5961

60-
if (msgsWereVisible) {
61-
player.sendMessage(AnarchyExploitFixes.translation(player.locale()).misc_disabledConnectionMsgs);
62-
} else {
63-
player.sendMessage(AnarchyExploitFixes.translation(player.locale()).misc_enabledConnectionMsgs);
64-
}
62+
if (msgsWereVisibleBeforeCmd) {
63+
player.sendMessage(AnarchyExploitFixes.translation(player).misc_disabledConnectionMsgs);
64+
} else {
65+
player.sendMessage(AnarchyExploitFixes.translation(player).misc_enabledConnectionMsgs);
66+
}
67+
}, null);
6568

6669
return true;
6770
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package me.xginko.aef.commands;
2+
3+
import me.xginko.aef.AnarchyExploitFixes;
4+
import me.xginko.aef.utils.enums.AEFKey;
5+
import me.xginko.aef.utils.permissions.AEFPermission;
6+
import net.kyori.adventure.text.Component;
7+
import net.kyori.adventure.text.format.NamedTextColor;
8+
import org.bukkit.command.CommandException;
9+
import org.bukkit.command.CommandSender;
10+
import org.bukkit.entity.Player;
11+
import org.bukkit.persistence.PersistentDataContainer;
12+
import org.bukkit.persistence.PersistentDataType;
13+
import org.jetbrains.annotations.NotNull;
14+
15+
import java.util.Collections;
16+
import java.util.List;
17+
18+
public class ToggleFirstJoinMsgsCmd extends AEFCommand {
19+
20+
public ToggleFirstJoinMsgsCmd() {
21+
super("togglefirstjoinmsgs", "Toggle first join messages on/off",
22+
"/togglefirstjoinmsgs | /togglefirstjoins", Collections.singletonList("togglefirstjoins"));
23+
}
24+
25+
@Override
26+
public boolean shouldEnable() {
27+
return AnarchyExploitFixes.config().cmd_toggleFirstJoinMsgs_enabled;
28+
}
29+
30+
@Override
31+
public @NotNull List<String> tabComplete(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args)
32+
throws CommandException, IllegalArgumentException
33+
{
34+
return Collections.emptyList();
35+
}
36+
37+
@Override
38+
@SuppressWarnings("DataFlowIssue")
39+
public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel, @NotNull String[] args) {
40+
if (!AnarchyExploitFixes.permissions().permissionValue(sender, AEFPermission.CMD_TOGGLE_FIRST_JOIN_MSGS.node()).toBoolean()) {
41+
sender.sendMessage(AnarchyExploitFixes.translation(sender).no_permission);
42+
return true;
43+
}
44+
45+
if (!(sender instanceof Player player)) {
46+
sender.sendMessage(Component.text("Only players can execute this command.", NamedTextColor.RED));
47+
return true;
48+
}
49+
50+
player.getScheduler().run(getPlugin(), toggleFirstJoinSettings -> {
51+
boolean msgsWereVisibleBeforeCmd;
52+
PersistentDataContainer dataContainer = player.getPersistentDataContainer();
53+
54+
if (!dataContainer.has(AEFKey.FIRSTJOIN_MSG_TOGGLE.getKey(), PersistentDataType.BOOLEAN)) {
55+
msgsWereVisibleBeforeCmd = AnarchyExploitFixes.config().firstJoinMsgsAreOnByDefault;
56+
} else {
57+
msgsWereVisibleBeforeCmd = dataContainer.get(AEFKey.FIRSTJOIN_MSG_TOGGLE.getKey(), PersistentDataType.BOOLEAN);
58+
}
59+
60+
dataContainer.set(AEFKey.FIRSTJOIN_MSG_TOGGLE.getKey(), PersistentDataType.BOOLEAN, !msgsWereVisibleBeforeCmd);
61+
62+
if (msgsWereVisibleBeforeCmd) {
63+
player.sendMessage(AnarchyExploitFixes.translation(player).misc_disabledFirstJoinMsgs);
64+
} else {
65+
player.sendMessage(AnarchyExploitFixes.translation(player).misc_enabledFirstJoinMsgs);
66+
}
67+
}, null);
68+
69+
return true;
70+
}
71+
}

AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/commands/aef/subcommands/LagSubCmd.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public boolean execute(@NotNull CommandSender sender, @NotNull String commandLab
6464
} catch (InterruptedException e) {
6565
sender.sendMessage(Component.text(" Operation was interrupted! - " + e.getLocalizedMessage()).color(NamedTextColor.RED));
6666
player.sendMessage(Component.empty());
67-
AnarchyExploitFixes.prefixedLogger().error("Lag command encountered an error!", e);
67+
AnarchyExploitFixes.logger().error("Lag command encountered an error!", e);
6868
}
6969
}, null, 1L);
7070
} else {
@@ -76,7 +76,7 @@ public boolean execute(@NotNull CommandSender sender, @NotNull String commandLab
7676
sender.sendMessage(Component.empty());
7777
} catch (InterruptedException e) {
7878
sender.sendMessage(Component.text(" Operation was interrupted! - " + e.getLocalizedMessage()).color(NamedTextColor.RED));
79-
AnarchyExploitFixes.prefixedLogger().error("Lag command encountered an error!", e);
79+
AnarchyExploitFixes.logger().error("Lag command encountered an error!", e);
8080
}
8181
});
8282
}

0 commit comments

Comments
 (0)