diff --git a/build.gradle.kts b/build.gradle.kts index 6eb2ea1d..3a8c93b8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,7 @@ plugins { } group = "de.eldoria" -version = "2.7.3" +version = "2.7.4" var publishModules = setOf( "schematicbrushreborn-api", diff --git a/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/brush/config/builder/BuildUtil.java b/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/brush/config/builder/BuildUtil.java index 611f6f22..83b02767 100644 --- a/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/brush/config/builder/BuildUtil.java +++ b/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/brush/config/builder/BuildUtil.java @@ -10,7 +10,6 @@ import de.eldoria.schematicbrush.brush.config.provider.Mutator; import de.eldoria.schematicbrush.brush.config.provider.SettingProvider; import de.eldoria.schematicbrush.brush.config.util.ComponentProvider; -import de.eldoria.schematicbrush.util.Colors; import org.bukkit.permissions.Permissible; import java.util.List; diff --git a/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/storage/brush/Brush.java b/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/storage/brush/Brush.java index 38830efb..62998624 100644 --- a/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/storage/brush/Brush.java +++ b/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/storage/brush/Brush.java @@ -14,7 +14,6 @@ import de.eldoria.schematicbrush.brush.config.builder.BrushBuilder; import de.eldoria.schematicbrush.brush.config.builder.BrushBuilderSnapshot; import de.eldoria.schematicbrush.brush.config.builder.BuildUtil; -import de.eldoria.schematicbrush.util.Colors; import org.bukkit.configuration.serialization.ConfigurationSerializable; import org.bukkit.configuration.serialization.SerializableAs; import org.jetbrains.annotations.NotNull; @@ -91,9 +90,9 @@ public static Brush deserialize(Map objectMap) { @NotNull public Map serialize() { return SerializationUtil.newBuilder() - .add("name", name) - .add("snapshot", snapshot) - .build(); + .add("name", name) + .add("snapshot", snapshot) + .build(); } /** @@ -145,28 +144,30 @@ public int compareTo(@NotNull Brush o) { public String simpleComponent(BrushSettingsRegistry registry) { var sets = snapshot.schematicSets().stream() - .map(set -> " " + BuildUtil.renderProvider(set.selector())) - .toList(); + .map(set -> " " + BuildUtil.renderProvider(set.selector())) + .toList(); return MessageComposer.create() - .text("<%s>%s", Colors.VALUE, description()) - .newLine() - .text("<%s>Schematic Sets:", Colors.NAME) - .newLine() - .text(sets) - .newLine() - .text(simpleModifier(registry)) - .build(); + .text("%s", description()) + .newLine() + .text("") + .localeCode("words.schematicSets") + .text(":") + .newLine() + .text(sets) + .newLine() + .text(simpleModifier(registry)) + .build(); } public String infoComponent(boolean global, boolean canDelete, BrushSettingsRegistry registry) { var text = MessageComposer.create() - .text("<%s>%s", Colors.NAME, simpleComponent(registry), name()) - .space() - .text("<%s>[Info]", Colors.ADD, (global ? "g:" : "") + name()) - .space() - .text("<%s>[Load]", Colors.ADD, (global ? "g:" : "") + name()); + .text("%s", simpleComponent(registry), name()) + .space() + .text("[Info]", (global ? "g:" : "") + name()) + .space() + .text("[Load]", (global ? "g:" : "") + name()); if (canDelete) { - text.space().text("<%s>[Remove]", Colors.REMOVE, name(), global ? "-g" : ""); + text.space().text("[Remove]", name(), global ? "-g" : ""); } return text.build(); @@ -174,32 +175,44 @@ public String infoComponent(boolean global, boolean canDelete, BrushSettingsRegi private List simpleModifier(BrushSettingsRegistry registry) { return snapshot.placementModifier().entrySet().stream() - .map(e -> registry.getPlacementModifier(e.getKey()) - .map(mod -> String.format("<%s>%s: <%s>%s", - Colors.NAME, mod.modifier().name(), Colors.VALUE, e.getValue().descriptor())) - .orElse(null)) - .filter(Objects::nonNull) - .toList(); + .map(e -> registry.getPlacementModifier(e.getKey()) + .map(mod -> String.format("%s: %s", + mod.modifier().name(), e.getValue().descriptor())) + .orElse(null)) + .filter(Objects::nonNull) + .toList(); } public String detailComponent(boolean global, BrushSettingsRegistry registry) { var sets = snapshot.schematicSets().stream() - .map(set -> String.format(" %s", set.infoComponent(), BuildUtil.renderProvider(set.selector()))) - .collect(Collectors.toList()); + .map(set -> String.format(" %s", set.infoComponent(), BuildUtil.renderProvider(set.selector()))) + .collect(Collectors.toList()); var modifier = simpleModifier(registry); return MessageComposer.create() - .text("<%s>Information about brush <%s>%s", Colors.HEADING, Colors.NAME, name()) - .newLine() - .text("<%s>Description: <%s>%s <%s>[Change]", - Colors.NAME, Colors.VALUE, description(), (global ? "g:" : "") + name(), Colors.CHANGE) - .newLine() - .text("<%s>Schematic Sets:", Colors.NAME) - .newLine() - .text(sets) - .newLine() - .text(modifier) - .build(); + .text("").localeCode("components.brush.information") + .space() + .text(name()) + .newLine() + .text("") + .localeCode("words.description") + .text(": ") + .text(description()) + .space() + .text("[") + .localeCode("words.change") + .text("]") + .newLine() + .text("") + .localeCode("words.schematicSets") + .text(":") + .newLine() + .text(sets) + .newLine() + .text(modifier) + .build(); } } diff --git a/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/storage/preset/Preset.java b/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/storage/preset/Preset.java index ca522a0b..57ed2339 100644 --- a/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/storage/preset/Preset.java +++ b/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/storage/preset/Preset.java @@ -12,7 +12,6 @@ import de.eldoria.eldoutilities.serialization.SerializationUtil; import de.eldoria.schematicbrush.brush.config.builder.BuildUtil; import de.eldoria.schematicbrush.brush.config.builder.SchematicSetBuilder; -import de.eldoria.schematicbrush.util.Colors; import org.bukkit.configuration.serialization.ConfigurationSerializable; import org.bukkit.configuration.serialization.SerializableAs; import org.jetbrains.annotations.NotNull; @@ -73,12 +72,12 @@ public String name() { public String infoComponent(boolean global, boolean canDelete) { var text = MessageComposer.create() - .text("<%s>%s", Colors.NAME, simpleComponent(), name()) + .text("%s", simpleComponent(), name()) .space() - .text("<%s>[Info]", Colors.ADD, (global ? "g:" : "") + name()); + .text("[Info]", (global ? "g:" : "") + name()); if (canDelete) { text.space() - .text("<%s>[Remove]", Colors.REMOVE, name(), (global ? "-g" : "")); + .text("[Remove]", name(), (global ? "-g" : "")); } return text.build(); @@ -90,12 +89,21 @@ public String detailComponent(boolean global) { .collect(Collectors.toList()); return MessageComposer.create() - .text("<%s>Information about preset <%s>%s", Colors.HEADING, Colors.NAME, name()) + .text("") + .localeCode("components.preset.information") + .text(" %s", name()) .newLine() - .text("<%s>Description: <%s>%s <%s>[Change]", - Colors.NAME, Colors.VALUE, description(), (global ? "g:" : "") + name(), Colors.CHANGE) + .text("") + .localeCode("words.description") + .text(": %s", description()) + .space() + .text("[", (global ? "g:" : "") + name()) + .localeCode("words.change") + .text("]") .newLine() - .text("<%s>Schematic Sets:", Colors.NAME) + .text("") + .localeCode("words.schematicSets") + .text(":") .newLine() .text(sets) .build(); @@ -106,8 +114,8 @@ public String simpleComponent() { .map(set -> " " + BuildUtil.renderProvider(set.selector())) .collect(Collectors.joining("\n")); - var message = String.format("<%s>%s%n", Colors.VALUE, description()); - message += String.format("<%s>Schematic Sets:%n%s", Colors.NAME, sets); + var message = String.format("%s%n", description()); + message += String.format("Schematic Sets:%n%s", sets); return message; } diff --git a/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/util/Colors.java b/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/util/Colors.java deleted file mode 100644 index 3eb54fcb..00000000 --- a/schematicbrushreborn-api/src/main/java/de/eldoria/schematicbrush/util/Colors.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * SPDX-License-Identifier: AGPL-3.0-only - * - * Copyright (C) EldoriaRPG Team and Contributor - */ - -package de.eldoria.schematicbrush.util; - -import net.kyori.adventure.text.format.NamedTextColor; - -/** - * Class holding some colors sorted by category - */ -public final class Colors { - public static final String HEADING = NamedTextColor.GOLD.toString(); - public static final String NAME = NamedTextColor.DARK_AQUA.toString(); - public static final String VALUE = NamedTextColor.DARK_GREEN.toString(); - public static final String CHANGE = NamedTextColor.YELLOW.toString(); - public static final String REMOVE = NamedTextColor.RED.toString(); - public static final String ADD = NamedTextColor.GREEN.toString(); - public static final String NEUTRAL = NamedTextColor.AQUA.toString(); - public static final String INACTIVE = NamedTextColor.GRAY.toString(); - - private Colors() { - throw new UnsupportedOperationException("This is a utility class."); - } -} diff --git a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/SchematicBrushRebornImpl.java b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/SchematicBrushRebornImpl.java index 69828db8..8524973d 100644 --- a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/SchematicBrushRebornImpl.java +++ b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/SchematicBrushRebornImpl.java @@ -87,6 +87,9 @@ import org.jetbrains.annotations.NotNull; import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; import java.util.Arrays; import java.util.List; import java.util.Locale; @@ -97,6 +100,7 @@ @SuppressWarnings("unused") public class SchematicBrushRebornImpl extends SchematicBrushReborn { + private static final String[] LANGUAGES = new String[]{"de_DE", "en_US", "zh_TW"}; private BrushSettingsRegistryImpl settingsRegistry; private SchematicRegistryImpl schematics; private JacksonConfiguration configuration; @@ -141,6 +145,18 @@ public void onPluginLoad() throws Throwable { configuration.save(); } + if (base.version() == 1) { + // Required changes were made to language formats. reset files. + Path path = getDataFolder().toPath().resolve("messages"); + for (String language : LANGUAGES) { + var file = path.resolve("messages_%s.properties".formatted(language)); + Files.copy(file, path.resolve("messages_%s_old.properties".formatted(language)), StandardCopyOption.REPLACE_EXISTING); + Files.deleteIfExists(file); + } + base.version(2); + configuration.save(); + } + var yamlStorage = new YamlStorage(configuration); storageRegistry = new StorageRegistryImpl(yamlStorage, configuration); storageRegistry.register(StorageRegistry.YAML, yamlStorage); @@ -149,26 +165,26 @@ public void onPluginLoad() throws Throwable { @Override public void onPluginEnable() { var localizer = Localizer.builder(this, configuration.general().language()) - .setIncludedLocales("de_DE", "en_US", "zh_TW") - .build(); + .setIncludedLocales(LANGUAGES) + .build(); MessageSender.builder(this) - .prefix("[SB]") - .messageColor(NamedTextColor.AQUA) - .addTag(tags -> tags - .tag("heading", Tag.styling(NamedTextColor.GOLD)) - .tag("name", Tag.styling(NamedTextColor.AQUA)) - .tag("value", Tag.styling(NamedTextColor.DARK_GREEN)) - .tag("change", Tag.styling(NamedTextColor.YELLOW)) - .tag("remove", Tag.styling(NamedTextColor.RED)) - .tag("add", Tag.styling(NamedTextColor.GREEN)) - .tag("warn", Tag.styling(NamedTextColor.RED)) - .tag("neutral", Tag.styling(NamedTextColor.AQUA)) - .tag("confirm", Tag.styling(NamedTextColor.GREEN)) - .tag("delete", Tag.styling(NamedTextColor.RED)) - .tag("inactive", Tag.styling(NamedTextColor.GRAY)) - ) - .localizer(localizer) - .register(); + .prefix("[SB]") + .messageColor(NamedTextColor.AQUA) + .addTag(tags -> tags + .tag("heading", Tag.styling(NamedTextColor.GOLD)) + .tag("name", Tag.styling(NamedTextColor.DARK_AQUA)) + .tag("value", Tag.styling(NamedTextColor.DARK_GREEN)) + .tag("change", Tag.styling(NamedTextColor.YELLOW)) + .tag("remove", Tag.styling(NamedTextColor.RED)) + .tag("add", Tag.styling(NamedTextColor.GREEN)) + .tag("warn", Tag.styling(NamedTextColor.RED)) + .tag("neutral", Tag.styling(NamedTextColor.AQUA)) + .tag("confirm", Tag.styling(NamedTextColor.GREEN)) + .tag("delete", Tag.styling(NamedTextColor.RED)) + .tag("inactive", Tag.styling(NamedTextColor.GRAY)) + ) + .localizer(localizer) + .register(); schematics.register(SchematicCache.STORAGE, new SchematicBrushCache(this, configuration)); @@ -217,12 +233,12 @@ public void onPluginEnable() { public Module platformModule() { if (!getServer().getName().toLowerCase(Locale.ROOT).contains("spigot")) { return JacksonPaper.builder() - .colorAsHex() - .build(); + .colorAsHex() + .build(); } return JacksonBukkit.builder() - .colorAsHex() - .build(); + .colorAsHex() + .build(); } /** @@ -255,14 +271,14 @@ public SimpleModule schematicBrushModule() { @Override public ObjectMapper configureMapper(MapperBuilder builder) { builder.addModule(platformModule()) - .typeFactory(TypeFactory.defaultInstance().withClassLoader(getClassLoader())) - .addModule(schematicBrushModule()) - .configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false) - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) - .enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS); + .typeFactory(TypeFactory.defaultInstance().withClassLoader(getClassLoader())) + .addModule(schematicBrushModule()) + .configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false) + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) + .enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS); if (builder instanceof YAMLMapper.Builder b) { b.disable(YAMLGenerator.Feature.USE_NATIVE_TYPE_ID) - .disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER); + .disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER); } return builder .build() @@ -274,11 +290,11 @@ public ObjectMapper configureMapper(MapperBuilder builder) { public void onPostStart() throws Throwable { if (configuration.general().isCheckUpdates() && UserData.get(this).isPremium()) { Updater.lyna(LynaUpdateData.builder(this, 1) - .updateUrl("https://discord.gg/zRW9Vpu") - .notifyPermission(Permissions.Admin.RELOAD) - .notifyUpdate(true) - .build()) - .start(); + .updateUrl("https://discord.gg/zRW9Vpu") + .notifyPermission(Permissions.Admin.RELOAD) + .notifyUpdate(true) + .build()) + .start(); } } @@ -327,11 +343,11 @@ private void enableMetrics() { metrics.addCustomChart(new AdvancedPie("installed_add_ons", () -> Arrays.stream(getServer().getPluginManager().getPlugins()) - .filter(plugin -> { - var descr = plugin.getDescription(); - return descr.getSoftDepend().contains("SchematicBrushReborn") || descr.getDepend() - .contains("SchematicBrushReborn"); - }).collect(Collectors.toMap(e -> e.getDescription().getName(), e -> 1)))); + .filter(plugin -> { + var descr = plugin.getDescription(); + return descr.getSoftDepend().contains("SchematicBrushReborn") || descr.getDepend() + .contains("SchematicBrushReborn"); + }).collect(Collectors.toMap(e -> e.getDescription().getName(), e -> 1)))); metrics.addCustomChart(new SimplePie("used_storage_type", () -> configuration.general().storageType().name())); diff --git a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/brush/config/builder/SchematicSetBuilderImpl.java b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/brush/config/builder/SchematicSetBuilderImpl.java index 2ff1f5e9..e201475a 100644 --- a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/brush/config/builder/SchematicSetBuilderImpl.java +++ b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/brush/config/builder/SchematicSetBuilderImpl.java @@ -20,7 +20,6 @@ import de.eldoria.schematicbrush.brush.config.util.Nameable; import de.eldoria.schematicbrush.schematics.Schematic; import de.eldoria.schematicbrush.schematics.SchematicRegistry; -import de.eldoria.schematicbrush.util.Colors; import org.bukkit.configuration.serialization.SerializableAs; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; diff --git a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/brush/Bind.java b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/brush/Bind.java index 63a77ee3..402d8ac1 100644 --- a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/brush/Bind.java +++ b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/brush/Bind.java @@ -13,12 +13,9 @@ import de.eldoria.eldoutilities.commands.exceptions.CommandException; import de.eldoria.eldoutilities.commands.executor.IPlayerTabExecutor; import de.eldoria.eldoutilities.localization.MessageComposer; -import de.eldoria.eldoutilities.messages.MessageSender; import de.eldoria.eldoutilities.messages.Replacement; import de.eldoria.messageblocker.blocker.MessageBlocker; import de.eldoria.schematicbrush.util.WorldEditBrush; -import net.kyori.adventure.platform.bukkit.BukkitAudiences; -import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; @@ -29,8 +26,8 @@ public class Bind extends AdvancedCommand implements IPlayerTabExecutor { public Bind(Plugin plugin, Sessions sessions, MessageBlocker messageBlocker) { super(plugin, CommandMeta.builder("bind") - .hidden() - .build()); + .hidden() + .build()); this.sessions = sessions; this.messageBlocker = messageBlocker; } @@ -50,11 +47,11 @@ public void onCommand(@NotNull Player player, @NotNull String alias, @NotNull Ar var schematicCount = brush.settings().getSchematicCount(); var setcount = brush.settings().schematicSets().size(); var message = MessageComposer.create() - .localeCode("commands.brush.bind.bound", Replacement.create("schematics", schematicCount), Replacement.create("sets", setcount)) - .text("[") - .localeCode("words.edit") - .text("]") - .build(); + .localeCode("commands.brush.bind.bound", Replacement.create("schematics", schematicCount), Replacement.create("sets", setcount)) + .text("[") + .localeCode("words.edit") + .text("]") + .build(); messageBlocker.unblockPlayer(player).thenRun(() -> messageSender().sendMessage(player, message)); } } diff --git a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/brush/Sessions.java b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/brush/Sessions.java index 7e6cad0b..e366bef5 100644 --- a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/brush/Sessions.java +++ b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/brush/Sessions.java @@ -15,10 +15,8 @@ import de.eldoria.schematicbrush.brush.config.builder.BuildUtil; import de.eldoria.schematicbrush.brush.config.schematics.RandomSelection; import de.eldoria.schematicbrush.schematics.SchematicRegistry; -import de.eldoria.schematicbrush.util.Colors; import de.eldoria.schematicbrush.util.Permissions; import de.eldoria.schematicbrush.util.WorldEditBrush; -import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -32,7 +30,6 @@ import static de.eldoria.schematicbrush.brush.config.builder.BuildUtil.buildModifier; public class Sessions { - private final MiniMessage miniMessage = MiniMessage.miniMessage(); private final BrushSettingsRegistry registry; private final SchematicRegistry schematicRegistry; private final MessageBlocker messageBlocker; @@ -56,8 +53,8 @@ public void startSession(Player player) { private BrushBuilder getOrCreateBuilder(Player player) { return WorldEditBrush.getSchematicBrush(player) - .map(brush -> brush.toBuilder(registry, schematicRegistry)) - .orElse(new BrushBuilderImpl(player, new RandomSelection(), registry, schematicRegistry)); + .map(brush -> brush.toBuilder(registry, schematicRegistry)) + .orElse(new BrushBuilderImpl(player, new RandomSelection(), registry, schematicRegistry)); } public void showBrush(Player player) { @@ -66,15 +63,15 @@ public void showBrush(Player player) { var selectors = builder.schematicSets().stream().map(set -> BuildUtil.renderProvider(set.selector())).collect(Collectors.joining("\n")); var composer = MessageComposer.create() - .text("") - .localeCode("commands.brush.sessions.menu") - .newLine() - .text("") - .localeCode("words.schematicSets") - .text(":") - .space() - .text("%s []", - selectors, builder.schematicSets().size()); + .text("") + .localeCode("commands.brush.sessions.menu") + .newLine() + .text("") + .localeCode("words.schematicSets") + .text(":") + .space() + .text("%s []", + selectors, builder.schematicSets().size()); var mutatorMap = builder.placementModifier(); var modifierStrings = new ArrayList(); @@ -88,9 +85,9 @@ public void showBrush(Player player) { .text(modifierStrings); var missing = registry.placementModifier().keySet().stream().filter(providers -> !mutatorMap.containsKey(providers)) - .map(provider -> String.format("%s'>[%s]", - provider.name(), provider.description(), provider.getLocalizedName())) - .toList(); + .map(provider -> String.format("%s'>[%s]", + provider.name(), provider.description(), provider.getLocalizedName())) + .toList(); if (!missing.isEmpty()) { composer.newLine() @@ -133,9 +130,9 @@ public void showSet(Player player, int id) { var interactComponent = set.interactComponent(player, registry, id); var composer = MessageComposer.create() - .text(interactComponent) - .newLine() - .text("[]"); + .text(interactComponent) + .newLine() + .text("[]"); messageBlocker.ifEnabled(() -> composer.newLine().text("[x]")); messageBlocker.announce(player, "[x]"); @@ -148,21 +145,21 @@ public void showSets(Player player) { var count = new AtomicInteger(0); var composer = MessageComposer.create() - .text("Schematic Sets: []") - .space().text("[") - .localeCode("commands.brush.sessions.refreshSchematics") - .text("]"); + .text("Schematic Sets: []") + .space().text("[") + .localeCode("commands.brush.sessions.refreshSchematics") + .text("]"); if (player.hasPermission(Permissions.Preset.USE)) { composer.space().text("[") .localeCode("commands.brush.sessions.addPreset") - .text("]", Colors.ADD); + .text("]"); } var sets = builder.schematicSets().stream() - .map(set -> String.format(" %s [] []", - set.infoComponent(), BuildUtil.renderProvider(set.selector()), count.get(), count.getAndIncrement())) - .collect(Collectors.joining("\n")); + .map(set -> String.format(" %s [] []", + set.infoComponent(), BuildUtil.renderProvider(set.selector()), count.get(), count.getAndIncrement())) + .collect(Collectors.joining("\n")); composer.newLine().text(sets); @@ -173,7 +170,7 @@ public void showSets(Player player) { composer.newLine().text("[]"); - messageBlocker.ifEnabled(composer, mess -> mess.newLine().text("[x]", Colors.REMOVE)); + messageBlocker.ifEnabled(composer, mess -> mess.newLine().text("[x]")); messageBlocker.announce(player, "[x]"); messageSender.sendMessage(player, composer.prependLines(20).build()); diff --git a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/brushpresets/Info.java b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/brushpresets/Info.java index 1e059121..9212863b 100644 --- a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/brushpresets/Info.java +++ b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/brushpresets/Info.java @@ -20,7 +20,6 @@ import de.eldoria.schematicbrush.brush.config.BrushSettingsRegistry; import de.eldoria.schematicbrush.storage.StorageRegistry; import net.kyori.adventure.platform.bukkit.BukkitAudiences; -import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; @@ -31,18 +30,15 @@ public class Info extends AdvancedCommand implements IPlayerTabExecutor { private final StorageRegistry storage; - private final MiniMessage miniMessage = MiniMessage.miniMessage(); - private final BukkitAudiences audiences; private final MessageBlocker messageBlocker; private final BrushSettingsRegistry registry; public Info(Plugin plugin, StorageRegistry storage, MessageBlocker messageBlocker, BrushSettingsRegistry settingsRegistry) { super(plugin, CommandMeta.builder("info") - .addUnlocalizedArgument("name", true) - .hidden() - .build()); + .addUnlocalizedArgument("name", true) + .hidden() + .build()); this.storage = storage; - audiences = BukkitAudiences.create(plugin); this.messageBlocker = messageBlocker; this.registry = settingsRegistry; } @@ -52,23 +48,23 @@ public void onCommand(@NotNull Player player, @NotNull String alias, @NotNull Ar var name = args.asString(0); var strippedName = name.replaceAll("^g:", ""); storage.activeStorage().brushes().containerByName(player, name).get(strippedName) - .whenComplete(Futures.whenComplete(res -> { - CommandAssertions.isTrue(res.isPresent(), "error.unknownBrush", Replacement.create("name", strippedName)); - var preset = res.get(); + .whenComplete(Futures.whenComplete(res -> { + CommandAssertions.isTrue(res.isPresent(), "error.unknownBrush", Replacement.create("name", strippedName)); + var preset = res.get(); - var global = name.startsWith("g:"); - var composer = MessageComposer.create() - .text(preset.detailComponent(global, registry)) - .newLine() - .text("[", global ? "global" : "private") - .localeCode("words.back") - .text("]") - .prependLines(20); - messageBlocker.ifEnabled(composer, comp -> comp.newLine().text("[x]")); - messageBlocker.announce(player, "[x]"); - audiences.player(player).sendMessage(miniMessage.deserialize(composer.build())); - }, err -> handleCommandError(player, err))) - .whenComplete(Futures.whenComplete(Consumers.emptyConsumer(), err -> handleCommandError(player, err))); + var global = name.startsWith("g:"); + var composer = MessageComposer.create() + .text(preset.detailComponent(global, registry)) + .newLine() + .text("[", global ? "global" : "private") + .localeCode("words.back") + .text("]") + .prependLines(20); + messageBlocker.ifEnabled(composer, comp -> comp.newLine().text("[x]")); + messageBlocker.announce(player, "[x]"); + messageSender().sendMessage(player, composer.build()); + }, err -> handleCommandError(player, err))) + .whenComplete(Futures.whenComplete(Consumers.emptyConsumer(), err -> handleCommandError(player, err))); } @Override diff --git a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/preset/Info.java b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/preset/Info.java index 21a77092..ee01fd71 100644 --- a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/preset/Info.java +++ b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/preset/Info.java @@ -30,7 +30,6 @@ public class Info extends AdvancedCommand implements IPlayerTabExecutor { private final StorageRegistry storage; - private final MiniMessage miniMessage = MiniMessage.miniMessage(); private final BukkitAudiences audiences; private final MessageBlocker messageBlocker; @@ -61,7 +60,7 @@ public void onCommand(@NotNull Player player, @NotNull String alias, @NotNull Ar .prependLines(20); messageBlocker.ifEnabled(composer, comp -> comp.newLine().text("[x]")); messageBlocker.announce(player, "[x]"); - audiences.player(player).sendMessage(miniMessage.deserialize(composer.build())); + messageSender().sendMessage(player, composer.build()); }, err -> handleCommandError(player, err))) .whenComplete(Futures.whenComplete(Consumers.emptyConsumer(), err -> handleCommandError(player, err))); } diff --git a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/util/BasePageCommand.java b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/util/BasePageCommand.java index 6842a686..a523d50b 100644 --- a/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/util/BasePageCommand.java +++ b/schematicbrushreborn-core/src/main/java/de/eldoria/schematicbrush/commands/util/BasePageCommand.java @@ -11,9 +11,6 @@ import de.eldoria.eldoutilities.localization.MessageComposer; import de.eldoria.messageblocker.blocker.MessageBlocker; import de.eldoria.schematicbrush.storage.ContainerPagedAccess; -import de.eldoria.schematicbrush.util.Colors; -import net.kyori.adventure.platform.bukkit.BukkitAudiences; -import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -25,14 +22,10 @@ public class BasePageCommand extends AdvancedCommand { public final String RIGHT_ARROW = "»»»"; public final String LEFT_ARROW = "«««"; private final MessageBlocker messageBlocker; - private final MiniMessage miniMessage; - private final BukkitAudiences audiences; public BasePageCommand(Plugin plugin, CommandMeta meta, MessageBlocker messageBlocker) { super(plugin, meta); this.messageBlocker = messageBlocker; - miniMessage = MiniMessage.miniMessage(); - audiences = BukkitAudiences.create(plugin); } protected void addPageHeader(MessageComposer composer, String title, boolean global) { @@ -45,10 +38,10 @@ protected void addPageHeader(MessageComposer composer, String title, boolean glo private String runCommand(String baseCommand, boolean global) { var type = global ? "words.global" : "words.private"; return MessageComposer.create() - .text("[", baseCommand, global ? "global" : "private") - .localeCode(type) - .text("]") - .build(); + .text("[", baseCommand, global ? "global" : "private") + .localeCode(type) + .text("]") + .build(); } protected void addEntries(MessageComposer composer, List entries, Function map) { @@ -59,14 +52,14 @@ protected void addEntries(MessageComposer composer, List entries, Functio protected void addPageFooter(MessageComposer composer, int index, ContainerPagedAccess paged) { var baseCommand = "/" + meta().createCommandCall(); if (index == 0) { - composer.text("%s", Colors.INACTIVE, LEFT_ARROW); + composer.text("%s", LEFT_ARROW); } else { composer.text("%s", baseCommand, index - 1, LEFT_ARROW); } - composer.text(" <%s>%s / %s ", Colors.NEUTRAL, index + 1, Math.max(1, paged.pages(PAGE_SIZE))); + composer.text(" %s / %s ", index + 1, Math.max(1, paged.pages(PAGE_SIZE))); if (index + 1 >= paged.pages(PAGE_SIZE)) { - composer.text("%s", Colors.INACTIVE, RIGHT_ARROW); + composer.text("%s", RIGHT_ARROW); } else { composer.text("%s", baseCommand, index + 1, RIGHT_ARROW); } @@ -77,6 +70,6 @@ protected void send(MessageComposer composer, Player player) { messageBlocker.blockPlayer(player); messageBlocker.ifEnabled(() -> composer.newLine().text("[x]")); messageBlocker.announce(player, "[x]"); - audiences.sender(player).sendMessage(miniMessage.deserialize(composer.build())); + messageSender().sendMessage(player, composer.build()); } } diff --git a/schematicbrushreborn-core/src/main/resources/messages_de_DE.properties b/schematicbrushreborn-core/src/main/resources/messages_de_DE.properties index 8f612fe3..79881f17 100644 --- a/schematicbrushreborn-core/src/main/resources/messages_de_DE.properties +++ b/schematicbrushreborn-core/src/main/resources/messages_de_DE.properties @@ -36,7 +36,6 @@ commands.settings.preview.subscribe.subscribed=Vorschau abonniert. commands.settings.preview.unsubscribe.unsubscribed=Vorschau abbestellt. commands.settings.showNames.hidden=Namen werden ausgeblendet. commands.settings.showNames.pasted=Namen werden eingefügt. - components.modifier.blockfilter.name=Block Filter components.modifier.flip.fixed.name=Statisch components.modifier.flip.list.name=Liste @@ -122,14 +121,12 @@ components.provider.selector.regex.name=RegEx components.selector.directory.name=Verzeichnis components.selector.name.name=Name components.selector.regex.name=RegEx - dialog.accept=Akzeptieren dialog.add=Hinzufügen dialog.deny=Ablehnen dialog.leftClickChange=Linksklick zum ändern dialog.remove=Entfernen dialog.rightClickRemove=Rechsklick zum entfernen - error.brushExists=Brush existiert bereits. Nutze -f zum Überschreiben. error.emptyBrush=Brush ist leer. error.invalidArguments=Ungültige Argumente. Syntax: @@ -151,7 +148,7 @@ error.notAsPlayer=Dieser Befehl kann nicht als Spieler ausgeführt werden. error.notOnline=Ungültiger Spieler. Dieser Spieler ist nicht online error.oneschematic=Der Brush enthält nur eine Schematic. error.onlyConsole=Dieser Befehl kann nur in der Konsole verwendet werden. -error.onlyPlayer=Dieser Befehl kann nur als Spieler verwendet werden- +error.onlyPlayer=Dieser Befehl kann nur als Spieler verwendet werden. error.permission=Du hast nicht die Berechtigung das zu tun. () error.presetExists=Vorlage existiert bereits. Nutze -f zum Überschreiben error.tooLarge=Nummer ist zu groß. Max: @@ -162,9 +159,7 @@ error.unknownModifierType=Unbekannter Modifier Typ error.unknownPlayer=Ungültiger Spieler. Dieser Spieler hat nicht auf deinem Server gespielt. error.unknownPreset=Vorlage existiert nicht. error.unknownWorld=Ungültige Welt. - service.renderService.error.sizeExceeded=Schematic überschreitet die maximale Vorschaugröße. von - words.add=Hinzufügen words.and=und words.back=Zurück @@ -177,10 +172,13 @@ words.global=Global words.mode=mehr words.none=None words.preset=Vorlagen -words.private=Global +words.private=Privat words.remove=Entfernen words.schematicSets=Schematic Sets words.schematics=Schematics words.selector=Selektor words.sets=Sets words.weight=Gewichtung +components.brush.information=Informationen über Brush +components.preset.information=Informationen über Vorlage +words.description=Beschreibung diff --git a/schematicbrushreborn-core/src/main/resources/messages_en_US.properties b/schematicbrushreborn-core/src/main/resources/messages_en_US.properties index 70b9e080..5a311afc 100644 --- a/schematicbrushreborn-core/src/main/resources/messages_en_US.properties +++ b/schematicbrushreborn-core/src/main/resources/messages_en_US.properties @@ -177,10 +177,16 @@ words.global=Global words.more=more words.none=None words.preset=Presets -words.private=Global +words.private=Private words.remove=Remove words.schematicSets=Schematic Sets words.schematics=Schematics words.selector=Selector words.sets=Sets words.weight=Weight + + +components.brush.information=Information about brush +components.preset.information=Information about preset + +words.description=Description diff --git a/schematicbrushreborn-core/src/main/resources/messages_zh_TW.properties b/schematicbrushreborn-core/src/main/resources/messages_zh_TW.properties index a58256ca..f77f80b6 100644 --- a/schematicbrushreborn-core/src/main/resources/messages_zh_TW.properties +++ b/schematicbrushreborn-core/src/main/resources/messages_zh_TW.properties @@ -1,4 +1,4 @@ -commands.about=%PLUGIN_NAME% by %AUTHORS%\n版本: %VERSION%\nSpigot: %WEBSITE%\nDiscord: %DISCORD% +commands.about= by \n版本: \nSpigot: \nDiscord: dialog.accept=同意 dialog.add=加入 @@ -7,25 +7,25 @@ dialog.leftClickChange=左鍵點擊更改 dialog.remove=刪除 dialog.rightClickRemove=右鍵點擊刪除 -error.invalidArguments=無效的參數. 語法: %SYNTAX% -error.invalidBoolean=無效的參數值, %TRUE% 或 %FALSE% +error.invalidArguments=無效的參數. 語法: +error.invalidBoolean=無效的參數值, error.invalidCommand=無效的指令 -error.invalidEnumValue=無效的參數值. 參考參數值 %VALUES%. -error.invalidLength=輸入字數過長. 最大字數: %MAX% 個字. +error.invalidEnumValue=無效的參數值. 參考參數值 . +error.invalidLength=輸入字數過長. 最大字數: 個字. error.invalidMaterial=無效材料. error.invalidNumber=無效號碼 -error.invalidRange=輸入的參數值超出範圍. 最大: %MAX% 最小: %MIN% +error.invalidRange=輸入的參數值超出範圍. 最大: 最小: error.invalidSender=不能在這裡執行此指令. -error.missingArgument=參數 %INDEX% 已被訪問但不存在. +error.missingArgument=參數 已被訪問但不存在. error.notABrush=這不是原理圖筆刷. error.notAsConsole=不能用控制臺執行此指令. error.notAsPlayer=玩家不能執行此指令 error.notOnline=未知玩家. 此玩家不在線上. error.onlyConsole=此指令只能由控制臺執行. error.onlyPlayer=此指令只能由控制臺執行. -error.permission=你沒有執行此指令的權限. (%PERMISSION%) -error.tooLarge=數字過大. 最大值: %MAX% -error.tooSmall=數字太小. 最小值: %MIN% +error.permission=你沒有執行此指令的權限. () +error.tooLarge=數字過大. 最大值: +error.tooSmall=數字太小. 最小值: error.unkownPlayer=未知玩家. 此玩家沒有玩過本伺服器. -error.unkownPreset=預設 %NAME% 不存在. +error.unkownPreset=預設 不存在. error.unkownWorld=未知玩家. 此玩家沒有玩過本伺服器. diff --git a/schematicbrushreborn-paper/build.gradle.kts b/schematicbrushreborn-paper/build.gradle.kts index aa674c9b..761aa322 100644 --- a/schematicbrushreborn-paper/build.gradle.kts +++ b/schematicbrushreborn-paper/build.gradle.kts @@ -84,7 +84,7 @@ tasks { runServer { minecraftVersion("1.21.1") downloadPlugins { - url("https://ci.athion.net/job/FastAsyncWorldEdit/lastSuccessfulBuild/artifact/artifacts/FastAsyncWorldEdit-Paper-2.12.4-SNAPSHOT-1013.jar") + url("https://ci.athion.net/job/FastAsyncWorldEdit/lastSuccessfulBuild/artifact/artifacts/FastAsyncWorldEdit-Paper-2.13.1-SNAPSHOT-1062.jar") url("https://download.luckperms.net/1569/bukkit/loader/LuckPerms-Bukkit-5.4.152.jar") }