started work on translatable Strings (CreateCommand)

This commit is contained in:
LunarAkai 2024-05-05 01:23:10 +02:00
commit 94d796e09b
6 changed files with 80 additions and 12 deletions

View file

@ -1,6 +1,10 @@
package de.lunarakai.minecleaner;
import de.lunarakai.minecleaner.commands.SettingsCommand;
import net.kyori.adventure.key.Key;
import net.kyori.adventure.translation.GlobalTranslator;
import net.kyori.adventure.translation.TranslationRegistry;
import net.kyori.adventure.util.UTF8ResourceBundleControl;
import org.bukkit.plugin.java.JavaPlugin;
import de.iani.cubesidestats.api.CubesideStatisticsAPI;
import de.iani.cubesideutils.bukkit.commands.CommandRouter;
@ -12,6 +16,8 @@ import de.lunarakai.minecleaner.commands.InfoCommand;
import de.lunarakai.minecleaner.commands.ListCommand;
import de.lunarakai.minecleaner.commands.StatsCommand;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.logging.Level;
public final class MinecleanerPlugin extends JavaPlugin {
@ -26,6 +32,18 @@ public final class MinecleanerPlugin extends JavaPlugin {
@Override
public void onEnable() {
this.saveDefaultConfig();
TranslationRegistry registry = TranslationRegistry.create(Key.key("minecleaner:lang"));
ResourceBundle bundle_en_US = ResourceBundle.getBundle("lang.en_US", Locale.US, UTF8ResourceBundleControl.get());
registry.registerAll(Locale.US, bundle_en_US, true);
GlobalTranslator.translator().addSource(registry);
ResourceBundle bundle_de_DE = ResourceBundle.getBundle("lang.de_DE", Locale.GERMAN, UTF8ResourceBundleControl.get());
registry.registerAll(Locale.GERMAN, bundle_de_DE, true);
GlobalTranslator.translator().addSource(registry);
getServer().getScheduler().runTask(this, this::onLateEnable);
}
@ -42,6 +60,10 @@ public final class MinecleanerPlugin extends JavaPlugin {
this.getLogger().log(Level.WARNING, "Cubeside Statistics not found. No Statistics will be available");
}
arenaList = new ArenaList(this);
arenaList.load();

View file

@ -5,6 +5,8 @@ import java.util.Collection;
import java.util.List;
import java.util.regex.Pattern;
import javax.annotation.Nullable;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Location;
import org.bukkit.block.BlockFace;
import org.bukkit.command.Command;
@ -22,6 +24,8 @@ import de.lunarakai.minecleaner.MinecleanerArena;
import de.lunarakai.minecleaner.MinecleanerPlugin;
import net.md_5.bungee.api.ChatColor;
import static de.lunarakai.minecleaner.utils.MinecleanerComponentUtils.createLangComponent;
public class CreateCommand extends SubCommand {
private static final Pattern VALID_ARENA_NAME = Pattern.compile("^[a-z0-9_]+$");
@ -55,11 +59,11 @@ public class CreateCommand extends SubCommand {
}
String name = args.getNext().toLowerCase().trim();
if(!VALID_ARENA_NAME.matcher(name).matches()) {
sender.sendMessage(ChatColor.DARK_RED + "Ungültiger Arenaname. Erlaubt sind Buchstaben, Zahlen und der Unterstrich");
sender.sendMessage(createLangComponent("arena.name.invalid", NamedTextColor.DARK_RED));
return true;
}
if(plugin.getArenaList().getArena(name) != null) {
sender.sendMessage(ChatColor.DARK_RED + "Eine Arena mit diesem Namen existiert bereits");
sender.sendMessage(createLangComponent( "arena.name.exists", NamedTextColor.DARK_RED));
return true;
}
boolean noblocks = false;
@ -73,13 +77,13 @@ public class CreateCommand extends SubCommand {
try {
widthindex = Integer.parseInt(arg);
} catch(NumberFormatException e) {
sender.sendMessage(ChatColor.DARK_RED + "Kein Valider Arena WidthIndex!");
sender.sendMessage(ChatColor.DARK_RED + "0 (oder weglassen) = 9*9, 1 = 12*12, 2 = 12*18, 3 = 12*33");
sender.sendMessage(createLangComponent("arena.widthindex.invalid", NamedTextColor.DARK_RED));
sender.sendMessage(createLangComponent("arena.widthindex.validOptions", NamedTextColor.DARK_RED));
return true;
}
if(widthindex > 3) {
sender.sendMessage(ChatColor.DARK_RED + "Arena WidthIndex darf nicht größer als 3 sein");
sender.sendMessage(ChatColor.DARK_RED + "0 (oder weglassen) = 9*9, 1 = 12*12, 2 = 12*18, 3 = 12*33");
sender.sendMessage(createLangComponent( "arena.widthindex.toolarge", NamedTextColor.DARK_RED));
sender.sendMessage(createLangComponent("arena.widthindex.validOptions", NamedTextColor.DARK_RED));
return true;
}
} else {
@ -94,12 +98,14 @@ public class CreateCommand extends SubCommand {
@Nullable
RayTraceResult target = player.rayTraceBlocks(6);
if(target == null || target.getHitBlock() == null) {
sender.sendMessage(ChatColor.DARK_RED + "Bitte gucke den Block an, der im Zentrum des " + plugin.getDisplayedPluginName() + "-Spielfelds sein soll.");
//sender.sendMessage(ChatColor.DARK_RED + "Bitte gucke den Block an, der im Zentrum des " + plugin.getDisplayedPluginName() + "-Spielfelds sein soll.");
sender.sendMessage(createLangComponent( "arena.create.lookAtCenter", plugin.getDisplayedPluginName(), NamedTextColor.DARK_RED));
return true;
}
BlockFace face = target.getHitBlockFace();
if(face != BlockFace.NORTH && face != BlockFace.WEST && face != BlockFace.EAST && face != BlockFace.SOUTH) {
sender.sendMessage(ChatColor.DARK_RED + "Bitte gucke die Seite des Blockes an, wo das " + plugin.getDisplayedPluginName() + "-Spielfeld erstellt werden soll.");
//sender.sendMessage(ChatColor.DARK_RED + "Bitte gucke die Seite des Blockes an, wo das " + plugin.getDisplayedPluginName() + "-Spielfeld erstellt werden soll.");
sender.sendMessage(createLangComponent("arena.create.lookAtSide", plugin.getDisplayedPluginName(), NamedTextColor.DARK_RED));
return true;
}
location = target.getHitBlock().getLocation();
@ -107,7 +113,7 @@ public class CreateCommand extends SubCommand {
MinecleanerArena newArena = new MinecleanerArena(plugin, name, location, widthindex, orientation);
if(plugin.getArenaList().collidesWithArena(newArena)) {
sender.sendMessage(ChatColor.DARK_RED + "An dieser Stelle befindet sich bereits eine Arena.");
sender.sendMessage(createLangComponent("arena.create.otherArena", NamedTextColor.DARK_RED));
return true;
}
newArena.generateBlockDisplays();
@ -115,7 +121,7 @@ public class CreateCommand extends SubCommand {
newArena.generateBackgroundBlocks();
}
plugin.getArenaList().addArena(newArena);
sender.sendMessage(ChatColor.GREEN + "Die Arena wurde erfolgreich angelegt.");
sender.sendMessage(createLangComponent("arena.create.success", NamedTextColor.GREEN));
return true;
}
@ -151,5 +157,4 @@ public class CreateCommand extends SubCommand {
}
return List.of();
}
}

View file

@ -0,0 +1,23 @@
package de.lunarakai.minecleaner.utils;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.format.NamedTextColor;
public class MinecleanerComponentUtils {
public static TextComponent createLangComponent(String langKey, NamedTextColor namedColor) {
return Component.text()
.color(namedColor)
.append(Component.translatable(langKey))
.build();
}
public static TextComponent createLangComponent(String langKey, String arg0, NamedTextColor namedColor) {
return Component.text()
.color(namedColor)
.append(Component.translatable(langKey, Component.text(arg0)))
.build();
}
}