Working on fixing plot setup

This commit is contained in:
boy0001 2015-04-21 22:48:18 +10:00
parent 5c58f14d1a
commit eb7c6df42a
11 changed files with 1074 additions and 31 deletions

View File

@ -564,19 +564,22 @@ public class PlotSquared {
}
// Copy files
copyFile("town.template");
copyFile("skyblock.template");
copyFile("town.template", "templates");
copyFile("skyblock.template", "templates");
copyFile("german.yml", "translations");
copyFile("s_chinese_unescaped.yml", "translations");
copyFile("s_chinese.yml", "translations");
showDebug();
}
public void copyFile(String file) {
public void copyFile(String file, String folder) {
try {
byte[] buffer = new byte[2048];
File output = PlotSquared.IMP.getDirectory();
if (!output.exists()) {
output.mkdirs();
}
File newFile = new File((output + File.separator + "templates" + File.separator + file));
File newFile = new File((output + File.separator + folder + File.separator + file));
if (newFile.exists()) {
return;
}

View File

@ -20,14 +20,19 @@
////////////////////////////////////////////////////////////////////////////////////////////////////
package com.intellectualcrafters.plot.commands;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map.Entry;
import org.apache.commons.lang.StringUtils;
import org.bukkit.generator.ChunkGenerator;
import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.config.ConfigurationNode;
import com.intellectualcrafters.plot.config.Settings;
import com.intellectualcrafters.plot.generator.HybridGen;
import com.intellectualcrafters.plot.object.PlotGenerator;
import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.object.SetupObject;
import com.intellectualcrafters.plot.util.BlockManager;
@ -38,6 +43,25 @@ public class Setup extends SubCommand {
public Setup() {
super("setup", "plots.admin.command.setup", "Plotworld setup command", "setup", "create", CommandCategory.ACTIONS, true);
}
public void displayGenerators(PlotPlayer plr) {
MainUtil.sendMessage(plr, "&6What generator do you want?");
for (Entry<String, ChunkGenerator> entry : SetupUtils.generators.entrySet()) {
// + prefix + StringUtils.join(SetupUtils.generators.keySet(), prefix).replaceAll("PlotSquared", "&2PlotSquared")
if (entry.getKey().equals("PlotSquared")) {
MainUtil.sendMessage(plr, "\n&8 - &2" + entry.getKey() + "(Hybrid Generator)");
}
else if (entry.getValue() instanceof HybridGen) {
MainUtil.sendMessage(plr, "\n&8 - &7" + entry.getKey() + "(Hybrid Generator)");
}
else if (entry.getValue() instanceof PlotGenerator) {
MainUtil.sendMessage(plr, "\n&8 - &7" + entry.getKey() + "(Plot Generator)");
}
else {
MainUtil.sendMessage(plr, "\n&8 - &7" + entry.getKey() + "(Unknown structure)");
}
}
}
@Override
public boolean execute(final PlotPlayer plr, final String... args) {
@ -47,9 +71,8 @@ public class Setup extends SubCommand {
final SetupObject object = new SetupObject();
SetupUtils.setupMap.put(name, object);
SetupUtils.manager.updateGenerators();
final String prefix = "\n&8 - &7";
sendMessage(plr, C.SETUP_INIT);
MainUtil.sendMessage(plr, "&6What generator do you want?" + prefix + StringUtils.join(SetupUtils.generators.keySet(), prefix).replaceAll("PlotSquared", "&2PlotSquared"));
displayGenerators(plr);
return false;
}
if (args.length == 1) {
@ -80,28 +103,49 @@ public class Setup extends SubCommand {
sendMessage(plr, C.SETUP_INIT);
return false;
}
object.generator = args[0];
object.setupGenerator = args[0];
object.current++;
final String partial = Settings.ENABLE_CLUSTERS ? "\n&8 - &7PARTIAL&8 - &7Vanilla with clusters of plots" : "";
MainUtil.sendMessage(plr, "&6What world type do you want?" + "\n&8 - &2DEFAULT&8 - &7Standard plot generation" + "\n&8 - &7AUGMENTED&8 - &7Plot generation with terrain" + partial);
break;
}
case 1: { // choose world type
List<String> types;
List<String> allTypes = Arrays.asList(new String[] { "default", "augmented", "partial" });
ArrayList<String> types = new ArrayList<>();
if (SetupUtils.generators.get(object.setupGenerator) instanceof PlotGenerator) {
types.add("default");
}
types.add("augmented");
if (Settings.ENABLE_CLUSTERS) {
types = Arrays.asList(new String[] { "default", "augmented", "partial" });
} else {
types = Arrays.asList(new String[] { "default", "augmented" });
types.add("partial");
}
if ((args.length != 1) || !types.contains(args[0].toLowerCase())) {
MainUtil.sendMessage(plr, "&cYou must choose a world type!" + "\n&8 - &2DEFAULT&8 - &7Standard plot generation" + "\n&8 - &7AUGMENTED&8 - &7Plot generation with terrain" + "\n&8 - &7PARTIAL&8 - &7Vanilla with clusters of plots");
return false;
}
object.type = types.indexOf(args[0].toLowerCase());
object.type = allTypes.indexOf(args[0].toLowerCase());
if (object.type == 0) {
object.current++;
if (object.step == null) {
object.step = SetupUtils.generators.get(object.generator).getNewPlotWorld(null).getSettingNodes();
ChunkGenerator gen = SetupUtils.generators.get(object.setupGenerator);
if (gen instanceof PlotGenerator) {
object.plotManager = object.setupGenerator;
object.step = ((PlotGenerator) SetupUtils.generators.get(object.setupGenerator)).getNewPlotWorld(null).getSettingNodes();
((PlotGenerator) gen).processSetup(object, plr);
}
else {
MainUtil.sendMessage(plr, "&c[WARNING] The specified generator does not identify as PlotGenerator");
MainUtil.sendMessage(plr, "&7Searching for a configuration script...");
boolean script = false;
// TODO allow external configuration scripts
MainUtil.sendMessage(plr, "&cNo script has been found:");
MainUtil.sendMessage(plr, "&7 - You may need to manually configure the other plugin");
object.step = ((PlotGenerator) SetupUtils.generators.get("PlotSquared")).getNewPlotWorld(null).getSettingNodes();
}
}
final ConfigurationNode step = object.step[object.setup_index];
sendMessage(plr, C.SETUP_STEP, object.setup_index + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + "");
@ -166,7 +210,13 @@ public class Setup extends SubCommand {
}
object.world = args[0];
SetupUtils.setupMap.remove(plr.getName());
final String world = SetupUtils.manager.setupWorld(object);
final String world;
if (object.manager == null) {
world = SetupUtils.manager.setupWorld(object);
}
else {
}
try {
plr.teleport(BlockManager.manager.getSpawn(world));
} catch (final Exception e) {

View File

@ -187,7 +187,7 @@ public enum C {
/*
* Core Stuff
*/
PREFIX("$3[$1P\u00B2$3] "),
PREFIX("$3[$1P2$3] "),
ENABLED("$1PlotSquared is now enabled"),
EXAMPLE_MESSAGE("$2This is an example message &k!!!"),
/*

View File

@ -177,5 +177,6 @@ public abstract class PlotGenerator extends ChunkGenerator {
public abstract PlotWorld getNewPlotWorld(final String world);
public abstract PlotManager getPlotManager();
public void processSetup(SetupObject object, PlotPlayer player) {};
}

View File

@ -1,13 +1,52 @@
package com.intellectualcrafters.plot.object;
import com.intellectualcrafters.plot.config.ConfigurationNode;
import com.intellectualcrafters.plot.util.SetupUtils;
public class SetupObject {
/**
* Specify a SetupUtils object here to override the existing
*/
public SetupUtils setupManager;
/**
* The current state
*/
public int current = 0;
/**
* The index in generator specific settings
*/
public int setup_index = 0;
/**
* The name of the world
*/
public String world = null;
public String generator = null;
public int type = 0;
public int terrain = 0;
/**
* The name of the plot manager
*/
public String plotManager = null;
/**
* The name of the generator to use for world creation
*/
public String setupGenerator = null;
/**
* The management type
*/
public int type;
/**
* The terrain type
*/
public int terrain;
/**
* Generator specific configuration steps
*/
public ConfigurationNode[] step = null;
}

View File

@ -0,0 +1,198 @@
package com.intellectualcrafters.plot.util;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map.Entry;
import com.intellectualcrafters.plot.PlotSquared;
import com.intellectualcrafters.plot.object.PlotBlock;
import com.intellectualcrafters.plot.util.TaskManager;
public class SetBlockQueue {
private volatile static HashMap<ChunkWrapper, PlotBlock[][]> blocks;
private volatile static int allocate = 50;
private volatile static boolean running = false;
private volatile static boolean locked = false;
private volatile static HashSet<Runnable> runnables;
public synchronized static void allocate(int t) {
allocate = t;
}
public synchronized static void addNotify(Runnable whenDone) {
if (runnables == null) {
TaskManager.runTask(whenDone);
}
else {
runnables.add(whenDone);
}
}
public synchronized static void init() {
if (blocks == null) {
blocks = new HashMap<>();
runnables = new HashSet<>();
}
if (!running) {
TaskManager.index.increment();
final int current = TaskManager.index.intValue();
int task = TaskManager.runTaskRepeat(new Runnable() {
@Override
public void run() {
if (locked) {
return;
}
if (blocks.size() == 0) {
PlotSquared.TASK.cancelTask(TaskManager.tasks.get(current));
for (Runnable runnable : runnables) {
TaskManager.runTask(runnable);
}
runnables = null;
blocks = null;
running = false;
return;
}
long start = System.currentTimeMillis() + allocate;
Iterator<Entry<ChunkWrapper, PlotBlock[][]>> i = blocks.entrySet().iterator();
while (System.currentTimeMillis() < start && i.hasNext()) {
if (locked) {
return;
}
Entry<ChunkWrapper, PlotBlock[][]> n = i.next();
i.remove();
ChunkWrapper chunk = n.getKey();
int X = chunk.x << 4;
int Z = chunk.z << 4;
PlotBlock[][] blocks = n.getValue();
String world = chunk.world;
for (int j = 0; j < blocks.length; j++) {
PlotBlock[] blocksj = blocks[j];
if (blocksj != null) {
for (int k = 0; k < blocksj.length; k++) {
PlotBlock block = blocksj[k];
if (block != null) {
final int y = (j << 4) + (k >> 8);
final int a = (k - ((y & 0xF) << 8));
final int z = (a >> 4);
final int x = a - (z << 4);
BlockManager.manager.functionSetBlock(world, X + x, y, Z + z, block.id, block.data);
}
}
}
}
}
}
}, 5);
TaskManager.tasks.put(current, task);
running = true;
}
}
public static void setBlock(final String world, int x, final int y, int z, final PlotBlock block) {
locked = true;
if (!running) {
init();
}
int X = x >> 4;
int Z = z >> 4;
x -= X << 4;
z -= Z << 4;
ChunkWrapper wrap = new ChunkWrapper(world, X, Z);
PlotBlock[][] result = blocks.get(wrap);
if (!blocks.containsKey(wrap)) {
result = new PlotBlock[16][];
blocks.put(wrap, result);
}
if (result[y >> 4] == null) {
result[y >> 4] = new PlotBlock[4096];
}
result[y >> 4][((y & 0xF) << 8) | (z << 4) | x] = block;
locked = false;
}
private static int lastInt = 0;
private static PlotBlock lastBlock = new PlotBlock((short) 0, (byte) 0);
public static void setBlock(final String world, int x, final int y, int z, final int id) {
locked = true;
if (!running) {
init();
}
int X = x >> 4;
int Z = z >> 4;
x -= X << 4;
z -= Z << 4;
ChunkWrapper wrap = new ChunkWrapper(world, X, Z);
PlotBlock[][] result = blocks.get(wrap);
if (!blocks.containsKey(wrap)) {
result = new PlotBlock[16][];
blocks.put(wrap, result);
}
if (result[y >> 4] == null) {
result[y >> 4] = new PlotBlock[4096];
}
if (id == lastInt) {
result[y >> 4][((y & 0xF) << 8) | (z << 4) | x] = lastBlock;
}
else {
lastInt = id;
lastBlock = new PlotBlock((short) id, (byte) 0);
}
result[y >> 4][((y & 0xF) << 8) | (z << 4) | x] = lastBlock;
locked = false;
}
public static class ChunkWrapper {
final int x;
final int z;
final String world;
public ChunkWrapper(String world, int x, int z) {
this.world = world;
this.x = x;
this.z = z;
}
@Override
public int hashCode() {
int result;
if (this.x >= 0) {
if (this.z >= 0) {
result = (this.x * this.x) + (3 * this.x) + (2 * this.x * this.z) + this.z + (this.z * this.z);
} else {
final int y1 = -this.z;
result = (this.x * this.x) + (3 * this.x) + (2 * this.x * y1) + y1 + (y1 * y1) + 1;
}
} else {
final int x1 = -this.x;
if (this.z >= 0) {
result = -((x1 * x1) + (3 * x1) + (2 * x1 * this.z) + this.z + (this.z * this.z));
} else {
final int y1 = -this.z;
result = -((x1 * x1) + (3 * x1) + (2 * x1 * y1) + y1 + (y1 * y1) + 1);
}
}
result = result * 31 + world.hashCode();
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final ChunkWrapper other = (ChunkWrapper) obj;
return ((this.x == other.x) && (this.z == other.z) && (this.world.equals(other.world)));
}
}
}

View File

@ -3,6 +3,8 @@ package com.intellectualcrafters.plot.util;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.generator.ChunkGenerator;
import com.intellectualcrafters.plot.object.PlotGenerator;
import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.object.SetupObject;
@ -10,9 +12,9 @@ import com.intellectualcrafters.plot.object.SetupObject;
public abstract class SetupUtils {
public static SetupUtils manager;
public final static Map<String, SetupObject> setupMap = new HashMap<>();
public static HashMap<String, PlotGenerator> generators = new HashMap<>();
public static HashMap<String, ChunkGenerator> generators = new HashMap<>();
public abstract void updateGenerators();

View File

@ -31,12 +31,12 @@ public class BukkitSetupUtils extends SetupUtils {
if (generator != null) {
PlotSquared.removePlotWorld(testWorld);
final String name = plugin.getDescription().getName();
if (generator instanceof PlotGenerator) {
final PlotGenerator pgen = (PlotGenerator) generator;
// if (generator instanceof PlotGenerator) {
// final PlotGenerator pgen = (PlotGenerator) generator;
// if (pgen.getPlotManager() instanceof SquarePlotManager) {
SetupUtils.generators.put(name, pgen);
SetupUtils.generators.put(name, generator);
// }
}
// }
}
}
}
@ -52,22 +52,25 @@ public class BukkitSetupUtils extends SetupUtils {
if (object.type != 0) {
PlotSquared.config.set("worlds." + world + "." + "generator.type", object.type);
PlotSquared.config.set("worlds." + world + "." + "generator.terrain", object.terrain);
PlotSquared.config.set("worlds." + world + "." + "generator.plugin", object.generator);
PlotSquared.config.set("worlds." + world + "." + "generator.plugin", object.plotManager);
if (object.setupGenerator != null && !object.setupGenerator.equals(object.plotManager)) {
PlotSquared.config.set("worlds." + world + "." + "generator.init", object.setupGenerator);
}
}
try {
PlotSquared.config.save(PlotSquared.configFile);
} catch (final IOException e) {
e.printStackTrace();
}
if (object.type == 0) {
if (object.setupGenerator != null) {
if ((Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null) && Bukkit.getPluginManager().getPlugin("Multiverse-Core").isEnabled()) {
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv create " + world + " normal -g " + object.generator);
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv create " + world + " normal -g " + object.setupGenerator);
} else {
if ((Bukkit.getPluginManager().getPlugin("MultiWorld") != null) && Bukkit.getPluginManager().getPlugin("MultiWorld").isEnabled()) {
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw create " + world + " plugin:" + object.generator);
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw create " + world + " plugin:" + object.setupGenerator);
} else {
final WorldCreator wc = new WorldCreator(object.world);
wc.generator(object.generator);
wc.generator(object.setupGenerator);
wc.environment(Environment.NORMAL);
Bukkit.createWorld(wc);
}
@ -99,7 +102,7 @@ public class BukkitSetupUtils extends SetupUtils {
if (!(generator instanceof PlotGenerator)) {
return null;
}
for (Entry<String, PlotGenerator> entry : generators.entrySet()) {
for (Entry<String, ChunkGenerator> entry : generators.entrySet()) {
if (entry.getValue().getClass().getName().equals(generator.getClass().getName())) {
return entry.getKey();
}

View File

@ -0,0 +1,233 @@
### TEMPLATE ###
# Translated by: Krauti2 / EvilOlaf
#
### TEMPLATE ###
FAILED_CONFIRM: "$2Es gibt keine zur Bestätigung ausstehenden Befehle!"
REQUIRES_CONFIRM: "$2Bist du sicher, dass du diesen Befehl ausführen willst: $1%s$2?n$2Die Änderung ist unwiderruflich! Wenn du sicher bist: $1/plot confirm"
MOVE_SUCCESS: "$4Plot erfolgreich verschoben."
REQUIRES_UNOWNED: "$2Der angegebene Ort ist bereits belegt."
COMPASS_TARGET: "$4Plot erfolgreich mit dem Kompass anvisiert."
CLUSTER_AVAILABLE_ARGS: "$1Die folgenden Parameter sind verfügbar: $4list$2, $4create$2, $4delete$2, $4resize$2, $4invite$2, $4kick$2, $4leave$2, $4helpers$2, $4info$2, $4tp$2, $4sethome"
CLUSTER_LIST_HEADING: "$2Es gibt $1%s$2 Cluster in dieser Welt."
CLUSTER_LIST_ELEMENT: "$2 - $1%sn"
CLUSTER_INTERSECTION: "$2Der vorgeschlagene Bereich überlappt mit $1%s$2 existierendem/n Cluster/n"
CLUSTER_ADDED: "$4Cluster erfolgreich erstellt."
CLUSTER_DELETED: "$4Cluster erfolgreich gelöscht."
CLUSTER_RESIZED: "$4Größe des Clusters wurde erfolgreich geändert."
CLUSTER_ADDED_USER: "$4Spieler erfolgreich zum Cluster hinzugefügt."
CANNOT_KICK_PLAYER: "$2Du kannst diesen Spieler nicht kicken."
CLUSTER_INVITED: "$1Du wurdest in folgenden Cluster eingeladen: $2%s"
CLUSTER_REMOVED: "$1Du wurdest aus folgendem Cluster enfernt: $2%s"
CLUSTER_KICKED_USER: "$4Spieler erfolgreich gekickt."
INVALID_CLUSTER: "$1Clustername ungültig: $2%s"
CLUSTER_NOT_ADDED: "$2Dieser Spieler war nicht zum Cluster hinzugefügt."
CLUSTER_CANNOT_LEAVE: "$1Du musst deinen Besitz löschen oder transferieren bevor du gehen kannst."
CLUSTER_ADDED_HELPER: "$4Helfer erfolgreich hinzugefügt."
CLUSTER_REMOVED_HELPER: "$4Helfer erfolgreich vom Cluster entfernt."
CLUSTER_REGENERATED: "$4Clusterregeneration erfolgreich gestartet"
CLUSTER_TELEPORTING: "$4Teleportiere..."
CLUSTER_INFO: "$1Aktueller Cluster: $2%id%n$1Name: $2%name%n$1Besitzer: $2%owner%n$1Größe: $2%size%n$1Rechte: $2%rights%"
CLUSTER_CURRENT_PLOTID: "$1Aktueller Plot: $2%s"
BORDER: "$2Du befindest dich ausserhalb der aktuellen Weltengrenze"
UNCLAIM_SUCCESS: "$4Dieser Plot gehört dir jetzt nicht mehr."
REQUIRE_SELECTION_IN_MASK: "$2%s deiner Selektion befindet sich nicht innerhalb deines Plots. Du kannst Änderungen nur innerhalb deines Plots vornehmen."
RECORD_PLAY: "$2%player $2startete Spielaufzeichnung $1%name"
NOTIFY_ENTER: "$2%player $2betritt deinen Plot ($1%plot$2)"
NOTIFY_LEAVE: "$2%player $2verlies deinen Plot ($1%plot$2)"
SWAP_SYNTAX: "$2/plots swap <plot id>"
SWAP_SUCCESS: "$4Plots erfolgreich getauscht"
COMMENT_SYNTAX: "$2Syntax: /plots comment <everyone|trusted|helper|owner|admin> <comment>"
INVALID_INBOX: "$2Dieses Postfach ist ungültig.n$1Akzeptierte Werte: %s"
COMMENT_REMOVED: "$4Erfolgreich gelöscht: %s."
COMMENT_ADDED: "$4Ein Kommentar wurde hinterlassen."
NOT_CONSOLE: "$2Aus Sicherheitsgründen kann dieser Befehl nur von der Konsole ausgeführt werden."
IS_CONSOLE: "$2Dieser Befehl kann nur von einem Spieler ausgeführt werden."
CLIPBOARD_SET: "$2Der aktuelle Plot wird in die Zwischenablage kopiert. Benutze $1/plot paste$2 um ihn einzufügen."
PASTED: "$4Die Plotauswahl wurde erfolgreich eingefügt. Die Zwischenablage wurde geleert."
PASTE_FAILED: "$2Einfügen fehlgeschlagen: $2%s"
NO_CLIPBOARD: "$2Deine Zwischenablage ist leer."
CLIPBOARD_INFO: "$2Aktuelle Auswahl - Plot ID: $1%id$2, Breite: $1%width$2, Anzahl Blöcke: $1%total$2"
RATING_NOT_VALID: "$2Wähle eine Zahl zwischen 1 und 10"
RATING_ALREADY_EXISTS: "$2Du hast diesen Plot bereits bewertet: $2%s"
RATING_APPLIED: "$4Du hast diesen Plot erfolgreich bewertet: $2%s"
RATING_NOT_YOUR_OWN: "$2Du kannst deinen eigenen Plot nicht selbst bewerten."
RATING_NOT_OWNED: "$2Plots ohne Besitzer können nicht bewertet werden."
ECON_DISABLED: "$2Ökonomie ist nicht aktiviert."
CANNOT_AFFORD_PLOT: "$2Du kannst dir diesen Plot nicht leisten. Er kostet $1%s"
NOT_FOR_SALE: "$2Dieser Plot steht nicht zum Verkauf."
CANNOT_BUY_OWN: "$2Du kannst deinen eigenen Plot nicht kaufen."
PLOT_SOLD: "$4Dein Plot $1%s$4, wurde an $1%s$4 für $1$%s$4 verkauft."
CANNOT_AFFORD_MERGE: "$2Du kannst dir das Zusammenfügen der Plots nicht leisten. Es kostet $1%s"
ADDED_BALANCE: "$1%s $2wurden deinem Guthaben hinzugefügt."
REMOVED_BALANCE: "$1%s $2wurden von deinem Guthaben abgezogen."
SETUP_INIT: "$1Verwendung: $2/plot setup <value>"
SETUP_STEP: "$3[$1Schritt %s$3] $1%s $2- $1Erwarte: $2%s $1Standard: $2%s"
SETUP_INVALID_ARG: "$2%s ist kein gültiger Wer für Schritt %s. Um Setup abzubrechen verwende: $1/plot setup cancel"
SETUP_VALID_ARG: "$2Wert $1%s $2gesetzt auf %s"
SETUP_FINISHED: "$3Falls du MULTIVERSE oder MULTIWORLD verwendest sollte die Welt generiert worden sein. Andernfalls musst du die Welt manuell über bukkit.yml hinzufügen."
SETUP_WORLD_TAKEN: "$2%s ist bereits eine bekannte Plotwelt"
SETUP_MISSING_WORLD: "$2Du musst einen Namen für die Welt vergeben ($1/plot setup &l<world>$1 <generator>$2)n$1Zusätzliche Befehle:n$2 - $1/plot setup <value>n$2 - $1/plot setup backn$2 - $1/plot setup cancel"
SETUP_MISSING_GENERATOR: "$2Du musst einen Generator angeben ($1/plot setup <world> &l<generator>&r$2)n$1Zusätzliche Befehle:n$2 - $1/plot setup <value>n$2 - $1/plot setup backn$2 - $1/plot setup cancel"
SETUP_INVALID_GENERATOR: "$2Ungültiger Generarator. Mögliche Optionen: %s"
SCHEMATIC_MISSING_ARG: "$2Du musst einen Wert angeben. Gültige Werte: $1test <name>$2 , $1save$2 , $1paste $2, $1exportall"
SCHEMATIC_INVALID: "$2Diese Schematic ist ungültig: $2%s"
SCHEMATIC_VALID: "$2Diese Schematic ist gültig."
SCHEMATIC_PASTE_FAILED: "$2Einfügen der Schematic fehlgeschlagen"
SCHEMATIC_PASTE_SUCCESS: "$4Einfügen der Schematic erfolgreich."
TITLE_ENTERED_PLOT: "Du betrittst Plot %world%;%x%;%z%"
TITLE_ENTERED_PLOT_COLOR: "GOLD"
TITLE_ENTERED_PLOT_SUB: "Besitzer: %s"
TITLE_ENTERED_PLOT_SUB_COLOR: "RED"
TITLE_LEFT_PLOT: "Du verlässt Plot %s"
TITLE_LEFT_PLOT_COLOR: "GOLD"
TITLE_LEFT_PLOT_SUB: "Besitzer: %s"
TITLE_LEFT_PLOT_SUB_COLOR: "RED"
PREFIX_GREETING: "$1%id%$2> "
PREFIX_FAREWELL: "$1%id%$2> "
PREFIX: "$3[$1P²$3] "
ENABLED: "$1PlotSquared wurde aktiviert"
EXAMPLE_MESSAGE: "$2Das ist eine Beispielnachricht &k!!!"
RELOADED_CONFIGS: "$1Übersetzungen und Welteneinstellungen wurden neu geladen"
RELOAD_FAILED: "$2Erneutes Laden der Konfiguration fehlgeschlagen"
BOSSBAR_CLEARING: "$2Leere Plot: $1%id%"
ALIAS_SET_TO: "$2Plot Alias geseztt auf $1%alias%"
MISSING_ALIAS: "$2Du musst ein Alias angeben"
ALIAS_TOO_LONG: "$2Der Alias darf nicht länger als 50 Zeichen sein"
ALIAS_IS_TAKEN: "$2Dieser Alias wird bereits verwendet"
MISSING_POSITION: "$2Du musst eine Position angeben. Mögliche Werte: $1none"
POSITION_SET: "$1Die Position wurde auf deinen aktuellen Standort gesetzt"
HOME_ARGUMENT: "$2Verwende /plot set home [none]"
INVALID_POSITION: "$2That is not a valid position value"
TIME_FORMAT: "$1%hours%, %min%, %sec%"
NO_SCHEMATIC_PERMISSION: "$2Du hast keine Berechtigung Schmatics zu verwenden: $1%s"
NO_PERMISSION: "$2Dir fehlt folgende Berechtigung: $1%s"
NO_PLOT_PERMS: "$2Diese Aktion kann nur der Besitzer des Plots"
CANT_CLAIM_MORE_PLOTS: "$2Du kannst keine weiteren Plots besitzen."
CANT_CLAIM_MORE_PLOTS_NUM: "$2Du kannst nicht mehr als $1%s $2Plots auf einmal einnehmen."
YOU_BE_DENIED: "$2Es ist dir nicht gestattet diesen Plot zu betreten."
NO_PERM_MERGE: "$2Du bist nicht Besitzer des Plots $1%plot%"
UNLINK_REQUIRED: "$2Die Plots müssen vorher getrennt (unlink) werden."
UNLINK_IMPOSSIBLE: "$2Die Trennung (unlink) funktioniert nur auf Megaplots."
UNLINK_SUCCESS: "$2Trennung erfolgreich."
NO_MERGE_TO_MEGA: "$2Füge einzelne Plots deinem Megaplot hinzu, nicht anders herum."
NOT_VALID_SUBCOMMAND: "$2Das ist kein gültiger Parameter."
DID_YOU_MEAN: "$2Meinst du: $1%s"
NAME_LITTLE: "$2%s Name ist zu kurz, $1%s$2<$1%s"
NO_COMMANDS: "$2Du hast für keinen Befehl eine Berechtigung."
SUBCOMMAND_SET_OPTIONS_HEADER: "$2Mögliche Werte: "
COMMAND_SYNTAX: "$1Verwendung: $2%s"
INVALID_PLAYER: "$2Spieler nicht gefunden: $1%s."
COMMAND_WENT_WRONG: "$2Beim ausführen des Befehls ging etwas schief..."
PURGE_SYNTAX: "Verwende /plot purge <x;z|player|unowned|unknown|all> <world>"
PURGE_SUCCESS: "$4%s Plots erfolgreich gelöscht."
TRIM_SYNTAX: "Verwende /plot trim <all|x;y> <world>"
TRIM_START: "Starte Weltenbeschneidung..."
TRIM_IN_PROGRESS: "Die Weltenbeschneidung ist bereits gestartet!"
NOT_VALID_HYBRID_PLOT_WORLD: "Hybrid Plot Manager wird für diese Aktion benötigt."
NO_FREE_PLOTS: "$2Es sind keine freien Plots verfügbar."
NOT_IN_PLOT: "$2Du befindest dich nicht auf einem Plot."
NOT_IN_CLUSTER: "$2Du musst dich innerhalb eines Plot Clusters befinden um das zu tun."
NOT_IN_PLOT_WORLD: "$2Du befindest dich nicht in einer Plotwelt."
NOT_VALID_WORLD: "$2Das ist keine gültige Welt (Groß- / Kleinschreibung beachten)"
NOT_VALID_PLOT_WORLD: "$2Das ist keine gültige Plotwelt (Groß- / Kleinschreibung beachten)"
NO_PLOTS: "$2Du hast keine Plots"
NOT_VALID_BLOCK_LIST_HEADER: "$2Das ist kein gültiger Block. Gültige Blöcke sind:\n"
BLOCK_LIST_ITEM: " $1%mat%$2,"
BLOCK_LIST_SEPARATER: "$1,$2 "
NEED_BIOME: "$2Du musst ein Biom angeben."
BIOME_SET_TO: "$2Plot biome gesetzt: $2"
TELEPORTED_TO_PLOT: "$1Du wurdest teleportiert."
TELEPORTED_TO_ROAD: "$2Du wurdest auf die Straße teleportiert."
TELEPORT_IN_SECONDS: "$1Teleportiere in %s Sekunden. Bewege dich nicht..."
TELEPORT_FAILED: "$2Teleportation wurde wegen einer Bewegen or Schaden abgebrochen."
SET_BLOCK_ACTION_FINISHED: "$1The last setblock action is now finished."
DEUBG_HEADER: "$1Debug Information\n"
DEBUG_SECTION: "$2>> $1&l%val%"
DEBUG_LINE: "$2>> $1%var%$2:$1 %val%\n"
NOT_VALID_DATA: "$2Das ist kein gültiger Datenwert."
NOT_VALID_BLOCK: "$2Das ist kein gültiger Block."
NOT_VALID_NUMBER: "$2Das ist keine gültige Zahl."
NOT_VALID_PLOT_ID: "$2Das ist keine gültige Plot-ID."
PLOT_ID_FORM: "$2Die Plot-ID muss wie folgt angegeben werden: $1X;Y $2z.B. $1-5;7"
NOT_YOUR_PLOT: "$2Das ist nicht dein Plot."
NO_SUCH_PLOT: "$2Ein solcher Plot existiert nicht."
PLAYER_HAS_NOT_BEEN_ON: "$2Dieser Spieler war nicht in der Plotwelt."
FOUND_NO_PLOTS: "$2Dein Suchmuster ergab keine Treffer."
CAMERA_STARTED: "$2Du verwendest den Kameramodus für Plot $1%s"
CAMERA_STOPPED: "$2Der Kameramodus wurde abeschaltet."
NEED_PLOT_NUMBER: "$2Du musst eine Plotnummer oder einen Alias angeben."
NEED_BLOCK: "$2Du musst einen Block angeben."
NEED_PLOT_ID: "$2Du musst eine Plot-ID angeben."
NEED_PLOT_WORLD: "$2Du musst eine Plotwelt angeben."
NEED_USER: "$2Du musst einen Spielernamen angeben."
PLOT_UNOWNED: "$2Für diese Aktion muss dieser Plot einen Besitzer aufweisen."
PLOT_INFO_UNCLAIMED: "$2Plot $1%s$2 hat bisher keinen Besitzer."
PLOT_INFO_HEADER: "$3====== $1INFO $3======"
PLOT_INFO: "$1ID: $2%id%$1n$1Alias: $2%alias%$1n$1Besitzer: $2%owner%$1n$1Biom: $2%biome%$1n$1Baurechte: $2%build%$1n$1Wertung: $2%rating%$1/$210$1n$1Helfer: $2%helpers%$1n$1Vertraut: $2%trusted%$1n$1Verboten: $2%denied%$1n$1Flags: $2%flags%"
PLOT_INFO_HELPERS: "$1Helfer:$2 %helpers%"
PLOT_INFO_TRUSTED: "$1Vertraute:$2 %trusted%"
PLOT_INFO_DENIED: "$1Verboten:$2 %denied%"
PLOT_INFO_FLAGS: "$1Flags:$2 %flags%"
PLOT_INFO_BIOME: "$1Biom:$2 %biome%"
PLOT_INFO_RATING: "$1Wertung:$2 %rating%"
PLOT_INFO_OWNER: "$1Besitzer:$2 %owner%"
PLOT_INFO_ID: "$1ID:$2 %id%"
PLOT_INFO_ALIAS: "$1Alias:$2 %alias%"
PLOT_INFO_SIZE: "$1Größe:$2 %size%"
PLOT_USER_LIST: " $1%user%$2,"
INFO_SYNTAX_CONSOLE: "$2/plot info <world> X;Y"
GENERATING_COMPONENT: "$1Die Generierung wurde gemäß deiner Einstellungen gestartet."
CLEARING_PLOT: "$2Plot wird asyncron geleert."
CLEARING_DONE: "$4Erfolgreich geleert. Dauerte %sms."
PLOT_NOT_CLAIMED: "$2Dieser Plot hat keinen Besitzer"
PLOT_IS_CLAIMED: "$2Dieser Plot hat bereits einen Besitzer."
CLAIMED: "$4Plot erfolgreich in Besitz genommen."
PLOT_LIST_HEADER_PAGED: "$2(Seite $1%von$2/$1%max$2) $1Liste Plots nach %word%"
PLOT_LIST_HEADER: "$1Liste aller %word% Plots"
PLOT_LIST_ITEM: "$2>> $1%id$2:$1%Welt $2- $1%owner"
PLOT_LIST_ITEM_ORDERED: "$2[$1%in$2] >> $1%id$2:$1%Welt $2- $1%owner"
PLOT_LIST_FOOTER: "$2>> $1%word% umfasst insgesamt $2%num% $1Plots %plot%."
LEFT_PLOT: "$2Du hast einen Plot verlassen."
NOT_USING_PLOTME: "$2Dieser Server verwendet das $1PlotSquared $2Plotmanagement System. Verwende stattdessen $1/plots"
WAIT_FOR_TIMER: "$2Ein zeitgeber wurde an den Plot oder an dich gebunden. Bitte warte bis die Zeit abgelaufen."
PLOT_CHAT_FORMAT: "$2[$1Plot Chat$2][$1%plot_id%$2] $1%sender%$2: $1%msg%"
DENIED_REMOVED: "$4Der Spieler darf diesen Plot wieder betreten."
DENIED_ADDED: "$4Der Spieler darf diesen Plot nicht mehr betreten."
DENIED_NEED_ARGUMENT: "$2Argumente fehlen. $1/plot denied add <name> $2oder $1/plot helpers remove <name>"
WAS_NOT_DENIED: "$2Der Spieler durfte diesen Plot bereits betreten."
NEED_ON_OFF: "$2Du musst einen Wert angeben. Mögliche Werte: $1on$2, $1off"
SETTING_UPDATED: "$4Einstellungen erfolgreich aktualisiert."
FLAG_KEY: "$2Schlüssel: %s"
FLAG_TYPE: "$2Typ: %s"
FLAG_DESC: "$2Beschreibung: %s"
NEED_KEY: "$2Mögliche Werte: $1%values%"
NOT_VALID_FLAG: "$2Ungültige Flag"
NOT_VALID_VALUE: "$2Wert der Flag muss alphanumerisch angegeben werden."
FLAG_NOT_IN_PLOT: "$2Diese Flag wurde in diesem Plot nicht gesetzt."
FLAG_NOT_REMOVED: "$2Die Flag konnte nicht entfernt werden."
FLAG_NOT_ADDED: "$2Flag konnte nicht gesetzt werden."
FLAG_REMOVED: "$4Flag erfolgreich entfernt."
FLAG_ADDED: "$4Successfully added flag"
HELPER_ADDED: "$4Helfer erfolgreich zu diesem Plot hinzugefügt."
HELPER_REMOVED: "$4Helfer erfolgreich von diesem Plot enfernt."
HELPER_NEED_ARGUMENT: "$2Argumente fehlen. $1/plot helpers add <name> $2oder $1/plot helpers remove <name>"
WAS_NOT_ADDED: "$2Dieser Spieler war bisher kein Helfer auf diesem Plot."
PLOT_REMOVED_HELPER: "$1Plot %s auf dem du Helfer warst wurde wegen Inaktivität des Besitzers gelöscht."
ALREADY_OWNER: "$2Dieser Spieler ist bereits Besitzer des Plots."
ALREADY_ADDED: "$2Dieser Spieler ist bereits in dieser Kategorie."
TRUSTED_ADDED: "$4Spieler erfolgreich in diesem Plot vertraut."
TRUSTED_REMOVED: "$1Diesem Spieler wird auf diesem Plot nicht mehr vertraut."
TRUSTED_NEED_ARGUMENT: "$2Argumente fehlen. $1/plot trusted add <name> $2oder $1/plot trusted remove <name>"
T_WAS_NOT_ADDED: "$2Diesem Spieler wurde bisher nicht vertraut."
SET_OWNER: "$4lotbesitzer erfolgreich gesetzt."
OWNER_SIGN_LINE_1: "$1ID: $1%id%"
OWNER_SIGN_LINE_2: "$1Besitzer:"
OWNER_SIGN_LINE_3: "$2%plr%"
OWNER_SIGN_LINE_4: "$3in Besitz"
HELP_HEADER: "$3====== $1Plot² Hilfe $3======"
HELP_CATEGORY: "$1Kategorie: $2%category%$2,$1 Seite: $2%currentt%$3/$2%max%$2,$1 Zeige: $2%dis%$3/$2%total%"
HELP_INFO: "$3====== $1Wähle eine Kategorie $3======"
HELP_INFO_ITEM: "$1/plots help %category% $3- $2%category_desc%"
HELP_ITEM: "$1%usage% [%alias%]n $3- $2%desc%n"
DIRECTION: "$1Aktuelle Himmelsrichtung: %dir%"
CUSTOM_STRING: "-"

View File

@ -0,0 +1,257 @@
### TEMPLATE ###
# Translated by: Liouftgoo/Mayomi9
# UTF-8 ESCAPE USING: http://www.rapidmonkey.com/unicodeconverter/
### TEMPLATE ###
camera_started: "$2\u4F60\u8FDB\u5165\u4E86\u5730\u76AE $1%s \u7684\u6444\u50CF\u673A\u6A21\u5F0F"
command_syntax: "$1\u7528\u6CD5: $2%s"
not_valid_flag: "$2\u8FD9\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u6807\u8BC6"
setup_world_taken: "$2%s \u5DF2\u7ECF\u662F\u5730\u76AE\u4E16\u754C\u4E86"
plot_list_item: "$2>> $1%id$2:$1%world $2- $1%owner"
schematic_invalid: "$2\u8FD9\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u5EFA\u7B51\u6587\u4EF6. \u539F\u56E0: $2%s"
not_valid_inbox_index: "$2\u9875\u6570 %s \u6CA1\u6709\u7559\u8A00"
setup_invalid_generator: "$2\u65E0\u6548\u7684\u751F\u6210\u53C2\u6570. \u53EF\u9009: %s"
teleported_to_road: "$2\u4F60\u4F20\u9001\u5230\u4E86\u8DEF\u4E2D"
debug_section: "$2>> $1&l%val%"
plot_id_form: "$2\u5730\u76AEID\u7684\u683C\u5F0F\u5FC5\u987B\u4E3A: $1X;Y $2\u4F8B\u5982: $1-5;7"
invalid_position: "$2\u8FD9\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u4F4D\u7F6E"
worldedit_unsafe: "$2\u8BE5\u6307\u4EE4\u5DF2\u7ECF\u88AB\u7981\u6B62\u4F7F\u7528"
not_in_plot_world: "$2\u4F60\u4E0D\u5728\u5730\u76AE\u4E16\u754C\u4E2D"
cannot_buy_own: "$2\u4F60\u4E0D\u80FD\u4E70\u4F60\u81EA\u5DF1\u7684\u5730\u76AE"
help_item: "$1%usage% [%alias%]&- $3- $2sc%&-"
not_valid_world: "$2\u8FD9\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u4E16\u754C (\u6CE8\u610F\u5927\u5C0F\u5199)"
home_argument: "$2\u7528\u6CD5 /plot set home [\u53EF\u4E0D\u586B]"
title_left_plot_color: "GOLD"
merge_not_valid: "$2\u5408\u5E76\u8BF7\u6C42\u5DF2\u5931\u6548."
debug_line: "$2>> $1%var%$2:$1 %val% "
comment_added: "$4\u6DFB\u52A0\u4E86\u4E00\u6761\u65B0\u7684\u7559\u8A00"
alias_is_taken: "$2\u8FD9\u4E2A\u522B\u540D\u5DF2\u88AB\u522B\u4EBA\u4F7F\u7528"
setup_missing_generator: "$2\u4F60\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u751F\u6210\u53C2\u6570 ($1/plot setup <\u4E16\u754C\u540D\u79F0> &l<\u751F\u6210\u53C2\u6570>&r$2)&-$1\u9644\u52A0\u6307\u4EE4:&-$2 - $1/plot setup <\u53C2\u6570>&-$2 - $1/plot setup back&-$2 - $1/plot setup cancel"
block_list_separater: "$1,$2 "
alias_set_to: "$2\u5730\u76AE\u7684\u522B\u540D\u8BBE\u7F6E\u4E3A $1%alias%"
did_you_mean: "$2\u4F60\u7684\u610F\u601D\u662F $1%s $2\u5417?"
cluster_not_added: "$2\u8FD9\u4E2A\u73A9\u5BB6\u672A\u88AB\u52A0\u5165\u5730\u76AE\u7EC4\u7FA4\u4E2D"
success_merge: "$2\u5730\u76AE\u6210\u529F\u88AB\u5408\u5E76!"
position_set: "$1\u5728\u4F60\u5F53\u524D\u7684\u4F4D\u7F6E\u8BBE\u7F6E\u5BB6"
cluster_regenerated: "$4\u6210\u529F\u5F00\u59CB\u7FA4\u7EC4\u91CD\u5EFA"
not_valid_data: "$2\u8FD9\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u53C2\u6570\u503C."
not_for_sale: "$2\u8FD9\u5757\u5730\u76AE\u5E76\u4E0D\u51FA\u552E"
not_in_cluster: "$2\u4F60\u5FC5\u987B\u5728\u4E00\u4E2A\u5730\u76AE\u7EC4\u7FA4\u4E2D\u624D\u80FD\u8FDB\u884C\u6B64\u64CD\u4F5C"
schematic_paste_success: "$4\u5EFA\u7B51\u6587\u4EF6\u7C98\u8D34\u6210\u529F"
set_block_action_finished: "$1\u6700\u540E\u4E00\u4E2A\u65B9\u5757\u8BBE\u7F6E\u5DF2\u5B8C\u6210."
missing_alias: "$2\u4F60\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u522B\u540D"
paste_failed: "$2\u7C98\u8D34\u65F6\u53D1\u751F\u9519\u8BEF. \u539F\u56E0: $2%s"
invalid_player: "$2\u672A\u627E\u5230\u73A9\u5BB6 $1%s."
plot_info_helpers: "$1\u5E2E\u624B:$2 %helpers%"
cluster_added: "$4\u6210\u529F\u521B\u5EFA\u7EC4\u7FA4."
setup_init: "$1\u7528\u6CD5: $2/plot setup <\u53C2\u6570>"
bossbar_clearing: "$2\u6B63\u5728\u6E05\u7406\u5730\u76AE $1%id%"
title_entered_plot_sub_color: "RED"
prefix_greeting: "$1%id%$2> "
not_your_plot: "$2\u8FD9\u4E0D\u662F\u4F60\u7684\u5730\u76AE."
worldedit_volume: "$2\u4F60\u65E0\u6CD5\u9009\u62E9 %current% \u7684\u7A7A\u95F4. \u6700\u5927\u7A7A\u95F4\u53EF\u4EE5\u8BBE\u7F6E\u4E3A %max%."
not_valid_plot_id: "$2\u8FD9\u4E0D\u662F\u6709\u6548\u7684\u5730\u76AEID."
unclaim_success: "$4\u4F60\u653E\u5F03\u4E86\u8FD9\u5757\u5730\u76AE."
teleport_failed: "$2\u56E0\u4E3A\u53D7\u5230\u4F24\u5BB3\u800C\u88AB\u53D6\u6D88\u4F20\u9001"
need_plot_world: "$2\u4F60\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u5730\u76AE\u4E16\u754C."
plot_not_claimed: "$2\u5730\u76AE\u672A\u88AB\u9886\u53D6"
title_entered_plot_color: "GOLD"
denied_removed: "$4\u4F60\u89E3\u9664\u4E86\u8FD9\u4E2A\u5730\u76AE\u5BF9\u73A9\u5BB6\u7684\u9ED1\u540D\u5355"
plot_removed_helper: "$1\u4F60\u52A0\u5165\u7684\u5730\u76AE %s \u56E0\u4E3A\u62E5\u6709\u8005\u4E0D\u6D3B\u8DC3\u800C\u88AB\u5220\u9664\u4E86"
plotworld_incompatible: "$2\u4E24\u4E2A\u4E16\u754C\u5FC5\u987B\u76F8\u4E92\u517C\u5BB9"
generating_component: "$1\u5F00\u59CB\u6839\u636E\u4F60\u7684\u8BBE\u5B9A\u751F\u6210"
not_valid_block_list_header: "$2\u8FD9\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u65B9\u5757. \u6709\u6548\u7684\u65B9\u5757: "
alias_too_long: "$2\u522B\u540D\u7684\u957F\u5EA6\u5FC5\u987B\u5C0F\u4E8E50\u4E2A\u5B57\u7B26"
move_success: "$4\u6210\u529F\u79FB\u9664\u5730\u76AE."
no_plot_perms: "$2\u4F60\u5FC5\u987B\u662F\u5730\u76AE\u62E5\u6709\u8005\u624D\u80FD\u6267\u884C\u8FD9\u4E2A\u64CD\u4F5C"
command_went_wrong: "$2\u6267\u884C\u547D\u4EE4\u65F6\u53D1\u751F\u4E86\u9519\u8BEF..."
helper_added: "$4\u4F60\u6210\u529F\u4E3A\u5730\u76AE\u52A0\u5165\u4E86\u5E2E\u624B"
schematic_paste_failed: "$2\u7C98\u8D34\u5EFA\u7B51\u6587\u4EF6\u5931\u8D25"
removed_balance: "$2\u4ECE\u4F60\u7684\u8D26\u6237\u4E2D\u6263\u9664\u4E86 $1%s"
setup_step: "$3[$1\u6B65\u9AA4 - %s$3] $1%s $2- $1\u7C7B\u578B: $2%s $1\u9ED8\u8BA4\u503C: $2%s"
schematic_valid: "$2\u8FD9\u662F\u4E00\u4E2A\u6709\u6548\u7684\u5EFA\u7B51\u6587\u4EF6"
owner_sign_line_4: "$3\u5DF2\u9886\u53D6"
cluster_added_helper: "$4\u6210\u529F\u4E3A\u7EC4\u7FA4\u52A0\u5165\u5E2E\u624B"
owner_sign_line_3: "$2%plr%"
already_owner: "$2\u8FD9\u4E2A\u73A9\u5BB6\u5DF2\u7ECF\u62E5\u6709\u5730\u76AE\u4E86."
owner_sign_line_2: "$1\u62E5\u6709\u8005:"
owner_sign_line_1: "$1ID: $1%id%"
not_valid_subcommand: "$2\u8FD9\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u5B50\u547D\u4EE4"
subcommand_set_options_header: "$2\u53EF\u7528\u7684\u53C2\u6570: "
requires_unowned: "$2\u8BE5\u4F4D\u7F6E\u5DF2\u88AB\u5360\u7528."
plot_unowned: "$2\u4F60\u5FC5\u987B\u662F\u5730\u76AE\u62E5\u6709\u8005\u624D\u80FD\u6267\u884C\u8FD9\u4E2A\u64CD\u4F5C"
inbox_item: "$2 - $4%s"
cannot_kick_player: "$2\u4F60\u4E0D\u80FD\u8E22\u51FA\u8BE5\u73A9\u5BB6"
clearing_done: "$4\u6E05\u7406\u5B8C\u6210! \u8017\u65F6 %s\u6BEB\u79D2."
setup_valid_arg: "$2\u53C2\u6570 $1%s $2\u8BBE\u7F6E\u4E3A %s"
camera_stopped: "$2\u4F60\u53D6\u6D88\u4E86\u6444\u50CF\u673A\u6A21\u5F0F"
flag_type: "$2\u7C7B\u578B: %s"
pasted: "$4\u88AB\u9009\u62E9\u7684\u5730\u76AE\u6210\u529F\u7C98\u8D34."
cluster_info: "$1\u5F53\u524D\u7EC4\u7FA4: $2%id%&-$1\u540D\u79F0: $2%name%&-$1\u62E5\u6709\u8005: $2%owner%&-$1\u5927\u5C0F: $2%size%&-$1\u6743\u9650: $2%rights%"
cluster_cannot_leave: "$1\u5728\u9000\u51FA\u4E4B\u524D\u5148\u8F6C\u79FB\u6240\u6709\u6743"
help_header: "$3====== $1\u5730\u76AE\u5E2E\u52A9\u83DC\u5355 $3======"
cannot_afford_merge: "$2\u4F60\u6CA1\u6709\u8DB3\u591F\u7684\u91D1\u94B1\u5408\u5E76\u5730\u76AE. \u9700\u8981\u82B1\u8D39 $1%s"
setting_updated: "$4\u4F60\u66F4\u65B0\u4E86\u4F60\u7684\u8BBE\u5B9A"
need_key: "$2\u53EF\u7528\u53C2\u6570: $1%values%"
merge_requested: "$2\u6210\u529F\u53D1\u9001\u5408\u5E76\u8BF7\u6C42"
compass_target: "$4S\u6210\u529F\u4F20\u9001\u5230\u76EE\u6807\u5730\u76AE"
flag_not_added: "$2\u8BE5\u6807\u8BC6\u65E0\u6CD5\u88AB\u6DFB\u52A0"
no_plots: "$2\u4F60\u6CA1\u6709\u989D\u5916\u7684\u5730\u76AE\u4E86"
need_plot_id: "$2\u4F60\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u5730\u76AEID."
flag_not_removed: "$2\u8BE5\u6807\u8BC6\u65E0\u6CD5\u88AB\u79FB\u9664"
trusted_removed: "$1\u4F60\u4ECE\u5730\u76AE\u4E2D\u79FB\u9664\u4E86\u4E00\u540D\u53EF\u4FE1\u73A9\u5BB6"
comment_header: "$2====== \u7559\u8A00\u677F ======"
flag_removed: "$4\u6210\u529F\u79FB\u9664\u6807\u8BC6"
rating_applied: "$4\u4F60\u4E3A\u5730\u76AE $2%s $4\u6253\u5206\u4E86"
requires_confirm: "$2\u4F60\u662F\u5426\u6267\u884C: $1%s$2?&-$2\u8BE5\u64CD\u4F5C\u4E0D\u53EF\u9006! \u5982\u679C\u786E\u5B9A\u8BF7\u8F93\u5165: $1/plot confirm"
flag_added: "$4\u6210\u529F\u6DFB\u52A0\u6807\u8BC6"
econ_disabled: "$2\u7ECF\u6D4E\u529F\u80FD\u672A\u542F\u7528"
not_valid_hybrid_plot_world: "The hybrid plot manager is required to perform this action"
no_commands: "$2\u4F60\u6CA1\u6709\u6743\u9650\u4F7F\u7528\u4EFB\u4F55\u6307\u4EE4."
missing_position: "$2\u4F60\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u4F4D\u7F6E. \u53EF\u7528\u7684\u53C2\u6570: $1none"
record_play: "$2%player $2\u5F00\u59CB\u64AD\u653ECD $1%name"
no_perm_inbox_modify: "$2\u4F60\u6CA1\u6709\u6743\u9650\u4FEE\u6539"
unlink_required: "$2\u5982\u679C\u9700\u8981\u53D6\u6D88\u5408\u5E76\u5730\u76AE."
denied_need_argument: "$2\u7F3A\u5C11\u53C2\u6570. $1/plot denied add <\u73A9\u5BB6\u540D\u79F0> $2\u6216 $1/plot denied remove <\u73A9\u5BB6\u540D\u79F0>"
added_balance: "$2\u5411\u4F60\u7684\u8D26\u6237\u4E2D\u52A0\u5165\u4E86 $1%s"
not_using_plotme: "$2\u8FD9\u4E2A\u670D\u52A1\u5668\u4F7F\u7528\u4E86 $1PlotSquared $2\u5730\u76AE\u7BA1\u7406\u7CFB\u7EDF. \u8BF7\u8F93\u5165 $1/ps $2\u6216 $1/p2 $2\u6216 $1/plots $2\u6765\u4EE3\u66FF"
player_has_not_been_on: "$2\u8FD9\u4E2A\u73A9\u5BB6\u8FD8\u6CA1\u62E5\u6709\u5730\u76AE"
plot_list_footer: "$2>> $1%word% \u6709 $2%num% $1\u88AB\u9886\u53D6\u7684 %plot%."
trim_in_progress: "\u5730\u76AE\u6E05\u7406\u4EFB\u52A1\u6B63\u5728\u8FDB\u884C!"
cluster_deleted: "$4\u6210\u529F\u5220\u9664\u7EC4\u7FA4."
cant_claim_more_plots: "$2\u4F60\u4E0D\u80FD\u9886\u53D6\u66F4\u591A\u7684\u5730\u76AE\u4E86."
unlink_success: "$2\u6210\u529F\u53D6\u6D88\u5730\u76AE\u5408\u5E76."
no_perm_inbox: "$2\u4F60\u6CA1\u6709\u6743\u9650\u8FD9\u6837\u505A"
worldedit_bypass: "$2&o\u8DF3\u8FC7\u6743\u9650\u8BF7\u8F93\u5165 $3/plot wea"
prefix: "$3[$1\u5730\u76AE$3] "
claimed: "$4\u4F60\u6210\u529F\u9886\u53D6\u4E86\u5730\u76AE"
failed_confirm: "$2\u4E0B\u4E00\u6B65\u65F6\u53D1\u751F\u4E86\u9519\u8BEF!"
copy_success: "$4\u4F60\u6210\u529F\u590D\u5236\u4E86\u5730\u76AE."
cluster_available_args: "$1\u53EF\u7528\u7684\u7EC4\u7FA4\u6307\u4EE4: $4list$2, $4create$2, $4delete$2, $4resize$2, $4invite$2, $4kick$2, $4leave$2, $4helpers$2, $4info$2, $4tp$2, $4sethome"
cluster_list_heading: "$2\u8BE5\u4E16\u754C\u4E2D\u6709 $1%s$2 \u4E2A\u7EC4\u7FA4"
cluster_list_element: "$2 - $1%s&-"
cluster_intersection: "$2\u8BE5\u5730\u533A\u6709\u91CD\u53E0\u7684 $1%s$2 \u4E2A\u7EC4\u7FA4"
cluster_resized: "$4\u6210\u529F\u8C03\u6574\u4E86\u7EC4\u7FA4\u7684\u5927\u5C0F."
cluster_added_user: "$4\u6210\u529F\u52A0\u5165\u73A9\u5BB6\u5230\u7EC4\u7FA4\u4E2D."
cluster_invited: "$1\u4F60\u88AB\u9080\u8BF7\u5230\u7EC4\u7FA4: $2%s"
cluster_removed: "$1\u4F60\u88AB\u7EC4\u7FA4 $2%s \u8E22\u51FA\u4E86"
cluster_kicked_user: "$4\u6210\u529F\u8E22\u51FA\u73A9\u5BB6"
invalid_cluster: "$1\u65E0\u6548\u7684\u7EC4\u7FA4\u540D\u79F0: $2%s"
cluster_removed_helper: "$4\u6210\u529F\u79FB\u9664\u4E86\u7EC4\u7FA4\u7684\u5E2E\u624B"
cluster_teleporting: "$4\u4F20\u9001\u4E2D..."
cluster_current_plotid: "$1\u5F53\u524D\u5730\u76AE: $2%s"
border: "$2\u4F60\u8D70\u5230\u4E86\u5730\u56FE\u8FB9\u5883"
require_selection_in_mask: "$2\u4F60\u9009\u62E9\u7684\u5730\u76AE %s \u4E0D\u662F\u4F60\u7684. \u4F60\u53EA\u80FD\u5728\u4F60\u7684\u5730\u76AE\u4E2D\u5EFA\u7B51."
worldedit_iterations: "$2\u4F60\u4E0D\u80FD\u91CD\u590D %current% \u6B21. \u6700\u5927\u91CD\u590D\u6B21\u6570\u4E3A %max%."
worldedit_unmasked: "$1\u4F60\u7684WE\u529F\u80FD\u6CA1\u6709\u9650\u5236."
worldedit_restricted: "$1\u4F60\u7684WE\u529F\u80FD\u88AB\u9650\u5236."
notify_enter: "$2%player $2\u8FDB\u5165\u4E86\u4F60\u7684\u5730\u76AE ($1%plot$2)"
notify_leave: "$2%player $2\u79BB\u5F00\u4E86\u4F60\u7684\u5730\u76AE ($1%plot$2)"
swap_overlap: "$2\u8BE5\u533A\u57DF\u4E0D\u5141\u8BB8\u8986\u76D6"
swap_dimensions: "$2\u8BE5\u533A\u57DF\u9700\u8981\u540C\u6837\u5927\u5C0F\u7684\u5C3A\u5BF8"
swap_syntax: "$2/plots swap <\u5730\u76AEID>"
swap_success: "$4\u6210\u529F\u4EA4\u6362\u5730\u76AE"
started_swap: "$2\u5F00\u59CB\u5730\u76AE\u4EA4\u6362. \u4EA4\u6362\u5C31\u7EEA\u540E\u4F1A\u901A\u77E5\u4F60"
comment_syntax: "$2\u7528\u6CD5 /plots comment [X;Z] <%s> <\u7559\u8A00>"
invalid_inbox: "$2\u8FD9\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u9875\u6570.&-$1\u53EF\u7528\u7684\u53C2\u6570: %s"
no_plot_inbox: "$2\u8FD9\u4E0D\u662F\u6709\u6548\u7684\u5730\u76AE\u9875\u6570"
comment_removed: "$4\u6210\u529F\u5220\u9664\u5730\u76AE\u7559\u8A00/s:n$2 - \'$3%s$2\'"
not_console: "$\u8BE5\u6307\u4EE4\u4EC5\u9650\u63A7\u5236\u53F0\u8F93\u5165."
is_console: "$2\u8BE5\u6307\u4EE4\u4EC5\u9650\u73A9\u5BB6\u8F93\u5165."
clipboard_set: "$2\u5F53\u524D\u5730\u76AE\u5DF2\u7ECF\u88AB\u590D\u5236\u5230\u4E86\u526A\u5207\u677F, \u4F7F\u7528 $1/plot paste$2 \u6765\u7C98\u8D34\u5B83"
no_clipboard: "$2\u4F60\u6CA1\u6709\u9009\u62E9\u526A\u5207\u677F"
clipboard_info: "$2\u5F53\u524D\u9009\u62E9 - \u5730\u76AE ID: $1%id$2, \u5BBD\u5EA6: $1%width$2, \u65B9\u5757\u6570\u91CF: $1%total$2"
rating_not_valid: "$2\u4F60\u9700\u8981\u6307\u5B9A\u4E00\u4E2A1~10\u4E4B\u95F4\u7684\u6570"
rating_already_exists: "$2\u4F60\u5DF2\u7ECF\u4E3A\u5730\u76AE $2%s \u8BC4\u8FC7\u5206\u4E86"
rating_not_your_own: "$2\u4F60\u4E0D\u80FD\u4E3A\u81EA\u5DF1\u5730\u76AE\u8BC4\u5206"
rating_not_owned: "$2\u4F60\u4E0D\u80FD\u4E3A\u95F2\u7F6E\u5730\u76AE\u8BC4\u5206"
cannot_afford_plot: "$2\u4F60\u6CA1\u6709\u8DB3\u591F\u7684\u91D1\u94B1\u8D2D\u4E70\u5730\u76AE. \u9700\u8981\u82B1\u8D39 $1%s"
plot_sold: "$4\u4F60\u7684\u5730\u76AE; $1%s$4, \u5DF2\u5356\u7ED9\u4E86 $1%s$4 \u4EF7\u683C\u4E3A $1$%s"
setup_invalid_arg: "$2%s\u4E0D\u662F\u6B65\u9AA4 %s \u7684\u6709\u6548\u53C2\u6570. \u53D6\u6D88\u6784\u5EFA\u8F93\u5165: $1/plot setup cancel"
setup_finished: "$3\u5982\u679C\u4F7F\u7528\u4E86 MULTIVERSE \u6216 MULTIWORLD \u63D2\u4EF6\u4E16\u754C\u7684\u914D\u7F6E\u4F1A\u81EA\u52A8\u5199\u5165. \u5426\u5219\u4F60\u9700\u8981\u624B\u52A8\u5199\u5165\u6587\u4EF6 bukkit.yml"
setup_missing_world: "$2\u4F60\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u4E16\u754C\u540D\u79F0 ($1/plot setup &l<\u4E16\u754C\u540D\u79F0>$1 <\u751F\u6210\u53C2\u6570>$2)&-$1\u9644\u52A0\u6307\u4EE4:&-$2 - $1/plot setup <\u53C2\u6570>&-$2 - $1/plot setup back&-$2 - $1/plot setup cancel"
schematic_missing_arg: "$2\u4F60\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u53C2\u6570. \u53EF\u7528\u7684\u53C2\u6570: $1test <\u540D\u79F0>$2 , $1save$2 , $1paste $2, $1exportall"
title_entered_plot: "\u5730\u76AE\u4F4D\u7F6E: %world%;%x%;%z%"
title_entered_plot_sub: "\u62E5\u6709\u8005 %s"
title_left_plot: "\u4F60\u79BB\u5F00\u4E86 %s"
title_left_plot_sub: "\u62E5\u6709\u8005 %s"
title_left_plot_sub_color: "RED"
prefix_farewell: "$1%id%$2> "
enabled: "$1PlotSquared \u5DF2\u542F\u7528"
example_message: "$2\u8FD9\u662F\u4E00\u6761\u6F14\u793A\u6D88\u606F &k!!!"
reloaded_configs: "$1\u6587\u4EF6\u4E0E\u8BBE\u5B9A\u88AB\u91CD\u65B0\u8BFB\u53D6"
reload_failed: "$2\u91CD\u65B0\u8BFB\u53D6\u5931\u8D25\u4E86"
time_format: "$1%hours%, %min%, %sec%"
no_schematic_permission: "$2\u4F60\u6CA1\u6709\u6743\u9650\u4F7F\u7528\u5EFA\u7B51\u6587\u4EF6 $1%s"
no_permission: "$2\u4F60\u7F3A\u5C11\u4E86\u6743\u9650: $1%s"
cant_transfer_more_plots: "$2\u4F60\u4E0D\u80FD\u53D1\u51FA\u66F4\u591A\u7684\u5730\u76AE\u9080\u8BF7\u4E86"
cant_claim_more_plots_num: "$2\u4F60\u4E0D\u80FD\u4E00\u6B21\u9886\u53D6 $1%s $2\u5757\u5730\u76AE"
you_be_denied: "$2\u4F60\u4E0D\u80FD\u8FDB\u5165\u8FD9\u5757\u5730\u76AE"
no_perm_merge: "$2\u4F60\u4E0D\u662F\u8FD9\u5757\u5730\u76AE $1%plot% $2\u7684\u62E5\u6709\u8005"
unlink_impossible: "$2\u4F60\u53EA\u80FD\u53D6\u6D88\u5408\u5E76\u8D85\u7EA7\u5730\u76AE"
no_merge_to_mega: "$2\u8D85\u7EA7\u5730\u76AE\u65E0\u6CD5\u88AB\u5408\u5E76."
merge_accepted: "$2\u5408\u5E76\u8BF7\u6C42\u5DF2\u88AB\u63A5\u53D7"
merge_request_confirm: "\u6536\u5230\u4E86 %s \u7684\u5408\u5E76\u8BF7\u6C42"
name_little: "$2%s \u540D\u5B57\u592A\u77ED\u4E86, $1%s$2<$1%s"
purge_syntax: "\u7528\u6CD5 /plot purge <x;z|player|unowned|unknown|all> <\u4E16\u754C\u540D\u79F0>"
purge_success: "$4\u6210\u529F\u6E05\u7406\u4E86 %s \u5757\u5730\u76AE"
trim_syntax: "\u7528\u6CD5 /plot trim <all|x;y> <\u4E16\u754C\u540D\u79F0>"
trim_start: "\u5F00\u59CB\u5730\u76AE\u6574\u7406..."
no_free_plots: "$2\u6CA1\u6709\u514D\u8D39\u7684\u5730\u76AE\u53EF\u7528"
not_in_plot: "$2\u4F60\u4E0D\u5728\u5730\u76AE\u4E0A"
not_valid_plot_world: "$2\u8FD9\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u4E16\u754C (\u6CE8\u610F\u5927\u5C0F\u5199)"
block_list_item: " $1%mat%$2,"
need_biome: "$2\u4F60\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u751F\u7269\u7FA4\u843D"
biome_set_to: "$2\u5730\u76AE\u7684\u751F\u7269\u7FA4\u843D\u8BBE\u7F6E\u4E3A $2"
teleported_to_plot: "$2\u4F60\u4F20\u9001\u5230\u4E86\u5730\u76AE\u4E2D"
teleport_in_seconds: "$1\u5C06\u5728 %s \u79D2\u5185\u4F20\u9001. \u8BF7\u52FF\u79FB\u52A8..."
deubg_header: "$1\u8C03\u8BD5\u4FE1\u606F"
not_valid_block: "$2\u8FD9\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u65B9\u5757."
not_valid_number: "$2\u8FD9\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u6570\u5B57"
no_such_plot: "$2\u6CA1\u6709\u8BE5\u7C7B\u578B\u7684\u5730\u76AE"
found_no_plots: "$2\u65E0\u6CD5\u6839\u636E\u8BE5\u8981\u6C42\u67E5\u627E\u5730\u76AE"
need_plot_number: "$2\u4F60\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u5730\u76AEID\u6216\u522B\u540D"
need_block: "$\u4F60\u9700\u8981\u6307\u5B9A\u4E00\u79CD\u65B9\u5757"
need_user: "$2\u4F60\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u73A9\u5BB6"
plot_info_unclaimed: "$2\u5730\u76AE $1%s$2 \u8FD8\u672A\u88AB\u9886\u53D6"
plot_info_header: "$3====== $1INFO $3======"
plot_info: "$1ID: $2%id%$1&-$1\u522B\u540D: $2%alias%$1&-$1\u62E5\u6709\u8005: $2%owner%$1&-$1\u751F\u7269\u7FA4\u843D: $2%biome%$1&-$1\u53EF\u5426\u5EFA\u7B51: $2%build%$1&-$1\u8BC4\u5206: $2%rating%$1/$210$1&-$1\u5E2E\u624B: $2%helpers%$1&-$1\u53EF\u4FE1\u73A9\u5BB6: $2%trusted%$1&-$1\u9ED1\u540D\u5355: $2nied%$1&-$1\u6807\u8BC6: $2%flags%"
plot_info_trusted: "$1\u53EF\u4FE1\u73A9\u5BB6:$2 %trusted%"
plot_info_denied: "$1\u9ED1\u540D\u5355\u73A9\u5BB6:$2 nied%"
plot_info_flags: "$1\u6807\u8BC6:$2 %flags%"
plot_info_biome: "$1\u751F\u7269\u7FA4\u843D:$2 %biome%"
plot_info_rating: "$1\u8BC4\u5206:$2 %rating%"
plot_info_owner: "$1\u62E5\u6709\u8005:$2 %owner%"
plot_info_id: "$1ID:$2 %id%"
plot_info_alias: "$1\u522B\u540D:$2 %alias%"
plot_info_size: "$1\u5927\u5C0F:$2 %size%"
plot_user_list: " $1%user%$2,"
info_syntax_console: "$2/plot info <\u4E16\u754C\u540D\u79F0> X;Y"
clearing_plot: "$2\u6E05\u7406\u5730\u76AE\u4E2D."
plot_is_claimed: "$2\u8FD9\u5757\u5730\u76AE\u5DF2\u88AB\u9886\u53D6"
plot_list_header_paged: "$2(\u9875\u6570 $1%cur$2/$1%max$2) $1\u5217\u51FA\u4E86 %word% \u5757\u5730\u76AE"
plot_list_header: "$11\u5217\u51FA\u4E86 %word% \u5757\u5730\u76AE"
plot_list_item_ordered: "$2[$1%in$2] >> $1%id$2:$1%world $2- $1%owner"
left_plot: "$2\u4F60\u79BB\u5F00\u4E86\u5730\u76AE"
wait_for_timer: "$2\u8BBE\u7F6E\u65B9\u5757\u8BA1\u65F6\u5668\u5DF2\u542F\u7528. \u8BF7\u7A0D\u540E..."
plot_chat_format: "$2[$1\u5730\u76AE\u804A\u5929$2][$1%plot_id%$2] $1%sender%$2: $1%msg%"
denied_added: "$4\u4F60\u6210\u529F\u4E3A\u5730\u76AE\u52A0\u5165\u4E86\u9ED1\u540D\u5355\u73A9\u5BB6"
was_not_denied: "$2\u4F60\u8FD9\u73A9\u5BB6\u4E0D\u5728\u9ED1\u540D\u5355\u4E2D"
need_on_off: "$2\u4F60\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u53C2\u6570. \u53EF\u7528\u7684\u53C2\u6570: $1on$2, $1off"
flag_key: "$2\u5173\u952E\u5B57: %s"
flag_desc: "$2\u63CF\u8FF0: %s"
not_valid_value: "$2\u6807\u8BC6\u7684\u53C2\u6570\u5FC5\u987B\u4E3A\u6570\u5B57"
flag_not_in_plot: "$2\u8FD9\u5757\u5730\u76AE\u8FD8\u6CA1\u6709\u8BBE\u7F6E\u6807\u8BC6 26"
helper_removed: "$4\u4F60\u6210\u529F\u4E3A\u5730\u76AE\u79FB\u9664\u4E86\u5E2E\u624B"
helper_need_argument: "$2\u7F3A\u5C11\u53C2\u6570. $1/plot helpers add <\u73A9\u5BB6\u540D\u79F0> $2\u6216 $1/plot helpers remove <\u73A9\u5BB6\u540D\u79F0>"
was_not_added: "$2\u8FD9\u4E2A\u73A9\u5BB6\u8FD8\u6CA1\u6709\u6210\u4E3A\u8BE5\u5730\u76AE\u7684\u5E2E\u624B"
already_added: "$2\u8FD9\u4E2A\u73A9\u5BB6\u5DF2\u7ECF\u52A0\u5165\u4E86\u8BE5\u5206\u7EC4."
trusted_added: "$4\u4F60\u6210\u529F\u4E3A\u5730\u76AE\u52A0\u5165\u4E86\u53EF\u4FE1\u73A9\u5BB6"
trusted_need_argument: "$2\u7F3A\u5C11\u53C2\u6570. $1/plot trusted add <\u73A9\u5BB6\u540D\u79F0> $2\u6216 $1/plot trusted remove <\u73A9\u5BB6\u540D\u79F0>"
t_was_not_added: "$2\u8FD9\u4E2A\u73A9\u5BB6\u8FD8\u6CA1\u6709\u6210\u4E3A\u8BE5\u5730\u76AE\u7684\u53EF\u4FE1\u73A9\u5BB6"
set_owner: "$4\u4F60\u6210\u529F\u4E3A\u5730\u76AE\u8BBE\u7F6E\u4E86\u62E5\u6709\u8005"
now_owner: "$4\u4F60\u73B0\u5728\u6210\u4E3A\u5730\u76AE %s \u7684\u62E5\u6709\u8005\u4E86"
help_category: "$1\u5206\u7C7B: $2tegory%$2,$1 \u9875\u6570: $2%current%$3/$2%max%$2,$1 \u5DF2\u663E\u793A: $2%dis%$3/$2%total%"
help_info: "$3====== $1\u9009\u62E9\u4E00\u4E2A\u5206\u7C7B $3======"
help_info_item: "$1/plots help tegory% $3- $2tegory_desc%"
direction: "$1\u5F53\u524D\u65B9\u5411: %dir%"
custom_string: "-"

View File

@ -0,0 +1,257 @@
### UNESCAPED TEMPLATE ###
# Translated by: Liouftgoo/Mayomi9
# UTF-8 ESCAPE USING: http://www.rapidmonkey.com/unicodeconverter/
### UNESCAPED TEMPLATE ###
camera_started: "$2你进入了地皮 $1%s 的摄像机模式"
command_syntax: "$1用法: $2%s"
not_valid_flag: "$2这不是一个有效的标识"
setup_world_taken: "$2%s 已经是地皮世界了"
plot_list_item: "$2>> $1%id$2:$1%world $2- $1%owner"
schematic_invalid: "$2这不是一个有效的建筑文件. 原因: $2%s"
not_valid_inbox_index: "$2页数 %s 没有留言"
setup_invalid_generator: "$2无效的生成参数. 可选: %s"
teleported_to_road: "$2你传送到了路中"
debug_section: "$2>> $1&l%val%"
plot_id_form: "$2地皮ID的格式必须为: $1X;Y $2例如: $1-5;7"
invalid_position: "$2这不是一个有效的位置"
worldedit_unsafe: "$2该指令已经被禁止使用"
not_in_plot_world: "$2你不在地皮世界中"
cannot_buy_own: "$2你不能买你自己的地皮"
help_item: "$1%usage% [%alias%]&- $3- $2%desc%&-"
not_valid_world: "$2这不是一个有效的世界 (注意大小写)"
home_argument: "$2用法 /plot set home [可不填]"
title_left_plot_color: "GOLD"
merge_not_valid: "$2合并请求已失效."
debug_line: "$2>> $1%var%$2:$1 %val% "
comment_added: "$4添加了一条新的留言"
alias_is_taken: "$2这个别名已被别人使用"
setup_missing_generator: "$2你需要指定一个生成参数 ($1/plot setup <世界名称> &l<生成参数>&r$2)&-$1附加指令:&-$2 - $1/plot setup <参数>&-$2 - $1/plot setup back&-$2 - $1/plot setup cancel"
block_list_separater: "$1,$2 "
alias_set_to: "$2地皮的别名设置为 $1%alias%"
did_you_mean: "$2你的意思是 $1%s $2吗?"
cluster_not_added: "$2这个玩家未被加入地皮组群中"
success_merge: "$2地皮成功被合并!"
position_set: "$1在你当前的位置设置家"
cluster_regenerated: "$4成功开始群组重建"
not_valid_data: "$2这不是一个有效的参数值."
not_for_sale: "$2这块地皮并不出售"
not_in_cluster: "$2你必须在一个地皮组群中才能进行此操作"
schematic_paste_success: "$4建筑文件粘贴成功"
set_block_action_finished: "$1最后一个方块设置已完成."
missing_alias: "$2你需要指定一个别名"
paste_failed: "$2粘贴时发生错误. 原因: $2%s"
invalid_player: "$2未找到玩家 $1%s."
plot_info_helpers: "$1帮手:$2 %helpers%"
cluster_added: "$4成功创建组群."
setup_init: "$1用法: $2/plot setup <参数>"
bossbar_clearing: "$2正在清理地皮 $1%id%"
title_entered_plot_sub_color: "RED"
prefix_greeting: "$1%id%$2> "
not_your_plot: "$2这不是你的地皮."
worldedit_volume: "$2你无法选择 %current% 的空间. 最大空间可以设置为 %max%."
not_valid_plot_id: "$2这不是有效的地皮ID."
unclaim_success: "$4你放弃了这块地皮."
teleport_failed: "$2因为受到伤害而被取消传送"
need_plot_world: "$2你需要指定一个地皮世界."
plot_not_claimed: "$2地皮未被领取"
title_entered_plot_color: "GOLD"
denied_removed: "$4你解除了这个地皮对玩家的黑名单"
plot_removed_helper: "$1你加入的地皮 %s 因为拥有者不活跃而被删除了"
plotworld_incompatible: "$2两个世界必须相互兼容"
generating_component: "$1开始根据你的设定生成"
not_valid_block_list_header: "$2这不是一个有效的方块. 有效的方块: "
alias_too_long: "$2别名的长度必须小于50个字符"
move_success: "$4成功移除地皮."
no_plot_perms: "$2你必须是地皮拥有者才能执行这个操作"
command_went_wrong: "$2执行命令时发生了错误..."
helper_added: "$4你成功为地皮加入了帮手"
schematic_paste_failed: "$2粘贴建筑文件失败"
removed_balance: "$2从你的账户中扣除了 $1%s"
setup_step: "$3[$1步骤 - %s$3] $1%s $2- $1类型: $2%s $1默认值: $2%s"
schematic_valid: "$2这是一个有效的建筑文件"
owner_sign_line_4: "$3已领取"
cluster_added_helper: "$4成功为组群加入帮手"
owner_sign_line_3: "$2%plr%"
already_owner: "$2这个玩家已经拥有地皮了."
owner_sign_line_2: "$1拥有者:"
owner_sign_line_1: "$1ID: $1%id%"
not_valid_subcommand: "$2这不是一个有效的子命令"
subcommand_set_options_header: "$2可用的参数: "
requires_unowned: "$2该位置已被占用."
plot_unowned: "$2你必须是地皮拥有者才能执行这个操作"
inbox_item: "$2 - $4%s"
cannot_kick_player: "$2你不能踢出该玩家"
clearing_done: "$4清理完成! 耗时 %s毫秒."
setup_valid_arg: "$2参数 $1%s $2设置为 %s"
camera_stopped: "$2你取消了摄像机模式"
flag_type: "$2类型: %s"
pasted: "$4被选择的地皮成功粘贴."
cluster_info: "$1当前组群: $2%id%&-$1名称: $2%name%&-$1拥有者: $2%owner%&-$1大小: $2%size%&-$1权限: $2%rights%"
cluster_cannot_leave: "$1在退出之前先转移所有权"
help_header: "$3====== $1地皮帮助菜单 $3======"
cannot_afford_merge: "$2你没有足够的金钱合并地皮. 需要花费 $1%s"
setting_updated: "$4你更新了你的设定"
need_key: "$2可用参数: $1%values%"
merge_requested: "$2成功发送合并请求"
compass_target: "$4S成功传送到目标地皮"
flag_not_added: "$2该标识无法被添加"
no_plots: "$2你没有额外的地皮了"
need_plot_id: "$2你需要指定一个地皮ID."
flag_not_removed: "$2该标识无法被移除"
trusted_removed: "$1你从地皮中移除了一名可信玩家"
comment_header: "$2====== 留言板 ======"
flag_removed: "$4成功移除标识"
rating_applied: "$4你为地皮 $2%s $4打分了"
requires_confirm: "$2你是否执行: $1%s$2?&-$2该操作不可逆! 如果确定请输入: $1/plot confirm"
flag_added: "$4成功添加标识"
econ_disabled: "$2经济功能未启用"
not_valid_hybrid_plot_world: "The hybrid plot manager is required to perform this action"
no_commands: "$2你没有权限使用任何指令."
missing_position: "$2你需要指定一个位置. 可用的参数: $1none"
record_play: "$2%player $2开始播放CD $1%name"
no_perm_inbox_modify: "$2你没有权限修改"
unlink_required: "$2如果需要取消合并地皮."
denied_need_argument: "$2缺少参数. $1/plot denied add <玩家名称> $2或 $1/plot denied remove <玩家名称>"
added_balance: "$2向你的账户中加入了 $1%s"
not_using_plotme: "$2这个服务器使用了 $1PlotSquared $2地皮管理系统. 请输入 $1/ps $2或 $1/p2 $2或 $1/plots $2来代替"
player_has_not_been_on: "$2这个玩家还没拥有地皮"
plot_list_footer: "$2>> $1%word% 有 $2%num% $1被领取的 %plot%."
trim_in_progress: "地皮清理任务正在进行!"
cluster_deleted: "$4成功删除组群."
cant_claim_more_plots: "$2你不能领取更多的地皮了."
unlink_success: "$2成功取消地皮合并."
no_perm_inbox: "$2你没有权限这样做"
worldedit_bypass: "$2&o跳过权限请输入 $3/plot wea"
prefix: "$3[$1地皮$3] "
claimed: "$4你成功领取了地皮"
failed_confirm: "$2下一步时发生了错误!"
copy_success: "$4你成功复制了地皮."
cluster_available_args: "$1可用的组群指令: $4list$2, $4create$2, $4delete$2, $4resize$2, $4invite$2, $4kick$2, $4leave$2, $4helpers$2, $4info$2, $4tp$2, $4sethome"
cluster_list_heading: "$2该世界中有 $1%s$2 个组群"
cluster_list_element: "$2 - $1%s&-"
cluster_intersection: "$2该地区有重叠的 $1%s$2 个组群"
cluster_resized: "$4成功调整了组群的大小."
cluster_added_user: "$4成功加入玩家到组群中."
cluster_invited: "$1你被邀请到组群: $2%s"
cluster_removed: "$1你被组群 $2%s 踢出了"
cluster_kicked_user: "$4成功踢出玩家"
invalid_cluster: "$1无效的组群名称: $2%s"
cluster_removed_helper: "$4成功移除了组群的帮手"
cluster_teleporting: "$4传送中..."
cluster_current_plotid: "$1当前地皮: $2%s"
border: "$2你走到了地图边境"
require_selection_in_mask: "$2你选择的地皮 %s 不是你的. 你只能在你的地皮中建筑."
worldedit_iterations: "$2你不能重复 %current% 次. 最大重复次数为 %max%."
worldedit_unmasked: "$1你的WE功能没有限制."
worldedit_restricted: "$1你的WE功能被限制."
notify_enter: "$2%player $2进入了你的地皮 ($1%plot$2)"
notify_leave: "$2%player $2离开了你的地皮 ($1%plot$2)"
swap_overlap: "$2该区域不允许覆盖"
swap_dimensions: "$2该区域需要同样大小的尺寸"
swap_syntax: "$2/plots swap <地皮ID>"
swap_success: "$4成功交换地皮"
started_swap: "$2开始地皮交换. 交换就绪后会通知你"
comment_syntax: "$2用法 /plots comment [X;Z] <%s> <留言>"
invalid_inbox: "$2这不是一个有效的页数.&-$1可用的参数: %s"
no_plot_inbox: "$2这不是有效的地皮页数"
comment_removed: "$4成功删除地皮留言/s:n$2 - '$3%s$2'"
not_console: "$该指令仅限控制台输入."
is_console: "$2该指令仅限玩家输入."
clipboard_set: "$2当前地皮已经被复制到了剪切板, 使用 $1/plot paste$2 来粘贴它"
no_clipboard: "$2你没有选择剪切板"
clipboard_info: "$2当前选择 - 地皮 ID: $1%id$2, 宽度: $1%width$2, 方块数量: $1%total$2"
rating_not_valid: "$2你需要指定一个1~10之间的数"
rating_already_exists: "$2你已经为地皮 $2%s 评过分了"
rating_not_your_own: "$2你不能为自己地皮评分"
rating_not_owned: "$2你不能为闲置地皮评分"
cannot_afford_plot: "$2你没有足够的金钱购买地皮. 需要花费 $1%s"
plot_sold: "$4你的地皮; $1%s$4, 已卖给了 $1%s$4 价格为 $1$%s"
setup_invalid_arg: "$2%s不是步骤 %s 的有效参数. 取消构建输入: $1/plot setup cancel"
setup_finished: "$3如果使用了 MULTIVERSE 或 MULTIWORLD 插件世界的配置会自动写入. 否则你需要手动写入文件 bukkit.yml"
setup_missing_world: "$2你需要指定一个世界名称 ($1/plot setup &l<世界名称>$1 <生成参数>$2)&-$1附加指令:&-$2 - $1/plot setup <参数>&-$2 - $1/plot setup back&-$2 - $1/plot setup cancel"
schematic_missing_arg: "$2你需要指定一个参数. 可用的参数: $1test <名称>$2 , $1save$2 , $1paste $2, $1exportall"
title_entered_plot: "地皮位置: %world%;%x%;%z%"
title_entered_plot_sub: "拥有者 %s"
title_left_plot: "你离开了 %s"
title_left_plot_sub: "拥有者 %s"
title_left_plot_sub_color: "RED"
prefix_farewell: "$1%id%$2> "
enabled: "$1PlotSquared 已启用"
example_message: "$2这是一条演示消息 &k!!!"
reloaded_configs: "$1文件与设定被重新读取"
reload_failed: "$2重新读取失败了"
time_format: "$1%hours%, %min%, %sec%"
no_schematic_permission: "$2你没有权限使用建筑文件 $1%s"
no_permission: "$2你缺少了权限: $1%s"
cant_transfer_more_plots: "$2你不能发出更多的地皮邀请了"
cant_claim_more_plots_num: "$2你不能一次领取 $1%s $2块地皮"
you_be_denied: "$2你不能进入这块地皮"
no_perm_merge: "$2你不是这块地皮 $1%plot% $2的拥有者"
unlink_impossible: "$2你只能取消合并超级地皮"
no_merge_to_mega: "$2超级地皮无法被合并."
merge_accepted: "$2合并请求已被接受"
merge_request_confirm: "收到了 %s 的合并请求"
name_little: "$2%s 名字太短了, $1%s$2<$1%s"
purge_syntax: "用法 /plot purge <x;z|player|unowned|unknown|all> <世界名称>"
purge_success: "$4成功清理了 %s 块地皮"
trim_syntax: "用法 /plot trim <all|x;y> <世界名称>"
trim_start: "开始地皮整理..."
no_free_plots: "$2没有免费的地皮可用"
not_in_plot: "$2你不在地皮上"
not_valid_plot_world: "$2这不是一个有效的世界 (注意大小写)"
block_list_item: " $1%mat%$2,"
need_biome: "$2你需要指定一个生物群落"
biome_set_to: "$2地皮的生物群落设置为 $2"
teleported_to_plot: "$2你传送到了地皮中"
teleport_in_seconds: "$1将在 %s 秒内传送. 请勿移动..."
deubg_header: "$1调试信息"
not_valid_block: "$2这不是一个有效的方块."
not_valid_number: "$2这不是一个有效的数字"
no_such_plot: "$2没有该类型的地皮"
found_no_plots: "$2无法根据该要求查找地皮"
need_plot_number: "$2你需要指定一个地皮ID或别名"
need_block: "$你需要指定一种方块"
need_user: "$2你需要指定一个玩家"
plot_info_unclaimed: "$2地皮 $1%s$2 还未被领取"
plot_info_header: "$3====== $1INFO $3======"
plot_info: "$1ID: $2%id%$1&-$1别名: $2%alias%$1&-$1拥有者: $2%owner%$1&-$1生物群落: $2%biome%$1&-$1可否建筑: $2%build%$1&-$1评分: $2%rating%$1/$210$1&-$1帮手: $2%helpers%$1&-$1可信玩家: $2%trusted%$1&-$1黑名单: $2%denied%$1&-$1标识: $2%flags%"
plot_info_trusted: "$1可信玩家:$2 %trusted%"
plot_info_denied: "$1黑名单玩家:$2 %denied%"
plot_info_flags: "$1标识:$2 %flags%"
plot_info_biome: "$1生物群落:$2 %biome%"
plot_info_rating: "$1评分:$2 %rating%"
plot_info_owner: "$1拥有者:$2 %owner%"
plot_info_id: "$1ID:$2 %id%"
plot_info_alias: "$1别名:$2 %alias%"
plot_info_size: "$1大小:$2 %size%"
plot_user_list: " $1%user%$2,"
info_syntax_console: "$2/plot info <世界名称> X;Y"
clearing_plot: "$2清理地皮中."
plot_is_claimed: "$2这块地皮已被领取"
plot_list_header_paged: "$2(页数 $1%cur$2/$1%max$2) $1列出了 %word% 块地皮"
plot_list_header: "$11列出了 %word% 块地皮"
plot_list_item_ordered: "$2[$1%in$2] >> $1%id$2:$1%world $2- $1%owner"
left_plot: "$2你离开了地皮"
wait_for_timer: "$2设置方块计时器已启用. 请稍后..."
plot_chat_format: "$2[$1地皮聊天$2][$1%plot_id%$2] $1%sender%$2: $1%msg%"
denied_added: "$4你成功为地皮加入了黑名单玩家"
was_not_denied: "$2你这玩家不在黑名单中"
need_on_off: "$2你需要指定一个参数. 可用的参数: $1on$2, $1off"
flag_key: "$2关键字: %s"
flag_desc: "$2描述: %s"
not_valid_value: "$2标识的参数必须为数字"
flag_not_in_plot: "$2这块地皮还没有设置标识 26"
helper_removed: "$4你成功为地皮移除了帮手"
helper_need_argument: "$2缺少参数. $1/plot helpers add <玩家名称> $2或 $1/plot helpers remove <玩家名称>"
was_not_added: "$2这个玩家还没有成为该地皮的帮手"
already_added: "$2这个玩家已经加入了该分组."
trusted_added: "$4你成功为地皮加入了可信玩家"
trusted_need_argument: "$2缺少参数. $1/plot trusted add <玩家名称> $2或 $1/plot trusted remove <玩家名称>"
t_was_not_added: "$2这个玩家还没有成为该地皮的可信玩家"
set_owner: "$4你成功为地皮设置了拥有者"
now_owner: "$4你现在成为地皮 %s 的拥有者了"
help_category: "$1分类: $2%category%$2,$1 页数: $2%current%$3/$2%max%$2,$1 已显示: $2%dis%$3/$2%total%"
help_info: "$3====== $1选择一个分类 $3======"
help_info_item: "$1/plots help %category% $3- $2%category_desc%"
direction: "$1当前方向: %dir%"
custom_string: "-"