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; package de.lunarakai.minecleaner;
import de.lunarakai.minecleaner.commands.SettingsCommand; 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 org.bukkit.plugin.java.JavaPlugin;
import de.iani.cubesidestats.api.CubesideStatisticsAPI; import de.iani.cubesidestats.api.CubesideStatisticsAPI;
import de.iani.cubesideutils.bukkit.commands.CommandRouter; 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.ListCommand;
import de.lunarakai.minecleaner.commands.StatsCommand; import de.lunarakai.minecleaner.commands.StatsCommand;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.logging.Level; import java.util.logging.Level;
public final class MinecleanerPlugin extends JavaPlugin { public final class MinecleanerPlugin extends JavaPlugin {
@ -26,6 +32,18 @@ public final class MinecleanerPlugin extends JavaPlugin {
@Override @Override
public void onEnable() { public void onEnable() {
this.saveDefaultConfig(); 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); 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"); this.getLogger().log(Level.WARNING, "Cubeside Statistics not found. No Statistics will be available");
} }
arenaList = new ArenaList(this); arenaList = new ArenaList(this);
arenaList.load(); arenaList.load();

View file

@ -5,6 +5,8 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@ -22,6 +24,8 @@ import de.lunarakai.minecleaner.MinecleanerArena;
import de.lunarakai.minecleaner.MinecleanerPlugin; import de.lunarakai.minecleaner.MinecleanerPlugin;
import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.ChatColor;
import static de.lunarakai.minecleaner.utils.MinecleanerComponentUtils.createLangComponent;
public class CreateCommand extends SubCommand { public class CreateCommand extends SubCommand {
private static final Pattern VALID_ARENA_NAME = Pattern.compile("^[a-z0-9_]+$"); 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(); String name = args.getNext().toLowerCase().trim();
if(!VALID_ARENA_NAME.matcher(name).matches()) { 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; return true;
} }
if(plugin.getArenaList().getArena(name) != null) { 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; return true;
} }
boolean noblocks = false; boolean noblocks = false;
@ -73,13 +77,13 @@ public class CreateCommand extends SubCommand {
try { try {
widthindex = Integer.parseInt(arg); widthindex = Integer.parseInt(arg);
} catch(NumberFormatException e) { } catch(NumberFormatException e) {
sender.sendMessage(ChatColor.DARK_RED + "Kein Valider Arena WidthIndex!"); sender.sendMessage(createLangComponent("arena.widthindex.invalid", NamedTextColor.DARK_RED));
sender.sendMessage(ChatColor.DARK_RED + "0 (oder weglassen) = 9*9, 1 = 12*12, 2 = 12*18, 3 = 12*33"); sender.sendMessage(createLangComponent("arena.widthindex.validOptions", NamedTextColor.DARK_RED));
return true; return true;
} }
if(widthindex > 3) { if(widthindex > 3) {
sender.sendMessage(ChatColor.DARK_RED + "Arena WidthIndex darf nicht größer als 3 sein"); sender.sendMessage(createLangComponent( "arena.widthindex.toolarge", NamedTextColor.DARK_RED));
sender.sendMessage(ChatColor.DARK_RED + "0 (oder weglassen) = 9*9, 1 = 12*12, 2 = 12*18, 3 = 12*33"); sender.sendMessage(createLangComponent("arena.widthindex.validOptions", NamedTextColor.DARK_RED));
return true; return true;
} }
} else { } else {
@ -94,12 +98,14 @@ public class CreateCommand extends SubCommand {
@Nullable @Nullable
RayTraceResult target = player.rayTraceBlocks(6); RayTraceResult target = player.rayTraceBlocks(6);
if(target == null || target.getHitBlock() == null) { 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; return true;
} }
BlockFace face = target.getHitBlockFace(); BlockFace face = target.getHitBlockFace();
if(face != BlockFace.NORTH && face != BlockFace.WEST && face != BlockFace.EAST && face != BlockFace.SOUTH) { 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; return true;
} }
location = target.getHitBlock().getLocation(); location = target.getHitBlock().getLocation();
@ -107,7 +113,7 @@ public class CreateCommand extends SubCommand {
MinecleanerArena newArena = new MinecleanerArena(plugin, name, location, widthindex, orientation); MinecleanerArena newArena = new MinecleanerArena(plugin, name, location, widthindex, orientation);
if(plugin.getArenaList().collidesWithArena(newArena)) { 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; return true;
} }
newArena.generateBlockDisplays(); newArena.generateBlockDisplays();
@ -115,7 +121,7 @@ public class CreateCommand extends SubCommand {
newArena.generateBackgroundBlocks(); newArena.generateBackgroundBlocks();
} }
plugin.getArenaList().addArena(newArena); plugin.getArenaList().addArena(newArena);
sender.sendMessage(ChatColor.GREEN + "Die Arena wurde erfolgreich angelegt."); sender.sendMessage(createLangComponent("arena.create.success", NamedTextColor.GREEN));
return true; return true;
} }
@ -151,5 +157,4 @@ public class CreateCommand extends SubCommand {
} }
return List.of(); 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();
}
}

View file

@ -0,0 +1,9 @@
arena.name.invalid=Ungueltiger Arenaname. Erlaubt sind Buchstaben, Zahlen und der Unterstrich
arena.name.exists=Eine Arena mit diesem Namen existiert bereits
arena.widthindex.invalid=Kein Valider Arena WidthIndex!
arena.widthindex.validOptions=0 (oder weglassen) = 9*9, 1 = 12*12, 2 = 12*18, 3 = 12*33
arena.widthindex.toolarge=Arena WidthIndex darf nicht groesser als 3 sein
arena.create.lookAtCenter=Bitte gucke den Block an, der im Zentrum des {0}-Spielfelds sein soll.
arena.create.lookAtSide=Bitte gucke die Seite des Blockes an, wo das {0}-Spielfeld erstellt werden soll.
arena.create.otherArena=An dieser Stelle befindet sich bereits eine Arena.
arena.create.success=Die Arena wurde erfolgreich angelegt.

View file

@ -0,0 +1,9 @@
arena.name.invalid=Invalid arena name. Allowed are letters, numbers and the underscore
arena.name.exists=An arena with this name already exists
arena.widthindex.invalid=Not a valid Arena WidthIndex
arena.widthindex.validOptions=0 (or leave empty) = 9*9, 1 = 12*12, 2 = 12*18, 3 = 12*33
arena.widthindex.toolarge=Arena WidthIndex must not be greater than 3
arena.create.lookAtCenter=Please look at the block that should be in the center of the {0} field.
arena.create.lookAtSide=Please look at the side of the block where the {0} field is to be created.
arena.create.otherArena=There is already an arena at this location.
arena.create.success=The arena has been created successfully.

View file

@ -1,5 +1,5 @@
name: Minecleaner name: Minecleaner
version: '${project.version}-${git.commit.id.abbrev}' version: '${project.version}-dev-${git.commit.id.abbrev}'
author: LunarAkai author: LunarAkai
website: https://github.com/LunarAkai/Minecleaner website: https://github.com/LunarAkai/Minecleaner
main: de.lunarakai.minecleaner.MinecleanerPlugin main: de.lunarakai.minecleaner.MinecleanerPlugin