diff --git a/src/main/java/me/machinemaker/papertweaks/PaperTweaks.java b/src/main/java/me/machinemaker/papertweaks/PaperTweaks.java index 4c0b3e01..512b800b 100644 --- a/src/main/java/me/machinemaker/papertweaks/PaperTweaks.java +++ b/src/main/java/me/machinemaker/papertweaks/PaperTweaks.java @@ -145,7 +145,9 @@ protected void configure() { @Override public void onDisable() { - this.moduleManager.disableModules(true); + if (this.moduleManager != null) { + this.moduleManager.disableModules(true); + } EXECUTOR_SERVICE.shutdownNow(); } diff --git a/src/main/java/me/machinemaker/papertweaks/RootCommand.java b/src/main/java/me/machinemaker/papertweaks/RootCommand.java index d04000ad..3938bc92 100644 --- a/src/main/java/me/machinemaker/papertweaks/RootCommand.java +++ b/src/main/java/me/machinemaker/papertweaks/RootCommand.java @@ -45,9 +45,6 @@ import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.JoinConfiguration; import net.kyori.adventure.text.TextComponent; -import net.kyori.adventure.text.event.ClickEvent; -import net.kyori.adventure.text.event.HoverEvent; -import net.kyori.adventure.text.format.TextColor; import org.bukkit.command.CommandSender; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; import org.checkerframework.checker.nullness.qual.NonNull; @@ -57,8 +54,17 @@ import static net.kyori.adventure.text.Component.newline; import static net.kyori.adventure.text.Component.space; import static net.kyori.adventure.text.Component.text; +import static net.kyori.adventure.text.Component.textOfChildren; import static net.kyori.adventure.text.Component.translatable; -import static net.kyori.adventure.text.format.NamedTextColor.*; +import static net.kyori.adventure.text.event.ClickEvent.copyToClipboard; +import static net.kyori.adventure.text.event.ClickEvent.runCommand; +import static net.kyori.adventure.text.event.HoverEvent.showText; +import static net.kyori.adventure.text.format.NamedTextColor.GOLD; +import static net.kyori.adventure.text.format.NamedTextColor.GRAY; +import static net.kyori.adventure.text.format.NamedTextColor.GREEN; +import static net.kyori.adventure.text.format.NamedTextColor.RED; +import static net.kyori.adventure.text.format.NamedTextColor.YELLOW; +import static net.kyori.adventure.text.format.TextColor.color; @DefaultQualifier(NonNull.class) public class RootCommand extends PaperTweaksCommand { @@ -150,12 +156,19 @@ private void sendModuleList(final @NonNull CommandContext con if (lifecycle.isEmpty()) continue; final ModuleState state = lifecycle.get().getState(); if (showAll || state.isRunning()) { - final TextComponent.Builder builder = text().color(TextColor.color(0x8F8F8F)).append(text(" - ")); + final TextComponent.Builder builder = text().color(color(0x8F8F8F)).append(text(" - ")); if ((state.isRunning() && context.getSender().hasPermission("vanillatweaks.main.disable")) || (!state.isRunning() && context.getSender().hasPermission("vanillatweaks.main.enable"))) { - builder.append(text("[" + (state.isRunning() ? "■" : "▶") + "]", state.isRunning() ? RED : GREEN).hoverEvent(HoverEvent.showText(translatable("commands.config.bool-toggle." + state.isRunning(), state.isRunning() ? RED : GREEN, text(moduleBase.getName(), GOLD)))).clickEvent(ClickEvent.runCommand("/vanillatweaks " + (state.isRunning() ? "disable " : "enable ") + moduleBase.getName()))).append(space()); + builder.append( + text("[" + (state.isRunning() ? "■" : "▶") + "]", state.isRunning() ? RED : GREEN) + .hoverEvent(showText(translatable("commands.config.bool-toggle." + state.isRunning(), state.isRunning() ? RED : GREEN, text(moduleBase.getName(), GOLD)))) + .clickEvent(runCommand("/vanillatweaks " + (state.isRunning() ? "disable " : "enable ") + moduleBase.getName())) + ).append(space()); } - builder.append(text(moduleBase.getName(), state.isRunning() ? GREEN : RED).hoverEvent(HoverEvent.showText(text(moduleBase.getDescription(), GRAY)))); + builder.append( + text(moduleBase.getName(), state.isRunning() ? GREEN : RED) + .hoverEvent(showText(text(moduleBase.getDescription(), GRAY))) + ); list.append(builder).append(newline()); } } @@ -163,11 +176,24 @@ private void sendModuleList(final @NonNull CommandContext con } private ComponentLike createHeader(final int page, final List modules) { - return text().append(AbstractConfigurationMenu.TITLE_LINE).append(ChatWindow.center(text("Modules - Page " + page + "/" + ((int) Math.ceil(modules.size() / (double) PAGE_SIZE))).hoverEvent(HoverEvent.showText(translatable("commands.list.success.header.hover", GRAY)))).append(newline())).append(AbstractConfigurationMenu.TITLE_LINE); + return textOfChildren( + AbstractConfigurationMenu.TITLE_LINE, + ChatWindow.center( + text("Modules - Page " + page + "/" + ((int) Math.ceil(modules.size() / (double) PAGE_SIZE))) + .hoverEvent(showText(translatable("commands.list.success.header.hover", GRAY))) + ), + newline(), + AbstractConfigurationMenu.TITLE_LINE + ); } private void showVersion(final CommandContext context) { - final TextComponent.Builder component = text().append(PaperTweaks.PLUGIN_PREFIX).append(translatable("commands.version.success", GRAY, text(PaperTweaks.class.getPackage().getImplementationVersion(), GOLD)).hoverEvent(HoverEvent.showText(translatable("commands.version.success.hover", GRAY))).clickEvent(ClickEvent.copyToClipboard(PaperTweaks.class.getPackage().getImplementationVersion()))); + final Component component = textOfChildren( + PaperTweaks.PLUGIN_PREFIX, + translatable("commands.version.success", GRAY, text(PaperTweaks.class.getPackage().getImplementationVersion(), GOLD)) + .hoverEvent(showText(translatable("commands.version.success.hover", GRAY))) + .clickEvent(copyToClipboard(PaperTweaks.class.getPackage().getImplementationVersion())) + ); context.getSender().sendMessage(component); } diff --git a/src/main/java/me/machinemaker/papertweaks/cloud/arguments/SettingArgument.java b/src/main/java/me/machinemaker/papertweaks/cloud/arguments/SettingArgument.java index 0c051bdc..bc3ae8a4 100644 --- a/src/main/java/me/machinemaker/papertweaks/cloud/arguments/SettingArgument.java +++ b/src/main/java/me/machinemaker/papertweaks/cloud/arguments/SettingArgument.java @@ -47,11 +47,11 @@ import me.machinemaker.papertweaks.settings.Setting; import me.machinemaker.papertweaks.settings.types.ConfigSetting; import me.machinemaker.papertweaks.settings.types.PlayerSetting; -import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.entity.Player; import org.checkerframework.checker.nullness.qual.Nullable; import static net.kyori.adventure.text.Component.translatable; +import static net.kyori.adventure.text.format.NamedTextColor.GREEN; @SuppressWarnings("Convert2Diamond") public class SettingArgument> extends ArgumentPair> { @@ -90,7 +90,7 @@ public static > Command.Builder implements ConfigurationMenu { diff --git a/src/main/java/me/machinemaker/papertweaks/modules/survival/durabilityping/PlayerListener.java b/src/main/java/me/machinemaker/papertweaks/modules/survival/durabilityping/PlayerListener.java index d98ad7d4..61d0ca80 100644 --- a/src/main/java/me/machinemaker/papertweaks/modules/survival/durabilityping/PlayerListener.java +++ b/src/main/java/me/machinemaker/papertweaks/modules/survival/durabilityping/PlayerListener.java @@ -29,10 +29,8 @@ import me.machinemaker.papertweaks.modules.ModuleListener; import me.machinemaker.papertweaks.settings.ModuleSettings; import me.machinemaker.papertweaks.tags.Tags; -import me.machinemaker.papertweaks.utils.Keys; import net.kyori.adventure.sound.Sound; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -44,6 +42,8 @@ import static net.kyori.adventure.text.Component.text; import static net.kyori.adventure.text.Component.translatable; +import static net.kyori.adventure.text.format.NamedTextColor.GOLD; +import static net.kyori.adventure.text.format.NamedTextColor.RED; class PlayerListener implements ModuleListener { @@ -90,10 +90,10 @@ public void onDurabilityChange(final PlayerItemDamageEvent event) throws Executi Component createNotification(final Material type, final int durability) { return translatable( "modules.durability-ping.notification.tool", - NamedTextColor.RED, - translatable(Keys.itemTranslationKey(type), NamedTextColor.GOLD), - text(type.getMaxDurability() - durability - 1, NamedTextColor.GOLD), - text(type.getMaxDurability(), NamedTextColor.GOLD) + RED, + translatable(type, GOLD), + text(type.getMaxDurability() - durability - 1, GOLD), + text(type.getMaxDurability(), GOLD) ); } diff --git a/src/main/java/me/machinemaker/papertweaks/utils/Keys.java b/src/main/java/me/machinemaker/papertweaks/utils/Keys.java index 011eec6b..b625d85b 100644 --- a/src/main/java/me/machinemaker/papertweaks/utils/Keys.java +++ b/src/main/java/me/machinemaker/papertweaks/utils/Keys.java @@ -37,8 +37,4 @@ public static NamespacedKey legacyKey(final String string) { public static NamespacedKey key(final String string) { return new NamespacedKey(NAMESPACE, string); } - - public static String itemTranslationKey(final Material material) { - return "item." + material.getKey().getNamespace() + "." + material.getKey().getKey().replace('/', '.'); - } }