started work on translatable Strings (CreateCommand)
This commit is contained in:
parent
e2c84ec436
commit
94d796e09b
6 changed files with 80 additions and 12 deletions
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
9
src/main/resources/lang/de_DE.properties
Normal file
9
src/main/resources/lang/de_DE.properties
Normal 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.
|
||||||
9
src/main/resources/lang/en_US.properties
Normal file
9
src/main/resources/lang/en_US.properties
Normal 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.
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue