diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md
index d764dddf..9efd8478 100644
--- a/ISSUE_TEMPLATE.md
+++ b/ISSUE_TEMPLATE.md
@@ -1,4 +1,5 @@
-# Bug report
+# Bug report for FastAsyncWorldEdit < 1.12.2
+
@@ -13,7 +14,8 @@
**Checklist**:
+- [] I made sure that I'm using FAWE on 1.12.2 or lower
- [] I included a `/fawe debugpaste` link
- [] I made sure there aren't duplicates of this report [(Use Search)](https://github.com/boy0001/FastAsyncWorldedit/issues?utf8=%E2%9C%93&q=is%3Aissue)
-- [] I made sure I am using an up-to-date version of FAWE
-- [] I Made sure the bug/error is not caused by any other plugin
\ No newline at end of file
+- [] I made sure I am using an up-to-date version of [FAWE < 1.12.2](https://ci.athion.net/job/FastAsyncWorldEdit/)
+- [] I made sure the bug/error is not caused by any other plugin
diff --git a/README.md b/README.md
index 30d1a716..2727f830 100644
--- a/README.md
+++ b/README.md
@@ -4,17 +4,31 @@
---
+# Report bugs and issues regarding 1.13 [here](https://github.com/IntellectualSites/FastAsyncWorldEdit-1.13/issues/new) after ensuring there isn't already an issue like that.
Do NOT do that in this repository!
+
FAWE is a fork of WorldEdit that has huge speed and memory improvements and considerably more features
It is available for Bukkit, Forge, Sponge and Nukkit.
-## Chat
-### - **`> `**[`Discord`](https://discord.gg/ngZCzbU)`|`[`IRC`](http://webchat.esper.net/?nick=&channels=IntellectualCrafters)` | `[`Spigot Forums`](https://www.spigotmc.org/threads/fast-async-worldedit.100104/)**` <`**
+## Links
-## Releases
+* [Spigot Page](https://www.spigotmc.org/threads/fast-async-worldedit.100104/)
+* [Discord](https://discord.gg/ngZCzbU)
+* [Wiki](https://github.com/boy0001/FastAsyncWorldedit/wiki)
-### - [**`> Download <`**](https://empcraft.com/fawe/download/)
-### - [**`> Jenkins <`**](https://ci.athion.net/job/FastAsyncWorldEdit/)
+## Downloads
+### <1.12.2
+* [Download](https://incendo.org/download/)
+* [Jenkins](https://ci.athion.net/job/FastAsyncWorldEdit/)
+
+### 1.13+
+* [Download](https://incendo.org/download/)
+* [Jenkins](https://ci.athion.net/job/FastAsyncWorldEdit-1.13/)
+* [Repository](https://github.com/IntellectualSites/FastAsyncWorldEdit-1.13)
+
+## Developer Resources
+* [Maven Repo](http://ci.athion.net/job/FastAsyncWorldEdit/ws/mvn/)
+* [API Documentation](https://github.com/boy0001/FastAsyncWorldedit/wiki/API)
## Building
FAWE uses gradle to build
@@ -28,4 +42,4 @@ $ gradlew build
Have an idea for an optimization, or a cool feature?
- I'll accept most PR's
- Let me know what you've tested / what may need further testing
- - If you need any help, create a ticket or discuss on Discord
+ - If you need any help, create a ticket or discuss on [Discord](https://discord.gg/ngZCzbU)
diff --git a/build.gradle b/build.gradle
index 8e08b294..6a45f2dc 100644
--- a/build.gradle
+++ b/build.gradle
@@ -34,7 +34,7 @@ ext {
date = git.head().date.format("yy.MM.dd")
revision = "-${git.head().abbreviatedId}"
parents = git.head().parentIds;
- index = -96; // Offset to match CI
+ index = -91; // Offset to match CI
int major, minor, patch;
major = minor = patch = 0;
for (; parents != null && !parents.isEmpty(); index++) {
@@ -99,7 +99,8 @@ subprojects {
maven {url "http://repo.dmulloy2.net/content/groups/public/"}
maven {url "https://repo.destroystokyo.com/repository/maven-public//"}
maven {url "http://ci.emc.gs/nexus/content/groups/aikar/" }
- maven {url "http://ci.athion.net/job/PlotSquared/ws/mvn/"}
+ maven {url "http://ci.athion.net/job/PlotSquared-Legacy/ws/mvn/"}
+ mavenLocal()
maven {url "http://empcraft.com/maven2"}
maven {url "https://hub.spigotmc.org/nexus/content/groups/public/"}
maven {url "http://maven.sk89q.com/repo/"}
@@ -107,7 +108,7 @@ subprojects {
maven {url "http://ci.frostcast.net/plugin/repository/everything"}
maven {url "http://maven.sk89q.com/artifactory/repo"}
maven {url "http://repo.spongepowered.org/maven"}
- maven {url "https://repo.inventivetalent.org/content/groups/public/"}
maven {url "http://dl.bintray.com/tastybento/maven-repo"}
+ maven {url "https://repo.inventivetalent.org/content/groups/public/"}
}
}
diff --git a/bukkit/build.gradle b/bukkit/build.gradle
index 9e602560..35762a85 100644
--- a/bukkit/build.gradle
+++ b/bukkit/build.gradle
@@ -31,7 +31,7 @@ dependencies {
compile 'org.bukkit.craftbukkit:CraftBukkit:1.8.8'
compile 'com.comphenix.protocol:ProtocolLib-API:4.4.0-SNAPSHOT'
compile 'com.wasteofplastic:askyblock:3.0.8.2'
- compile('org.inventivetalent:mapmanager:1.4.0-SNAPSHOT') {
+ compile('org.inventivetalent:mapmanager:1.7.2-SNAPSHOT') {
transitive = false
}
}
diff --git a/bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java b/bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java
index 5daf09a6..a1e4b84b 100644
--- a/bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java
+++ b/bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java
@@ -348,11 +348,11 @@ public class FaweBukkit implements IFawe, Listener {
public String getDebugInfo() {
StringBuilder msg = new StringBuilder();
List pl = new ArrayList<>();
+ msg.append("server.version: " + Bukkit.getVersion() + " / " + Bukkit.getBukkitVersion() + "\n");
msg.append("server.plugins: \n");
for (Plugin p : Bukkit.getPluginManager().getPlugins()) {
msg.append(" - " + p.getName() + ": " + p.getDescription().getVersion() + "\n");
}
- msg.append("server.version: " + Bukkit.getVersion() + " / " + Bukkit.getBukkitVersion() + "\n");
return msg.toString();
}
diff --git a/core/build.gradle b/core/build.gradle
index 6faf5292..4a25f039 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -1,5 +1,6 @@
repositories {
flatDir {dirs 'lib'}
+ maven {url "http://ci.athion.net/job/PlotSquared-Legacy/ws/mvn/"}
}
dependencies {
testCompile 'junit:junit:4.12'
diff --git a/core/src/main/java/com/boydti/fawe/Fawe.java b/core/src/main/java/com/boydti/fawe/Fawe.java
index 194d0f53..ec56c20f 100644
--- a/core/src/main/java/com/boydti/fawe/Fawe.java
+++ b/core/src/main/java/com/boydti/fawe/Fawe.java
@@ -433,6 +433,7 @@ public class Fawe {
MainUtil.copyFile(MainUtil.getJarFile(), "nl/message.yml", null);
MainUtil.copyFile(MainUtil.getJarFile(), "fr/message.yml", null);
MainUtil.copyFile(MainUtil.getJarFile(), "cn/message.yml", null);
+ MainUtil.copyFile(MainUtil.getJarFile(), "it/message.yml", null);
// Setting up config.yml
File file = new File(this.IMP.getDirectory(), "config.yml");
Settings.IMP.PLATFORM = IMP.getPlatform().replace("\"", "");
@@ -642,7 +643,7 @@ public class Fawe {
debug(" - AsyncWorldEdit/WorldEditRegions isn't installed");
debug(" - Any other errors in the startup log");
debug("Contact Empire92 if you need assistance:");
- debug(" - Send me a PM or ask on IRC/Discord");
+ debug(" - Send me a PM or ask on Discord");
debug(" - https://discord.gg/ngZCzbU");
debug("=======================================");
}
diff --git a/core/src/main/java/com/boydti/fawe/config/BBC.java b/core/src/main/java/com/boydti/fawe/config/BBC.java
index f3057892..0a4e5813 100644
--- a/core/src/main/java/com/boydti/fawe/config/BBC.java
+++ b/core/src/main/java/com/boydti/fawe/config/BBC.java
@@ -146,7 +146,6 @@ public enum BBC {
BRUSH_TRANSFORM("Brush transform set", "WorldEdit.Brush"),
BRUSH_MATERIAL("Brush material set", "WorldEdit.Brush"),
-
ROLLBACK_ELEMENT("Undoing %s0", "WorldEdit.Rollback"),
TOOL_INSPECT("Inspect tool bound to %s0.", "WorldEdit.Tool"),
diff --git a/core/src/main/java/com/boydti/fawe/config/Settings.java b/core/src/main/java/com/boydti/fawe/config/Settings.java
index 35a4967a..4cb4268e 100644
--- a/core/src/main/java/com/boydti/fawe/config/Settings.java
+++ b/core/src/main/java/com/boydti/fawe/config/Settings.java
@@ -23,7 +23,7 @@ public class Settings extends Config {
@Final
public String PLATFORM; // These values are set from FAWE before loading
- @Comment({"Options: cn, de, es, fr, nl, ru, tr",
+ @Comment({"Options: cn, de, es, fr, it, nl, ru, tr",
"Create a PR to contribute a translation: https://github.com/boy0001/FastAsyncWorldedit/new/master/core/src/main/resources",})
public String LANGUAGE = "";
@Comment({"Enable or disable automatic updates",
diff --git a/core/src/main/java/com/boydti/fawe/installer/InstallerFrame.java b/core/src/main/java/com/boydti/fawe/installer/InstallerFrame.java
index 818926a9..ffc1f610 100644
--- a/core/src/main/java/com/boydti/fawe/installer/InstallerFrame.java
+++ b/core/src/main/java/com/boydti/fawe/installer/InstallerFrame.java
@@ -160,7 +160,7 @@ public class InstallerFrame extends JFrame {
} catch (Throwable ignore) {
ignore.printStackTrace();
}
- URL chat = new URL("http://webchat.esper.net/?nick=&channels=IntellectualCrafters&fg_color=000&fg_sec_color=000&bg_color=FFF");
+ URL chat = new URL("https://discord.gg/ngZCzbU");
URLButton chatButton = new URLButton(chat, "Chat");
bottomBar.add(chatButton);
URL wiki = new URL("https://github.com/boy0001/FastAsyncWorldedit/wiki");
diff --git a/core/src/main/java/com/boydti/fawe/util/HastebinUtility.java b/core/src/main/java/com/boydti/fawe/util/HastebinUtility.java
deleted file mode 100644
index c844082b..00000000
--- a/core/src/main/java/com/boydti/fawe/util/HastebinUtility.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package com.boydti.fawe.util;
-
-import com.boydti.fawe.Fawe;
-import java.io.BufferedReader;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class HastebinUtility {
-
- public static final String BIN_URL = "https://hastebin.com/documents", USER_AGENT = "Mozilla/5.0";
- public static final Pattern PATTERN = Pattern.compile("\\{\"key\":\"([\\S\\s]*)\"\\}");
-
- public static String upload(final String string) throws IOException {
- final URL url = new URL(BIN_URL);
- final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-
- connection.setRequestMethod("POST");
- connection.setRequestProperty("User-Agent", USER_AGENT);
- connection.setDoOutput(true);
-
- try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) {
- outputStream.write(string.getBytes());
- outputStream.flush();
- }
-
- StringBuilder response;
- try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
- response = new StringBuilder();
-
- String inputLine;
- while ((inputLine = in.readLine()) != null) {
- response.append(inputLine);
- }
- }
-
- Matcher matcher = PATTERN.matcher(response.toString());
- if (matcher.matches()) {
- return "https://hastebin.com/" + matcher.group(1);
- } else {
- throw new RuntimeException("Couldn't read response!");
- }
- }
-
- public static String upload(final File file) throws IOException {
- final StringBuilder content = new StringBuilder();
- List lines = new ArrayList<>();
- try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
- String line;
- int i = 0;
- while ((line = reader.readLine()) != null) {
- lines.add(line);
- }
- }
- for (int i = Math.max(0, lines.size() - 1000); i < lines.size(); i++) {
- content.append(lines.get(i)).append("\n");
- }
- return upload(content.toString());
- }
-
- public static String debugPaste() throws IOException {
- String settingsYML = HastebinUtility.upload(new File(Fawe.imp().getDirectory(), "config.yml"));
- String messagesYML = HastebinUtility.upload(new File(Fawe.imp().getDirectory(), "message.yml"));
- String commandsYML = HastebinUtility.upload(new File(Fawe.imp().getDirectory(), "commands.yml"));
- String latestLOG;
- try {
- latestLOG = HastebinUtility.upload(new File(Fawe.imp().getDirectory(), "../../logs/latest.log"));
- } catch (IOException ignored) {
- latestLOG = "too big :(";
- }
- StringBuilder b = new StringBuilder();
- b.append(
- "# Welcome to this paste\n# It is meant to provide us at IntellectualSites with better information about your "
- + "problem\n\n# We will start with some informational files\n");
- b.append("links.config_yml: ").append(settingsYML).append('\n');
- b.append("links.messages_yml: ").append(messagesYML).append('\n');
- b.append("links.commands_yml: ").append(commandsYML).append('\n');
- b.append("links.latest_log: ").append(latestLOG).append('\n');
- b.append("\n# Server Information\n");
- b.append("server.platform: ").append(Fawe.imp().getPlatform()).append('\n');
- b.append(Fawe.imp().getDebugInfo()).append('\n');
- b.append("\n\n# YAY! Now, let's see what we can find in your JVM\n");
- Runtime runtime = Runtime.getRuntime();
- b.append("memory.free: ").append(runtime.freeMemory()).append('\n');
- b.append("memory.max: ").append(runtime.maxMemory()).append('\n');
- b.append("java.specification.version: '").append(System.getProperty("java.specification.version")).append("'\n");
- b.append("java.vendor: '").append(System.getProperty("java.vendor")).append("'\n");
- b.append("java.version: '").append(System.getProperty("java.version")).append("'\n");
- b.append("os.arch: '").append(System.getProperty("os.arch")).append("'\n");
- b.append("os.name: '").append(System.getProperty("os.name")).append("'\n");
- b.append("os.version: '").append(System.getProperty("os.version")).append("'\n\n");
- b.append("# Okay :D Great. You are now ready to create your bug report!");
- b.append("\n# You can do so at https://github.com/boy0001/FastAsyncWorldedit/issues");
-
- String link = HastebinUtility.upload(b.toString());
- return link;
- }
-
-}
diff --git a/core/src/main/java/com/boydti/fawe/util/IncendoPaster.java b/core/src/main/java/com/boydti/fawe/util/IncendoPaster.java
new file mode 100644
index 00000000..c88449f5
--- /dev/null
+++ b/core/src/main/java/com/boydti/fawe/util/IncendoPaster.java
@@ -0,0 +1,259 @@
+package com.boydti.fawe.util;
+
+import com.boydti.fawe.Fawe;
+import com.google.common.base.Charsets;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+import java.nio.file.Files;
+import java.util.*;
+
+/**
+ * Single class paster for the Incendo paste service
+ *
+ * @author Sauilitired
+ */
+@SuppressWarnings({"unused", "WeakerAccess"})
+public final class IncendoPaster {
+
+ /**
+ * Upload service URL
+ */
+ public static final String UPLOAD_PATH = "https://incendo.org/paste/upload";
+ /**
+ * Valid paste applications
+ */
+ public static final Collection
+ VALID_APPLICATIONS = Arrays
+ .asList("plotsquared", "fastasyncworldedit", "incendopermissions", "kvantum");
+
+ private final Collection files = new ArrayList<>();
+ private final String pasteApplication;
+
+ /**
+ * Construct a new paster
+ *
+ * @param pasteApplication The application that is sending the paste
+ */
+ public IncendoPaster(final String pasteApplication) {
+ if (pasteApplication == null || pasteApplication.isEmpty()) {
+ throw new IllegalArgumentException("paste application cannot be null, nor empty");
+ }
+ if (!VALID_APPLICATIONS.contains(pasteApplication.toLowerCase(Locale.ENGLISH))) {
+ throw new IllegalArgumentException(
+ String.format("Unknown application name: %s", pasteApplication));
+ }
+ this.pasteApplication = pasteApplication;
+ }
+
+ /**
+ * Get an immutable collection containing all the files that have been added to this paster
+ *
+ * @return Unmodifiable collection
+ */
+ public final Collection getFiles() {
+ return Collections.unmodifiableCollection(this.files);
+ }
+
+ /**
+ * Add a file to the paster
+ *
+ * @param file File to paste
+ */
+ public void addFile(final PasteFile file) {
+ if (file == null) {
+ throw new IllegalArgumentException("File cannot be null");
+ }
+ // Check to see that no duplicate files are submitted
+ for (final PasteFile pasteFile : this.files) {
+ if (pasteFile.fileName.equalsIgnoreCase(file.getFileName())) {
+ throw new IllegalArgumentException(String.format("Found duplicate file with name %s",
+ file.getFileName()));
+ }
+ }
+ this.files.add(file);
+ }
+
+ /**
+ * Create a JSON string from the submitted information
+ *
+ * @return compiled JSON string
+ */
+ private String toJsonString() {
+ final StringBuilder builder = new StringBuilder("{\n");
+ builder.append("\"paste_application\": \"").append(this.pasteApplication).append("\",\n\"files\": \"");
+ Iterator fileIterator = this.files.iterator();
+ while (fileIterator.hasNext()) {
+ final PasteFile file = fileIterator.next();
+ builder.append(file.getFileName());
+ if (fileIterator.hasNext()) {
+ builder.append(",");
+ }
+ }
+ builder.append("\",\n");
+ fileIterator = this.files.iterator();
+ while (fileIterator.hasNext()) {
+ final PasteFile file = fileIterator.next();
+ builder.append("\"file-").append(file.getFileName()).append("\": \"")
+ .append(file.getContent().replaceAll("\"", "\\\\\"")).append("\"");
+ if (fileIterator.hasNext()) {
+ builder.append(",\n");
+ }
+ }
+ builder.append("\n}");
+ return builder.toString();
+ }
+
+ /**
+ * Upload the paste and return the status message
+ *
+ * @return Status message
+ * @throws Throwable any and all exceptions
+ */
+ public final String upload() throws Throwable {
+ final URL url = new URL(UPLOAD_PATH);
+ final URLConnection connection = url.openConnection();
+ final HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
+ httpURLConnection.setRequestMethod("POST");
+ httpURLConnection.setDoOutput(true);
+ final byte[] content = toJsonString().getBytes(Charsets.UTF_8);
+ httpURLConnection.setFixedLengthStreamingMode(content.length);
+ httpURLConnection.setRequestProperty("Content-Type", "application/json");
+ httpURLConnection.setRequestProperty("Accept", "*/*");
+ httpURLConnection.connect();
+ try (final OutputStream stream = httpURLConnection.getOutputStream()) {
+ stream.write(content);
+ }
+ if (!httpURLConnection.getResponseMessage().contains("OK")) {
+ throw new IllegalStateException(String.format("Server returned status: %d %s",
+ httpURLConnection.getResponseCode(), httpURLConnection.getResponseMessage()));
+ }
+ final StringBuilder input = new StringBuilder();
+ try (final BufferedReader inputStream = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()))) {
+ String line;
+ while ((line = inputStream.readLine()) != null) {
+ input.append(line).append("\n");
+ }
+ }
+ return input.toString();
+ }
+
+ /**
+ * Simple class that represents a paste file
+ */
+ public static class PasteFile {
+
+ private final String fileName;
+ private final String content;
+
+ /**
+ * Construct a new paste file
+ *
+ * @param fileName File name, cannot be empty, nor null
+ * @param content File content, cannot be empty, nor null
+ */
+ public PasteFile(final String fileName, final String content) {
+ if (fileName == null || fileName.isEmpty()) {
+ throw new IllegalArgumentException("file name cannot be null, nor empty");
+ }
+ if (content == null || content.isEmpty()) {
+ throw new IllegalArgumentException("content cannot be null, nor empty");
+ }
+ this.fileName = fileName;
+ this.content = content;
+ }
+
+ /**
+ * Get the file name
+ *
+ * @return File name
+ */
+ public String getFileName() {
+ return this.fileName;
+ }
+
+ /**
+ * Get the file content as a single string
+ *
+ * @return File content
+ */
+ public String getContent() {
+ return this.content;
+ }
+ }
+
+ public static String debugPaste() throws IOException {
+ final IncendoPaster incendoPaster = new IncendoPaster("fastasyncworldedit");
+
+ StringBuilder b = new StringBuilder();
+ b.append(
+ "# Welcome to this paste\n# It is meant to provide us at IntellectualSites with better information about your "
+ + "problem\n");
+ b.append("\n# Server Information\n");
+ b.append(Fawe.imp().getDebugInfo()).append('\n');
+ b.append("\n\n# YAY! Now, let's see what we can find in your JVM\n");
+ Runtime runtime = Runtime.getRuntime();
+ b.append("memory.free: ").append(runtime.freeMemory()).append('\n');
+ b.append("memory.max: ").append(runtime.maxMemory()).append('\n');
+ b.append("java.specification.version: '").append(System.getProperty("java.specification.version")).append("'\n");
+ b.append("java.vendor: '").append(System.getProperty("java.vendor")).append("'\n");
+ b.append("java.version: '").append(System.getProperty("java.version")).append("'\n");
+ b.append("os.arch: '").append(System.getProperty("os.arch")).append("'\n");
+ b.append("os.name: '").append(System.getProperty("os.name")).append("'\n");
+ b.append("os.version: '").append(System.getProperty("os.version")).append("'\n\n");
+ b.append("# Okay :D Great. You are now ready to create your bug report!");
+ b.append("\n# You can do so at https://github.com/boy0001/FastAsyncWorldedit/issues");
+ b.append("\n# or via our Discord at https://discord.gg/ngZCzbU");
+ incendoPaster.addFile(new IncendoPaster.PasteFile("information", b.toString()));
+
+ try {
+ final File logFile = new File(Fawe.imp().getDirectory(), "../../logs/latest.log");
+ final String file;
+ if (Files.size(logFile.toPath()) > 14_000_000) {
+ file = "too big :(";
+ } else {
+ file = readFile(logFile);
+ }
+ incendoPaster.addFile(new IncendoPaster.PasteFile("latest.log", file));
+ } catch (IOException ignored) {
+ }
+
+ incendoPaster.addFile(new PasteFile("config.yml", readFile(new File(Fawe.imp().getDirectory(), "config.yml"))));
+ incendoPaster.addFile(new PasteFile("message.yml", readFile(new File(Fawe.imp().getDirectory(), "message.yml"))));
+
+ final String rawResponse;
+ try {
+ rawResponse = incendoPaster.upload();
+ } catch (Throwable throwable) {
+ throw new IOException(String.format("Failed to create the debug paste: %s", throwable.getMessage()), throwable);
+ }
+ final JsonObject jsonObject = new JsonParser().parse(rawResponse).getAsJsonObject();
+
+ if (jsonObject.has("created")) {
+ final String pasteId = jsonObject.get("paste_id").getAsString();
+ return String.format("https://incendo.org/paste/view/%s", pasteId);
+ } else {
+ throw new IOException(String.format("Failed to create the debug paste: %s",
+ jsonObject.get("response").getAsString()));
+ }
+ }
+
+ private static String readFile(final File file) throws IOException {
+ final StringBuilder content = new StringBuilder();
+ final List lines = new ArrayList<>();
+ try (final BufferedReader reader = new BufferedReader(new FileReader(file))) {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ lines.add(line);
+ }
+ }
+ for (int i = Math.max(0, lines.size() - 1000); i < lines.size(); i++) {
+ content.append(lines.get(i)).append("\n");
+ }
+ return content.toString();
+ }
+}
diff --git a/core/src/main/java/com/sk89q/worldedit/command/BrushCommands.java b/core/src/main/java/com/sk89q/worldedit/command/BrushCommands.java
index 68e636dc..c9090e86 100644
--- a/core/src/main/java/com/sk89q/worldedit/command/BrushCommands.java
+++ b/core/src/main/java/com/sk89q/worldedit/command/BrushCommands.java
@@ -745,7 +745,7 @@ public class BrushCommands extends BrushProcessor {
private BrushSettings terrainBrush(Player player, LocalSession session, Expression radius, String image, int rotation, double yscale, boolean flat, boolean randomRotate, boolean layers, boolean smooth, ScalableHeightMap.Shape shape, CommandContext context) throws WorldEditException, FileNotFoundException, ParameterException {
checkMaxBrushRadius(radius);
- InputStream stream = image == null ? null : getHeightmapStream(image);
+ InputStream stream = (image == null || image.equalsIgnoreCase("null") || image.equalsIgnoreCase("#clipboard")) ? null : getHeightmapStream(image);
HeightBrush brush;
if (flat) {
try {
diff --git a/core/src/main/java/com/sk89q/worldedit/command/UtilityCommands.java b/core/src/main/java/com/sk89q/worldedit/command/UtilityCommands.java
index 8e9c35e6..2f7ab942 100644
--- a/core/src/main/java/com/sk89q/worldedit/command/UtilityCommands.java
+++ b/core/src/main/java/com/sk89q/worldedit/command/UtilityCommands.java
@@ -349,6 +349,7 @@ public class UtilityCommands extends MethodCommands {
@Logging(PLACEMENT)
public void removeNear(Player player, LocalSession session, EditSession editSession, BaseBlock block, @Optional("50") double size) throws WorldEditException {
worldEdit.checkMaxRadius(size);
+ size = Math.max(1, size);
int affected = editSession.removeNear(session.getPlacementPosition(player), block.getId(), (int) size);
player.print(BBC.getPrefix() + affected + " block(s) have been removed.");
}
diff --git a/core/src/main/java/com/sk89q/worldedit/command/WorldEditCommands.java b/core/src/main/java/com/sk89q/worldedit/command/WorldEditCommands.java
index 819a2df0..c4a6a9f6 100644
--- a/core/src/main/java/com/sk89q/worldedit/command/WorldEditCommands.java
+++ b/core/src/main/java/com/sk89q/worldedit/command/WorldEditCommands.java
@@ -24,10 +24,7 @@ import com.boydti.fawe.FaweVersion;
import com.boydti.fawe.config.BBC;
import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.FawePlayer;
-import com.boydti.fawe.util.HastebinUtility;
-import com.boydti.fawe.util.StringMan;
-import com.boydti.fawe.util.TaskManager;
-import com.boydti.fawe.util.Updater;
+import com.boydti.fawe.util.*;
import com.sk89q.minecraft.util.commands.Command;
import com.sk89q.minecraft.util.commands.CommandContext;
import com.sk89q.minecraft.util.commands.CommandPermissions;
@@ -185,13 +182,13 @@ public class WorldEditCommands {
@Command(
aliases = {"debugpaste"},
usage = "",
- desc = "Upload debug information to hastebin.com",
+ desc = "Upload latest.log, config.yml and your message.yml to https://incendo.org",
min = 0,
max = 0
)
@CommandPermissions("worldedit.debugpaste")
public void debugpaste(Actor actor) throws WorldEditException, IOException {
- BBC.DOWNLOAD_LINK.send(actor, HastebinUtility.debugPaste());
+ BBC.DOWNLOAD_LINK.send(actor, IncendoPaster.debugPaste());
}
@Command(
diff --git a/core/src/main/resources/cn/message.yml b/core/src/main/resources/cn/message.yml
index 1942945d..e82fb25d 100644
--- a/core/src/main/resources/cn/message.yml
+++ b/core/src/main/resources/cn/message.yml
@@ -1,306 +1,336 @@
-#BY:Green_Chennai
-#MCBBS ID:ww2498010071
-#来源第#1217号编译文件
-#2018年10月14日 08:44:53进行过第7次更新
+# 原译者:Green_Chennai (MCBBS: ww2498010071)
+# 2018年12月11日 10:25:15 进行过第8次更新
+
+# 佛壁灯于 2018年12月10日 21:24:35 (UTC+8) 大幅改进翻译质量
+
+# Green_Chennai在2018年12月11日 10:31:43第8次更新时修改由佛壁灯改进翻译后的不协调
+# 请勿将 'FAWE' 进行翻译
+
info:
prefix: '&8(&4&lFAWE&8)&r&7'
file_deleted: '%s0 已被删除.'
- schematic_pasting: '&7原理图粘贴. 这不能被撤消.'
- lighting_propogate_selection: '&7照明已经传播 %s0 个区块.(注意:去除光线使用//removelight)'
- updated_lighting_selection: '&7照明已更新 %s0 个区块. (它可能会为数据包发送一秒钟)'
- set_region: '&7选择设置为您当前允许的区域'
- worldedit_command_limit: '&7请等待您当前的操作完成'
- worldedit_delayed: '&7我们处理您的FAWE操作请稍候...'
- worldedit_run: '&7:为延误道歉 现在执行 %s'
+ schematic_pasting: '&7正在粘贴布局.此操作无法撤销.'
+ lighting_propogate_selection: '&7光照已在 %s0 个区块内传播.(注:你可使用 //removelight 移除)'
+ updated_lighting_selection: '&7已更新 %s0 个区块内的光照.(数据包可能要稍后发出)'
+ set_region: '&7选择区域已设置为你当前允许的区域'
+ worldedit_command_limit: '&7请等待完成你的当前操作'
+ worldedit_delayed: '&7正在处理你的FAWE操作,请稍后···'
+ worldedit_run: '&7抱歉造成延误,现正执行 %s'
worldedit_complete: '&7编辑完成.'
- require_selection_in_mask: '&7%s 你的选择不在你的圈内. 您只能在允许的地区进行修改.'
- worldedit_volume: '&7你不能选择%current%的块.最大你可以修改是 %max%.'
- worldedit_iterations: '&7您不能重复%current%次. 允许的最大的次数是 %max%.'
- worldedit_unsafe: '&7访问该命令已被阻止'
- worldedit_dangerous_worldedit: '&c已处理不安全编辑 %s0 一共 %s1'
+ require_selection_in_mask: '&7你选中的 %s 不在蒙版内.你只能在允许的区域内编辑.'
+ worldedit_volume: '&7你不能选择 %current% 大小的区域.所允许的最大区域为 %max%.'
+ worldedit_iterations: '&7你不能重复 %current% 次.所允许的最多重复为 %max% 次.'
+ file_deleted: '%s0 已被删除。'
+ schematic_pasting: '&7正在粘贴布局。此操作无法撤销。'
+ lighting_propogate_selection: '&7光照已在 %s0 个区块内传播。(注:您可使用 //removelight 移除)'
+ updated_lighting_selection: '&7已更新 %s0 个区块内的光照。(数据包可能要稍后发出)'
+ set_region: '&7选择区域已设置为您当前允许的区域'
+ worldedit_command_limit: '&7请等待完成您的当前操作'
+ worldedit_delayed: '&7正在处理您的快异创世操作,请稍后···'
+ worldedit_run: '&7很抱歉造成延误,现正执行 %s'
+ worldedit_complete: '&7编辑完成。'
+ require_selection_in_mask: '&7您选中的 %s 不在蒙版内。您只能在允许的区域内编辑。'
+ worldedit_volume: '&7您不能选择 %current% 大小的区域。所允许的最大区域为 %max%。'
+ worldedit_iterations: '&7您不能重复 %current% 次。所允许的最多重复为 %max% 次。'
+ worldedit_unsafe: '&7已阻止对此命令的访问'
+ worldedit_dangerous_worldedit: '&c%s1 在 %s0 处进行了不安全的编辑'
worldedit_toggle_tips_on: '&7已禁用FAWE提示.'
worldedit_toggle_tips_off: '&7已启用FAWE提示.'
- worldedit_bypassed: '&7FAWE启用提示.'
- worldedit_unmasked: '&6FAWE的版本更新已经开启.'
- worldedit_restricted: '&6您的FAWE版本更新已关闭.'
+
+ worldedit_bypassed: '&7正绕过FAWE限制.'
+ worldedit_unmasked: '&6你的FAWE编辑现已不受限制.'
+
+ worldedit_restricted: '&6你的FAWE编辑现正受限制.'
worldedit_oom_admin: |-
- &c可以选择的选项:
+ &c可选项:
&8 - &7//fast
- &8 - &7做小编辑
+ &8 - &7进行小编辑
&8 - &7分配更多内存
&8 - &7禁用 `max-memory-percent`
- compressed: 修改历史压缩保存 %s0b (%s1x小)
- action_complete: '保存完成,耗时 %s0 秒 '
+ compressed: '已压缩历史.保存为 ~ %s0b(%s1 倍原大小)'
+ action_complete: '已在 %s0 秒内完成操作'
+
error:
- worldedit_extend: '&c你的WorldEdit编辑超出了允许的范围.'
- web_unauthorized: :只允许从配置的Web主机的链接 %s0
+ worldedit_extend: '&c你的编辑可能已超过所允许的范围.'
+ web_unauthorized: '仅允许来自已配置网页主机的链接: %s0'
command_syntax: '&c用法: &7%s0'
- no_perm: '&c您缺少权限: %s0'
- setting_disable: '&c缺乏设置: %s0'
- brush_not_found: '&c可用刷子: %s0'
- brush_incompatible: '&c刷子不兼容此版本'
- schematic_not_found: '&c没有找到原理图: &7%s0'
- no_region: '&c你没有当前区域的修改权限'
- no_mask: '&c你没有当前的掩码集'
- not_player: '&c你必须是执行此操作的玩家!'
+ no_perm: '&c你缺少权限节点: %s0'
+ setting_disable: '&c缺少设置: %s0'
+ brush_not_found: '&c可用画笔: %s0'
+ brush_incompatible: '&c画笔与此版本不兼容'
+ schematic_not_found: '&c未找到布局: &7%s0'
+ no_region: '&c你当前没有允许修改的区域'
+ no_mask: '&c你当前没有蒙版集'
+ not_player: '&c你必须为玩家才能执行此操作!'
player_not_found: '&c玩家未找到:&7 %s0'
oom: |-
- &8[&c系统提示&8] &c检测到可用内存 < 1%. 系统将采取以下行动:
- &8 - &7结束方块的WE定位
- &8 - &7删除WE的历史记录
- &8 - &7预卸不需要的区块
+ &8[&c致命错误&8] &c系统检测到可用内存 < 1%.我们将执行下列操作:
+ &8 - &7终止创世的方块放置
+ &8 - &7清除创世历史
+ &8 - &7卸载无用区块
&8 - &7杀死实体
- &8 - &7运行系统内存垃圾收集器
- &c如果您尝试使服务器崩溃,请忽略此项
- &7注意:内存不足可能(但不一定)由WE引起
- worldedit_some_fails: '&c%s0 无法放置方块,因为你没有该区域的权限'
+ &8 - &7收集垃圾
+ &c若你正尝试使服务器崩溃,请忽略此消息
+ &7注:低内存可能但不一定由创世导致
+ worldedit_some_fails: '&c%s0 个方块由于在你所允许的区域外而无法放置.'
worldedit_some_fails_blockbag: '&c缺少方块: %s0'
+
web:
- generating_link: '上传中%s请稍候...'
- generating_link_failed: '&c无法生成下载链接!'
+ generating_link: '正在上传 %s,请稍后···'
+ generating_link_failed: '&c生成下载链接失败!'
download_link: '%s'
+
worldedit:
general:
- mask_disabled: 全局掩码禁用
- mask: 全局掩码集
- source_mask_disabled: 全局源掩码禁用
- source_mask: 全局源掩码集
- transform_disabled: 全局变换被禁用
- transform: 全局变换集
- fast_enabled: 启用快速模式,这不会保存操作,并取消放置限制.
- fast_disabled: 快速模式禁用
- place_enabled: '现在放在位置 #1.'
- place_disabled: 现在,在你站的位置开始放置方块.
+ mask_disabled: 已禁用全局蒙版
+ mask: 已设置全局蒙版
+ texture_disabled: 已重置纹理
+ texture_set: 已设置纹理为 %s1
+ source_mask_disabled: 已禁用全局源蒙版
+ source_mask: 已设置全局源蒙版
+ transform_disabled: 已禁用全局变形
+ transform: 已设置全局变形
+ fast_enabled: 已启用快速模式.历史及编辑将不受限制.
+ fast_disabled: 已禁用快速模式
+ place_enabled: '放置于位置 #1.'
+ place_disabled: 放置于你所站的方块.
+
copy:
- command_copy: '%s0 块被复制.'
+ command_copy: '已复制 %s0 个方块.'
cut:
- command_cut_slow: '%s0 个方块被复制.'
- command_cut_lazy: '%s0 个方块被剪切'
+ command_cut_slow: '已剪切 %s0 个方块.'
+ command_cut_lazy: '%s0 个方块将在粘贴时被移除'
paste:
- command_paste: 拷贝方块已粘贴在 %s0
+ command_paste: 已粘贴剪贴板内容在 %s0
rotate:
- command_rotate: 拷贝方块已被旋转
+ command_rotate: 已旋转剪贴板内容
flip:
- command_flipped: 拷贝方块已被翻转
+ command_flipped: 已翻转剪贴板内容
regen:
- command_regen_0: |-
- 区域再生.
- 生物群落 /regen [biome]
- command_regen_1: |-
- 区域再生.
- 使用种子 /regen [biome] [seed]
- command_regen_2: 区域再生.
+ command_regen_0: 已重新生成区域.
+ command_regen_1: 已重新生成区域.
+ command_regen_2: 已重新生成区域.
tree:
- command_tree: '%s0 创建树.'
- command_pumpkin: '%s0 创建南瓜.'
+ command_tree: '已生成 %s0 棵树木.'
+ command_pumpkin: '已生成 %s0 个南瓜.'
flora:
- command_flora: '%s0 植物创建.'
+ command_flora: '已生成 %s0 棵植物.'
history:
- command_history_clear: 历史记录清除
- command_redo_error: 无复原. (查看使用/inspect` 和 `/frb`)
- command_history_other_error: 无法找到会话 %s0.
- command_redo_success: 复原成功.
- command_undo_error: 无撤销. (查看使用/inspect` 和 `/frb`)
- command_undo_success: 撤消成功.
+ command_history_clear: 已清除历史记录
+ command_redo_error: 无可重做项.(请使用 `/inspect` 或 `/frb` 查看)
+ command_history_other_error: 无法找到 %s0 的会话.
+ command_redo_success: 重做成功%s0.
+ command_undo_error: 无可撤销项.(请使用 `/inspect` 或 `/frb` 查看)
+ command_undo_success: 撤消成功%s0.
operation:
- operation: 放置方块 (%s0)
+ operation: 操作已进入队列 (%s0)
selection:
- selection_wand: ' 左键单击:选择点 #1; 右键单击:选择点 #2'
- selection_wand_disable: 小木斧禁用
- selection_wand_enable: 小木斧启用
- selection_chunk: 选中了块 (%s0)
- selection_chunks: 块被选中 (%s0) - (%s1)
- selection_contract: 选中区域共 %s0 块.
- selection_count: 算 %s0 块.
- selection_distr: '#总块数: %s0'
+ selection_wand: '左击: 选择位置 #1;右击:选择位置 #2'
+ selection_wand_disable: 已禁用编辑手杖.
+ selection_wand_enable: 已启用编辑手杖.
+ selection_chunk: 已选中区块 (%s0)
+ selection_chunks: 已选中区块 (%s0) - (%s1)
+ selection_contract: 区域已缩小 %s0 个方块.
+ selection_count: 共计 %s0 块.
+ selection_distr: '# 方块总数: %s0'
selection_expand: 地区扩大%s0 块
- selection_expand_vert: 地区扩大 %s0 快 (从上到下)
- selection_inset: 区域插图
- selection_outset: 区域开始
- selection_shift: 地区转移
- selection_cleared: 选择区域清除
+ selection_expand_vert: 区域已增大 %s0 个方块.(从上到下)
+ selection_inset: 已插入区域
+ selection_outset: 已移出区域
+ selection_shift: 已移动区域
+ selection_cleared: 已清除选择
navigation:
- navigation_wand_error: '&c什么都没有'
+ navigation_wand_error: '&c无可传递项'
anvil:
- world_is_loaded: 执行时不应该使用世界.卸载世界,或使用-f来覆盖 (请先保存)
+ world_is_loaded: 执行操作时世界不能被占用.请先卸载世界,或使用 -f 标记覆盖(请先保存)
brush:
- brush_reset: 重置你的画笔
- brush_none: 你没有拿着画笔!
- brush_scroll_action_set: 将滚动操作设置为 %s0
- brush_scroll_action_unset: 去除了扫荡动作
- brush_visual_mode_set: 设置视觉模式 %s0
- brush_target_mode_set: 将目标模式设置为 %s0
- brush_target_mask_set: 将目标掩码设置为 %s0
+ brush_reset: 重置你的画笔.(SHIFT + 单击)
+ brush_none: 你未拿画笔!
+ brush_scroll_action_set: 已设置滚动操作至 %s0
+ brush_scroll_action_unset: 已移除滚动操作
+ brush_visual_mode_set: 已设置可视模式为 %s0
+ brush_target_mode_set: 已设置目标模式为 %s0
+ brush_target_mask_set: 已设置目标蒙版为 %s0
brush_target_offset_set: 设置目的地偏移量 %s0
- brush_equipped: 装备刷 %s0
+ brush_equipped: 已装备画笔 %s0
brush_try_other: |-
- &c还有其他更合适的画笔,例如.
- &8 - &7//br height [半径=5] [#剪贴板|文件=null] [旋转=0] [yscale=1.00]
- brush_copy: 左键单击要复制的对象的基础.右键单击粘贴.如果需要.可以增加刷子半径.
- brush_height_invalid: 无效的高度图文件 (%s0)
- brush_smooth: 注意:如果要平滑悬垂或洞穴,请使用混合刷.
- brush_spline: 点击添加点,点击相同的地方完成
- brush_line_primary: 添加点%s0,单击另一个位置创建行
- brush_line_secondary: 创造的pline
- brush_spline_primary_2: 添加位置,点击相同的地方加入!
- brush_spline_secondary_error: 设置不够的位置!
- brush_spline_secondary: 创建一个凹槽
- brush_size: 刷子尺寸设置
- brush_range: 刷子尺寸设置
- brush_mask_disabled: 刷子遮罩禁用
- brush_mask: 刷子套装
- brush_source_mask_disabled: 画笔源掩码禁用
- brush_source_mask: 画笔源掩码启用
- brush_transform_disabled: 刷子变换禁用
- brush_transform: 刷子变换集
- brush_material: 刷子材料集
+ &c 还有其他画笔可用,如:
+ &8 - &7//br height [半径=5] [#剪贴板|文件=null] [旋转=0] [纵坐标=1.00]
+ brush_copy: 左击要复制的对象,右击粘贴.你可增加画笔半径.
+ brush_height_invalid: 高度图文件无效 (%s0)
+ brush_smooth: '注:你可用混合刷使凸起与洞穴处变得平滑.'
+ brush_spline: 点击添加点,请点击相同点完成
+ brush_line_primary: 已添加点 %s0,请点击其他位置以创建线条
+ brush_catenary_direction: 已添加点 %s0,请点击要创建样条曲线的方向
+ brush_line_secondary: 已创建样条曲线
+ brush_spline_primary_2: 已添加位置,请点击相同点合并!
+ brush_spline_secondary_error: 位置集不足!
+ brush_spline_secondary: 已创建样条曲线
+ brush_size: 已设置画笔尺寸
+ brush_range: 已设置画笔尺寸
+ brush_mask_disabled: 已禁用画笔蒙版
+ brush_mask: 已设置画笔蒙版
+ brush_source_mask_disabled: 已禁用画笔源蒙版
+ brush_source_mask: 已设置画笔源蒙版
+ brush_transform_disabled: 已禁用画笔变形
+ brush_transform: 已设置画笔变形
+ brush_material: 已设置画笔材料
rollback:
- rollback_element: 撤消 %s0
+ rollback_element: 正在撤消 %s0
tool:
- tool_inspect: 检查工具绑定到 %s0.
- tool_inspect_info: '&7%s0 变 %s1 到 %s2 %s3 前'
- tool_inspect_info_footer: '&6总: &7%s0变化'
- tool_none: 工具与您当前的项目未绑定.
- tool_info: 信息工具绑定到 %s0.
- tool_tree: 树工具绑定到 %s0.
- tool_tree_error: 树型 %s0 是未知数.
- tool_repl: 块替代工具绑定到 %s0.
- tool_cycler: 阻止数据循环仪工具绑定到 %s0.
- tool_flood_fill: 封闭洪水填充工具绑定到 %s0.
+ tool_inspect: 已绑定检查工具至 %s0.
+ tool_inspect_info: '&7%s0 在 %s3 前将 %s1 更改为 %s2'
+ tool_inspect_info_footer: '&6共计: &7%s0 处更改'
+ tool_none: 工具已从你的当前物品上解绑.
+ tool_info: 已绑定信息工具至 %s0.
+ tool_tree: 已绑定造树工具至 %s0.
+ tool_tree_error: 树型 %s0 未知.
+ tool_repl: 已绑定方块替换工具至 %s0.
+ tool_cycler: 已绑定方块数据循环工具至 %s0.
+ tool_flood_fill: 已绑定方块洪水填充工具至 %s0.
tool_range_error: '最大范围: %s0.'
- tool_radius_error: '最大允许刷半径: %s0.'
- tool_deltree: 浮动清除工具绑定到 %s0.
- tool_farwand: 远棒工具绑定到 %s0.
- tool_lrbuild_bound: 远程建筑工具绑定 %s0.
- tool_lrbuild_info: 左键单击设置为 %s0; 右键单击设置 %s1.
- superpickaxe_enabled: 超级镐启用.
- superpickaxe_disabled: 超级镐禁用.
- superpickaxe_area_enabled: 模式已更改.左键单击一个镐. // to disable.
+ tool_radius_error: '最大画笔半径: %s0.'
+ tool_deltree: 已绑定漂树移除工具至 %s0.
+ tool_farwand: 已绑定远程手杖至 %s0.
+ tool_lrbuild_bound: 已绑定远程建筑工具至 %s0.
+ tool_lrbuild_info: 已设置左击为 %s0; 已设置右击为 %s1.
+ superpickaxe_enabled: 已启用超级稿子.
+ superpickaxe_disabled: 已禁用超级稿子.
+ superpickaxe_area_enabled: 已更改模式.请使用稿子左击,使用 // 禁用此功能.
snapshot:
- snapshot_loaded: '%s0 装;现在恢复...'
- snapshot_set: '快照设置为: %s0'
- snapshot_newest: 现在使用最新的快照.
+ snapshot_loaded: '已载入快照 %s0 ;正在恢复···'
+ snapshot_set: '已设置快照为: %s0'
+ snapshot_newest: 正使用最新版快照.
snapshot_list_header: '世界快照 (%s0):'
- snapshot_list_footer: 使用 /snap use [快照] 或者 /snap use latest.
+ snapshot_list_footer: 请使用 /snap use [快照] 或 /snap use latest.
biome:
- biome_list_header: '生物群系 (页 %s0/%s1):'
- biome_changed: 生物改变了 %s0 列.
+ biome_list_header: '生态群系 (页 %s0/%s1):'
+ biome_changed: 已更改 %s0 列中的生态群系.
utility:
- kill_success: '%s0 半径的实体 %s1.'
- nothing_confirmed: 你没有任何行动等待确认.
- page_footer: 使用 %s0 去下一页
+ kill_success: '已击杀半径 %s0 内的 %s1 个实体.'
+ nothing_confirmed: 你没有待确认的操作.
+ page_footer: 请使用 %s0 前往下一页
schematic:
- schematic_format: 可用格式 (名称:查找名称)
- schematic_loaded: '%s0 加载.粘贴它 //paste'
- schematic_saved: '%s0 保存.'
- schematic_page: 页必须 %s
- schematic_none: 找不到文件.
- schematic_list: '可用文件 (文件名:格式) [%s0/%s1]:'
+ schematic_prompt_clear: '&7你可能需先使用 &c%s0 &7来清除剪贴板'
+ schematic_show: |-
+ &7正在显示来自 &a%s1&7 的 &a%s0&7 个原理图:
+ &8 - &a左击&7将结构复制到你的剪贴板
+ &8 - &a右击&7将结构添加到多重剪贴板
+ &8 - &7使用 &a%s2&7 回到原世界
+ schematic_format: '可用格式 (名称: 搜索名称)'
+ schematic_loaded: '已加载 %s0.请使用 //paste 粘贴'
+ schematic_saved: '已保存 %s0.'
+ schematic_page: 页数必须为 %s
+ schematic_none: 未找到文件.
+ schematic_list: '可用文件 (文件名: 格式) [%s0/%s1]:'
schematic_list_elem: '&8 - &a%s0 &8- &7%s1'
+ schematic_move_exists: '&c%s0 已存在'
+ schematic_move_success: '&a%s0 -> %s1'
+ schematic_move_failed: '&a%s0 未移动: %s1'
clipboard:
- clipboard_cleared: 剪贴板已清除
- clipboard_invalid_format: '未知的剪贴板格式: %s0'
- clipboard_uri_not_found: 你没有加载 %s0
+ clipboard_cleared: 已清除剪贴板
+ clipboard_invalid_format: '未知剪贴板格式: %s0'
+ clipboard_uri_not_found: 你尚未加载 %s0
visitor:
- visitor_block: '%s0 受影响的区块'
- visitor_entity: '%s0 受影响的实体'
- visitor_flat: '%s0 受影响的列'
+ visitor_block: '共影响 %s0 个方块'
+ visitor_entity: '共影响 %s0 个实体'
+ visitor_flat: '共影响 %s0 列'
selector:
- selector_fuzzy_pos1: 区域设置和扩展 %s0 %s1.
- selector_fuzzy_pos2: 增加扩充 %s0 %s1.
- selector_invalid_coordinates: 坐标无效 %s0
- selector_already_set: 位置已经确立.
- selector_set_default: 现在是默认的区域选择器 %s0.
- selector_pos: '&a设置点 &b[&f%s0&b] &f为坐标 &b%s1 &a选择的方块&c[%s2]&a个'
- selector_center: 中心确定为 &8%s0 (%s1).
- selector_radius: 无线设置为 &8%s0 (%s1).
- selector_expanded: 扩大区域为 &(%s0 (%s1)
+ selector_fuzzy_pos1: 已从 %s0 %s1 处设置并扩展区域.
+ selector_fuzzy_pos2: 已添加 %s0 %s1 的扩展区域.
+ selector_invalid_coordinates: 坐标 %s0 无效
+ selector_already_set: 已设置位置.
+ selector_set_default: 你的默认区域选择器已更改为 %s0.
+ selector_pos: '已设置点 %s0 在 %s1 选择方块共 (%s2) 个'
+ selector_center: 已设置中心为 %s0 (%s1).
+ selector_radius: 已设置半径为 %s0 (%s1).
+ selector_expanded: 已扩大区域至 %s0 (%s1)
timezone:
- timezone_set: '为此会话设置的时区: %s0'
- timezone_display: '该时区当前的时间是: %s0'
+ timezone_set: '已为此会话设置时区至: %s0'
+ timezone_display: '此时区的当前时间为: %s0'
command:
- command_invalid_syntax: 该命令未正确使用 (没有更多的帮助可用).
+ command_invalid_syntax: 命令使用有误 (无帮助可用).
help:
- command_clarifying_bracket: '&7添加支架 &c%s0'
- help_suggest: '&7没找到 %s0.也许尝试其中之一 &c%s1 &7?'
+ command_clarifying_bracket: '&7已为 &c%s0 &7添加阐述括号'
+ help_suggest: '&7无法找到 %s0.试试 &c%s1 &7吗?'
help_header_categories: 命令类型
help_header_subcommands: 子命令
- help_header_command: '&chelp: &7%s0'
+ help_header_command: '&7%s0 &c帮助'
help_item_allowed: '&a%s0&8 - &7%s1'
help_item_denied: '&c%s0&8 - &7%s1'
- help_header: '帮助: 页数 %s0/%s1'
- help_footer: '&7维基Wiki: https://git.io/vSKE5'
+ help_header: '帮助: 页 %s0/%s1'
+ help_footer: '&7维基页面: https://git.io/vSKE5'
progress:
- progress_message: '%s1/%s0 (%s2%) @%s3cps %s4s之后完成'
+ progress_message: '剩余 %s1/%s0 (%s2%) @%s3cps %s4s'
progress_finished: '[ 完成! ]'
cancel:
- worldedit_cancel_count: '&c取消 %s0 编辑.'
- worldedit_cancel_reason_confirm: '&7你的选择区域很大(%s0 -> %s1)使用 &c//confirm&7确定执行 &c%s2'
- worldedit_cancel_reason: '&c您的WorldEdit操作已取消:&7 %s0&c.'
- worldedit_cancel_reason_manual: '已手动取消'
- worldedit_cancel_reason_low_memory: '磁盘空间不足'
- worldedit_cancel_reason_max_changes: '太多方块更改了'
- worldedit_cancel_reason_max_checks: '块检查太多'
- worldedit_cancel_reason_max_tiles: '封锁太多了'
- worldedit_cancel_reason_max_entities: '实体太多'
- worldedit_cancel_reason_max_iterations: '最大重复次数'
- worldedit_cancel_reason_no_region: 使用 /wea来解除限制, 或设置`region-restrictions`选项为false在config.yml内
- worldedit_failed_load_chunk: '&4忽略方块的变化: &7%s0;%s1&c. 尝试增加方块的队列.'
- worldedit_cancel_reason_outside_level: '外界'
- worldedit_cancel_reason_outside_region: 使用 /wea来解除限制, 或设置`region-restrictions`选项为false在config.yml内
+ worldedit_cancel_count: '&c已取消 %s0 次编辑.'
+ worldedit_cancel_reason_confirm: '&7你的选择区域过大 (&c%s0 &7-> &c%s1&7,内有 &c%s3&7 个方块).请使用 &c//confirm &7继续执行 &c%s2'
+ worldedit_cancel_reason: '&c已取消你的创世操作:&7 %s0&c.'
+ worldedit_cancel_reason_manual: 手动取消
+ worldedit_cancel_reason_low_memory: 内存不足
+ worldedit_cancel_reason_max_changes: 方块更改过多
+ worldedit_cancel_reason_max_checks: 方块检查过多
+ worldedit_cancel_reason_max_tiles: 方块状态过多
+ worldedit_cancel_reason_max_entities: 实体过多
+ worldedit_cancel_reason_max_iterations: 最大重复次数
+ worldedit_cancel_reason_no_region: 无权限编辑区域 (请使用 /wea 绕过限制,或在 config.yml 中禁用 `region-restrictions`)
+ worldedit_failed_load_chunk: '&c已跳过区块载入: &7%s0;%s1&c.请尝试增加区块等待时长'
+ worldedit_cancel_reason_outside_level: 世界外
+ worldedit_cancel_reason_outside_region: 在允许编辑的区域外 (请使用 /wea 绕过限制,或在 config.yml 中禁用 `region-restrictions`)
navigation:
- ascend_fail: 没有找到你上方的空位.
- ascended_plural: 上升 %s0 格.
- ascended_singular: 向上移动一格.
- unstuck: 现在应该会更好
- descend_fail: 没有你找到的免费地点.
- descend_plural: 下降 %s0 水平.
- descend_singular: 降低了一个水平.
+ ascend_fail: 你上方无空位.
+ ascended_plural: 已上升 %s0 格.
+ ascended_singular: 已向上移动一层.
+ unstuck: 起飞了!
+ descend_fail: 你下方无空位.
+ descend_plural: 已下降 %s0 格.
+ descend_singular: 已向下移动一层.
whoosh: 嗖!
- poof: 噗!
- thru_fail: 没有找到可以放下你的空位.
- no_block: 没有方块目标或者是太远了
- up_fail: 你会碰到方块.
+ poof: 啪!
+ thru_fail: 你前方无空位.
+ no_block: '视野内无方块!(或距离过远)'
+ up_fail: 你将碰到上方的物体.
selection:
- sel_cuboid: Cuboid:左键点 1, 右键点 2
- sel_cuboid_extend: Cuboid:左键单击起始点,右键单击扩展
- sel_2d_polygon: 2D多边形选择器:左/右点击添加一个点.
- sel_ellipsiod: 椭圆选择器:左键=中心,右键单击扩展
- sel_sphere: 球体选择器:左击=中心,右键单击设置半径
- sel_cylindrical: 圆柱选择器:左击=中心,右键单击扩展.
- sel_max: '%s0 最高点数.'
- sel_fuzzy: 模糊选择器:左键单击以选择所有或有块,右键单击添加.要选择一个空气腔,请使用 //pos1.
- sel_convex_polyhedral: 凸多边形选择器:左键=第一个顶点,右键单击以添加更多.
- sel_list: 有关选择类型的列表使用:&c //sel list
- sel_modes: '选择以下模式之一:'
+ sel_cuboid: '立方体: 左击点 1, 右击点 2'
+ sel_cuboid_extend: '立方体: 左击起始点, 右击扩大'
+ sel_2d_polygon: '2D 多边形选择器: 左/右点击添加点.'
+ sel_ellipsiod: '椭圆体选择器: 左击选定中心,右击扩大'
+ sel_sphere: '球体选择器: 左击选定中心,右击设置半径'
+ sel_cylindrical: '圆柱选择器: 左击选定中心,右击扩大'
+ sel_max: '可选择至多 %s0 个点.'
+ sel_fuzzy: '模糊选择器: 左击选择所有可能的方块,右击添加.要选择气腔,请使用 //pos1.'
+ sel_convex_polyhedral: '凸多面体选择器: 左击选择首个顶点,右击选择更多顶点.'
+ sel_list: '要查看选择类型列表,请使用: &c//sel list'
+ sel_modes: '请选择下列模式之一:'
tips:
- tip_sel_list: 提示:请参阅不同的选择模式 &c//sel list
- tip_select_connected: 提示:选择所有连接的块 //sel fuzzy
- tip_set_pos1: '提示: 使用pos1作为模式 &c//set pos1'
- tip_farwand: '提示: 选择不同的点 &c//farwand'
- tip_lazycut: '&7提示: 使用更安全 &c//lazycut'
- tip_fast: '&7提示: 快速设置,不使用撤消 &c//fast'
- tip_cancel: '&7提示: 您可以 &c//cancel &7正在进行编辑'
- tip_mask: '&7提示: 设置全局目标掩码 &c/gmask'
- tip_mask_angle: '提示: 更换向上的斜坡在 3-20 块使用&c //replace /[-20][-3]bedrock'
- tip_set_linear: '&7提示: 设置块线性&c //set #l3d[wood,bedrock]'
- tip_surface_spread: '&7提示: 用平面展开&c //set #surfacespread[5][0][5][#existing]'
- tip_set_hand: '&7提示: 用你当前的手 &c//set hand'
- tip_replace_id: '&7提示: 只替换块ID:&c //replace woodenstair #id[cobblestair]'
- tip_replace_light: '提示: 用光源去除&c //replace #brightness[1][15]0'
- tip_tab_complete: '提示: 替换命令支持选项卡完成'
- tip_flip: '提示: 镜子与 &c//flip'
- tip_deform: '提示: 重塑与 &c//deform'
- tip_transform: '提示: 设置转换 &c//gtransform'
- tip_copypaste: '提示: 粘贴点击 &c//br copypaste'
- tip_source_mask: '提示: 设置源掩码 &c/gsmask &7'
- tip_replace_marker: '提示: 使用完整的剪贴板替换一个块 &c//replace wool #fullcopy'
- tip_paste: '提示: 与地方 &c//paste'
- tip_lazycopy: '提示: lazycopy更快'
- tip_download: '提示: 试用 &c//download'
- tip_rotate: '提示: 定位与 &c//rotate'
- tip_copy_pattern: '提示: 用作模式尝试 &c#copy'
- tip_regen_0: '提示: 使用生物群 /regen [biome]'
- tip_regen_1: '提示: 用一个种子 /regen [biome] [seed]'
- tip_biome_pattern: '提示: 这个 &c#biome:forest&7 模式可以在任何命令中使用'
- tip_biome_mask: '提示: 限制一个生物群 `$jungle` 面具'
+ tip_sel_list: '提示: 请使用 &c//sel list &7查看不同的选择模式'
+ tip_select_connected: '提示: 请使用 //sel fuzzy 选择所有连接为一体的方块'
+ tip_set_pos1: '提示: 请使用 &c//set pos1 &7将点 1 作为样式'
+ tip_farwand: '提示: 请使用 &c//farwand &7选择远方的点'
+ tip_lazycut: '&7提示: 使用 &c//lazycut &7更为安全'
+ tip_fast: '&7提示: 请使用 &c//fast &7在不撤销的情况下快速放置方块'
+ tip_cancel: '&7提示: 你可使用 &c//cancel &7取消进行中的编辑'
+ tip_mask: '&7提示: 请使用 &c/gmask &7设置全局终点蒙版'
+ tip_mask_angle: '提示: 请使用 &c//replace /[-20][-3] bedrock &7替换 3-20 个方块的上坡'
+ tip_set_linear: '&7提示: 请使用 &c//set #l3d[wood,bedrock] &7线性放置方块'
+ tip_surface_spread: '&7提示: 请使用 &c//set #surfacespread[5][0][5][#existing] &7进行平面展开'
+ tip_set_hand: '&7提示: 请使用 &c//set hand &7来使用你的手'
+ tip_replace_id: '&7提示: 请使用 &c//replace woodenstair #编号[石台阶] &7来仅替换方块编号'
+ tip_replace_light: '提示: 请使用 &c//replace #brightness[1][15] 0 &7来移除光源'
+ tip_tab_complete: '提示: 替换命令支持 Tab 键补全功能'
+ tip_flip: '提示: 请使用 &c//flip &7创建镜像'
+ tip_deform: '提示: 请使用 &c//deform &7重新塑形'
+ tip_transform: '提示: 请使用 &c//gtransform &7设置变形'
+ tip_copypaste: '提示: 请使用 &c//br copypaste &7在点击时粘贴'
+ tip_source_mask: '提示: 请使用 &c/gsmask <蒙版> &7来设置源蒙版'
+ tip_replace_marker: '提示: 请使用 &c//replace wool #fullcopy &7使用剪切板完全替换方块'
+ tip_paste: '提示: 请使用 &c//paste &7放置方块'
+ tip_lazycopy: '提示: lazycopy 的速度更为快捷'
+ tip_download: '提示: 来试试 &c//download'
+ tip_rotate: '提示: 请使用 &c//rotate &7确定方位'
+ tip_copy_pattern: '提示: 请使用 &c#copy &7来作为样式使用'
+ tip_regen_0: '提示: 使用 &c/regen [生态群系] &7来重新生成生态群系'
+ tip_regen_1: '提示: 使用 &c/regen [生态群系] [种子] &7来重新生成生态群系'
+ tip_biome_pattern: '提示: &c#biome[forest]&7 样式可用于任意命令中'
+ tip_biome_mask: '提示: 你可使用 `$jungle` 蒙版来限定生态群系'
diff --git a/core/src/main/resources/es/message.yml b/core/src/main/resources/es/message.yml
index 76094012..0e643a38 100644
--- a/core/src/main/resources/es/message.yml
+++ b/core/src/main/resources/es/message.yml
@@ -74,6 +74,8 @@ worldedit:
fast_disabled: Modo rápido inhabilitado.
place_enabled: 'Ahora colocando en pos #1.'
place_disabled: Ahora colocando en el bloque en el que estás.
+ texture_disabled: Reinicio de texturizado
+ texture_set: Establecer texturizado en %s1
copy:
command_copy: Se copiaron %s0 bloques.
cut:
@@ -158,6 +160,7 @@ worldedit:
brush_transform_disabled: Transformación de pincel desactivada
brush_transform: Conjunto de transformación de pincel
brush_material: Brush material set
+ brush_catenary_direction: Punto añadido %s0, Haga clic en la dirección que desee a la spline
rollback:
rollback_element: Deshacer %s0
tool:
@@ -202,10 +205,19 @@ worldedit:
schematic_none: No se han encontrado archivos.
schematic_list: 'Archivos disponibles (Filename: Format) [%s0/%s1]:'
schematic_list_elem: '&8 - &a%s0 &8- &7%s1'
+ schematic_prompt_clear: '&7Es posible que desee utilizar &c%s0 &7para borrar su actual primera'
+ schematic_show: |-
+ &7Mostrando &a%s0&7 esquemas de &a%s1&7:
+ &8 - &aClick izquierdo &7Una estructura para configurar tu portapapeles
+ &8 - &aBotón derecho del ratón &7para agregar una estructura a tu multipartículas
+ &8 - &7Utilizar &a%s2&7 para volver al mundo
+ schematic_move_exists: '&c%s0 ya existe'
+ schematic_move_success: '&a%s0 -> %s1'
+ schematic_move_failed: '&a%s0 no movido: %s1'
clipboard:
clipboard_cleared: Portapapeles despejado
clipboard_invalid_format: 'Formato del portapapeles desconocido: %s0'
- clipboard_uri_not_found: You do not have %s0 loaded
+ clipboard_uri_not_found: Usted no tiene %s0 cargado
visitor:
visitor_block: '%s0 bloques afectados'
visitor_entity: '%s0 entidades afectadas'
diff --git a/core/src/main/resources/it/message.yml b/core/src/main/resources/it/message.yml
index f8e891a6..c6b52da0 100644
--- a/core/src/main/resources/it/message.yml
+++ b/core/src/main/resources/it/message.yml
@@ -274,7 +274,7 @@ tips:
tip_fast: '&7Consiglio: Imposta velocemente e senza l''annullamento usando &c//fast'
tip_cancel: '&7Consiglio: Puoi cancellare con &c//cancel &7una modifica in corso'
tip_mask: '&7Consiglio: Imposta una maschera di destinazione globale con &c/gmask'
- tip_mask_angle: 'Consiglio: Sostituire le pendenze verso l'alto di 3-20 blocchi usando&c //replace /[-20][-3] bedrock'
+ tip_mask_angle: 'Consiglio: Sostituire le pendenze verso l''alto di 3-20 blocchi usando&c //replace /[-20][-3] bedrock'
tip_set_linear: '&7Consiglio: Imposta i blocchi linearmente con&c //set #l3d[wood,bedrock]'
tip_surface_spread: '&7Consiglio: Propaga una superficie piana con&c //set #surfacespread[5][0][5][#existing]'
tip_set_hand: '&7Consiglio: Usa la tua mano attuale con &c//set hand'
diff --git a/core/src/main/resources/ru/message.yml b/core/src/main/resources/ru/message.yml
index a56a58cb..24c112a1 100644
--- a/core/src/main/resources/ru/message.yml
+++ b/core/src/main/resources/ru/message.yml
@@ -21,7 +21,6 @@ info:
worldedit_unsafe: '&7Доступ к этой команде был заблокирован!'
worldedit_dangerous_worldedit: '&cFAWE обрабатывает небезопасный WorldEdit в %s0
на %s1'
- worldedit_bypass: '&7&oЧтобы обойти ваши ограничения используйте &c/wea'
worldedit_toggle_tips_on: '&7Советы WorldEdit &cвключены&7.'
worldedit_toggle_tips_off: '&7Советы WorldEdit &cвключены&7.'
worldedit_bypassed: '&7Обход ограничений WorldEdit &cвключен&7.'
@@ -59,6 +58,8 @@ error:
пределами вашего региона.'
worldedit_some_fails_blockbag: '&cНедостающие блоки: %s0'
web_unauthorized: 'Разрешены только ссылки с настроенного веб-хостинга: %s0'
+ brush_not_found: '&cДоступные кисти: %s0'
+ brush_incompatible: '&cКисть не совместима с этой версией'
web:
generating_link: Загрузка %s, пожалуйста подождите...
generating_link_failed: '&cНе удалось создать ссылку!'
@@ -75,6 +76,8 @@ worldedit:
fast_disabled: Быстрый режим отключен
place_enabled: 'Теперь размещение в позиции #1.'
place_disabled: Теперь размещение в блоке, на котором вы стоите.
+ texture_disabled: Сброс текстуры
+ texture_set: Установите текстурирование на %s1
copy:
command_copy: '%s0 блок(ов) скопировано.'
cut:
@@ -129,27 +132,16 @@ worldedit:
selection_cleared: Выделение очищено
brush:
brush_none: Вы не держите кисть!
- brush_butcher: Кисть мясника сформирована (%s0)
- brush_clipboard: Форма кисти буфера обемна сформирована
- brush_cylinder: Цилиндрическая форма кисти сформирована (%s0 по %s1).
- brush_extinguisher: Форма кисти огнерушения сформирована (%s0).
- brush_gravity: Кисть гравитации сформирована (%s0)
- brush_height: Кисть высоты сформирована (%s0)
brush_try_other: |-
&cFAWE добавляет другие, более подходящие кисти, например,
&8 - &7//br height [radius=5] [#clipboard|file=null] [rotation=0] [yscale=1.00]
- brush_copy: Кисть копирования сформирована (%s0). ПКМ по обьекту для копирования, ПКМ для вставки. При необходимости увеличьте радиус кисти.
- brush_command: Командная кисть сформирована (%s0)
+ brush_copy: Кисть копирования сформирована (%s0). ПКМ по обьекту для копирования,
+ ПКМ для вставки. При необходимости увеличьте радиус кисти.
brush_height_invalid: Неверная высота файла карты (%s0)
brush_smooth: Кисть сглаживания сформирована (%s0 x %s1 используя %s2).
- brush_sphere: Форма сферической кисти сформирована (%s0).
- brush_line: Форма кисти линий сформирована (%s0).
brush_spline: Форма кисти линий сформирована (%s0). ПКМ по концу, чтобы добавить форму
brush_spline_secondary_error: Не хватает установленных позиций!
brush_spline_secondary: Склеивание создано
- brush_blend_ball: Кисть смеси шара сформирована (%s0).
- brush_erode: Кисть разрушения сформирована (%s0).
- brush_recursive: Кисть рекурсии сформирована (%s0).
brush_size: Размер кисти установлен
brush_range: Размер кисти установлен
brush_mask_disabled: Маска кисти отключена
@@ -163,10 +155,14 @@ worldedit:
brush_visual_mode_set: Установлен визуальный режим для %s0
brush_target_mode_set: Установлен целевой режим для %s0
brush_spline_primary_2: Добавлена позиция, Нажмите на том же месте, чтобы присоединиться!
- brush_circle: Кисть создания круга оборудована (%s0). Щелкните правой кнопкой мыши, чтобы создать круг.
- brush_shatter: Форма разрешающей кисти сформирована (%s0, %s1).
- brush_stencil: Форма кисти по шаблону сформирована (%s0).
- brush_scatter: Форма кисти рассеивания сформирована (%s0, %s1).
+ brush_reset: Сбросьте кисть. (SHIFT + Click)
+ brush_scroll_action_unset: Удалено действие прокрутки
+ brush_target_mask_set: Установите целевую маску на %s0
+ brush_target_offset_set: Установите смещение цели на %s0
+ brush_equipped: Оборудованная кисть %s0
+ brush_line_primary: Добавленная точка %s0, нажмите другую позицию, чтобы создать линию
+ brush_catenary_direction: Добавленная точка %s0, нажмите другую позицию, чтобы создать сплайн
+ brush_line_secondary: Созданный сплайн
rollback:
rollback_element: Отмена %s0
tool:
@@ -196,9 +192,20 @@ worldedit:
schematic_page: Страница должна быть %s
schematic_none: Схематических фалов не найдено.
schematic_list: 'Доступные схематические файлы (Имя файла: Формат) [%s0/%s1]:'
+ schematic_prompt_clear: '&7Вы можете использовать &c%s0 &7очистить свой первый'
+ schematic_show: |-
+ &7Отображение &a%s0&7 схемы из &a%s1&7:
+ &8 - &aЩелчок левой кнопкой мыши &7структура для настройки вашего буфера обмена
+ &8 - &aЩелкните правойt кнопкой мыши &7добавить структуру в ваш мультибуфер
+ &8 - &7использование &a%s2&7 вернуться в мир
+ schematic_move_exists: '&c%s0 уже существует'
+ schematic_move_success: '&a%s0 -> %s1'
+ schematic_move_failed: '&a%s0 нет перемещенных: %s1'
+ schematic_list_elem: '&8 - &a%s0 &8- &7%s1'
clipboard:
clipboard_cleared: Буфер обмена очищен
clipboard_invalid_format: 'Неизвестный формат буфера обмена: %s0'
+ clipboard_uri_not_found: У тебя нет %s0 нагруженный
visitor:
visitor_block: '%s0 блок(ов) затронуто'
visitor_entity: '%s0 энтити затронуто'
@@ -206,11 +213,13 @@ worldedit:
selector:
selector_fuzzy_pos1: Регион установлен и расширен %s0 %s1.
selector_fuzzy_pos2: Добавлено расширение %s0 %s1.
- selector_cuboid_pos1: Первая точка установлена на %s0 %s1.
- selector_cuboid_pos2: Вторая точка установлена на %s0 %s1.
selector_invalid_coordinates: Неверные координаты %s0
selector_already_set: Позиция уже установлена.
selector_set_default: Ваш выбранный регион по умолчанию теперь %s0.
+ selector_pos: pos%s0 установлен в %s1 (%s2).
+ selector_center: Центр установлен на %s0 (%s1).
+ selector_radius: Радиус, установленный для %s0 (%s1).
+ selector_expanded: Расширенная область для %s0 (%s1)
command:
command_invalid_syntax: Команда не используется должным образом (нет больше помощи).
snapshot:
@@ -224,9 +233,25 @@ worldedit:
biome_changed: Биом был изменен в %s0 колонн.
utility:
kill_success: Убито %s0 энтити в радиусе %s1.
+ nothing_confirmed: У вас нет действий в ожидании подтверждения.
+ page_footer: использование %s0 to go to the next page
timezone:
timezone_set: 'Часовой пояс для этой сессии: %s0'
timezone_display: 'Текущее время в этом часовом поясе: %s0'
+ navigation:
+ navigation_wand_error: '&cНичто не может пройти'
+ anvil:
+ world_is_loaded: Мир не должен использоваться во время исполнения. Выгрузить или использовать -f переопределить (сохранить сначала)
+ help:
+ command_clarifying_bracket: '&7Added clarifying bracket for &c%s0'
+ help_suggest: '&7не мог найти %s0. Возможно, попробуйте один из &c%s1 &7?'
+ help_header_categories: Типы команд
+ help_header_subcommands: Подкоманды
+ help_header_command: '&cПомогите за: &7%s0'
+ help_item_allowed: '&a%s0&8 - &7%s1'
+ help_item_denied: '&c%s0&8 - &7%s1'
+ help_header: 'Помогите: страница %s0/%s1'
+ help_footer: '&7Wiki: https://git.io/vSKE5'
progress:
progress_message: '[ Очередь: %s0 | Отправляется: %s1 ]'
progress_finished: '[ Готово! ]'
@@ -240,10 +265,11 @@ cancel:
worldedit_cancel_reason_max_tiles: Слишком много blockstates
worldedit_cancel_reason_max_entities: Слишком много энтити
worldedit_cancel_reason_max_iterations: Максимальное количество итераций
- worldedit_cancel_reason_max_fails: Вне разрешенного региона (обход, используя /wea, или выключите `region-restrictions` в config.yml)
worldedit_cancel_reason_no_region: Нет разрешенного региона (обход, используя /wea, или выключите `region-restrictions` в config.yml)
- worldedit_failed_load_chunk: '&cПропущенные загруженные чанки: &7%s0;%s1&c. Попробуйте
- увеличить ожидание чанка.'
+ worldedit_failed_load_chunk: '&cПропущенные загруженные чанки: &7%s0;%s1&c. Попробуйте увеличить ожидание чанка.'
+ worldedit_cancel_reason_confirm: '&7Ваш выбор большой (&c%s0 &7-> &c%s1&7, содержащий &c%s3&7 блоки). использование &c//confirm &7выполнить &c%s2'
+ worldedit_cancel_reason_outside_level: внешний мир
+ worldedit_cancel_reason_outside_region: Вне допустимой области (обход с /wea, или отключить `region-restrictions` в config.yml)
history: {}
navigation:
ascend_fail: Свободного места над вами не найдено.
@@ -266,10 +292,8 @@ selection:
sel_sphere: 'Сферическое выделение: ЛКМ - центр, ПКМ для установки радиуса'
sel_cylindrical: 'Цилиндрическое выделение: ЛКМ - центр, ПКМ для расширения'
sel_max: '%s0 максимум точек.'
- sel_fuzzy: 'Нечеткое выделение: ЛКМ, чтобы выбрать все условные блоки, ПКМ, чтобы
- добавить'
- sel_convex_polyhedral: 'Выпуклое многогранное выделение: ЛКМ - первая вершина, ПКМ
- для добавления больше.'
+ sel_fuzzy: 'Нечеткое выделение: ЛКМ, чтобы выбрать все условные блоки, ПКМ, чтобы добавить'
+ sel_convex_polyhedral: 'Выпуклое многогранное выделение: ЛКМ - первая вершина, ПКМ для добавления больше.'
sel_list: Для получения списка типов выделения используйте:&c //sel list
sel_modes: 'Выберите один из перечисленных режимов ниже:'
tips:
@@ -280,37 +304,26 @@ tips:
tip_fast: '&7Совет: Установить быстро и без отмены, используя &c//fast'
tip_cancel: '&7Совет: Вы можете &c//cancel &7от изменений в процессе'
tip_mask: '&7Совет: Задайте маску глобального назначения - &c/gmask'
- tip_mask_angle: 'Совет: Заменить верхний слой 3-20 блоков -&c //replace /-20:-3
- bedrock'
+ tip_mask_angle: 'Совет: Заменить верхний слой 3-20 блоков -&c //replace /-20:-3 bedrock'
tip_set_linear: '&7Совет: Установка блоков -&c //set #l3d:wood,bedrock'
tip_surface_spread: '&7Совет: Распространение плоской поверхности -&c //set #surfacespread:5:0:5:#existing'
tip_set_hand: '&7Совет: Используйте свою текущую руку - &c//set hand'
tip_replace_id: '&7Совет: Заменить только ID блока -&c //replace woodenstair #id:cobblestair'
- tip_replace_light: 'Совет: Удалить источники света -&c //replace #brightness:1:15
- 0'
+ tip_replace_light: 'Совет: Удалить источники света -&c //replace #brightness:1:15 0'
tip_tab_complete: 'Совет: Команда replace поддерживает автозаполение'
tip_flip: 'Совет: Отобразить - &c//flip'
tip_deform: 'Совет: Изменить - &c//deform'
tip_transform: 'Совет: Установка преобразования - &c//gtransform'
tip_copypaste: 'Совет: Вставка по клику - &c//br copypaste'
tip_source_mask: 'Совет: Установить маску источника - &c/gsmask &7'
- tip_replace_marker: 'Совет: Замените блок с помощью полного буфера обмена - &c//replace
- wool #fullcopy'
+ tip_replace_marker: 'Совет: Замените блок с помощью полного буфера обмена - &c//replace wool #fullcopy'
tip_paste: 'Совет: Вставить - &c//paste'
tip_lazycopy: 'Совет: lazycopy быстрее'
tip_download: 'Совет: Попробовать - &c//download'
tip_rotate: 'Совет: Ориентация - &c//rotate'
tip_copy_pattern: 'Совет: Для использования шаблона используйте &c#copy'
- tip_brush_spline: '&7Совет: Команда &c//brush &7соединяет несколько фигур вместе'
- tip_brush_height: '&7Совет: Команда &c//brush &7плавно повышает или понижает ландшафт'
- tip_brush_copy: '&7Совет: Команда &c//brush &7позволяет легко копировать и вставлять
- объекты'
- tip_brush_mask: '&7Совет: Задайте маску назначения кисти - &c/mask'
- tip_brush_mask_source: '&7Совет: Задайте маску источника кисти - &c/smask'
- tip_brush_transform: '&7Совет: Установите кисть преобразования - &c/transform'
- tip_brush_relative: '&7Совет: Используйте шаблон относительного буфера обмена -
- //br sphere #~:#copy'
- tip_brush_command: '&7Совет: Попробуйте командную кисть - &c//br cmd '
tip_lazycut: '&7Совет: Это безопаснее использовать &c//lazycut'
tip_regen_0: 'Совет: Используйте биом - &c/regen [biome]'
tip_regen_1: 'Совет: Используйте сид - &c/regen [biome] [seed]'
+ tip_biome_pattern: 'Tip: The &c#biome[forest]&7 pattern can be used in any command'
+ tip_biome_mask: 'Tip: Restrict to a biome with the `$jungle` mask'
diff --git a/forge110/build.gradle b/forge110/build.gradle
index a7192f56..c01dd814 100644
--- a/forge110/build.gradle
+++ b/forge110/build.gradle
@@ -35,13 +35,13 @@ repositories {
name = "Sponge"
url = "https://repo.spongepowered.org/maven"
}
- maven {
- name = "Sponge Metrics"
- url = "http://repo.mcstats.org/content/repositories/releases/"
- }
+// maven {
+// name = "Sponge Metrics"
+// url = "http://repo.mcstats.org/content/repositories/releases/"
+// }
}
minecraft {
- version = "2014"
+ version = "1.10.2-12.18.3.2511"
mappings = "snapshot_20160629"
runDir = 'run'
}
diff --git a/forge111/build.gradle b/forge111/build.gradle
index 49b35d83..791901a4 100644
--- a/forge111/build.gradle
+++ b/forge111/build.gradle
@@ -35,10 +35,10 @@ repositories {
name = "Sponge"
url = "https://repo.spongepowered.org/maven"
}
- maven {
- name = "Sponge Metrics"
- url = "http://repo.mcstats.org/content/repositories/releases/"
- }
+// maven {
+// name = "Sponge Metrics"
+// url = "http://repo.mcstats.org/content/repositories/releases/"
+// }
}
minecraft {
version = "1.11-13.19.0.2157"
diff --git a/forge112/build.gradle b/forge112/build.gradle
index 6e44ecc6..0969693d 100644
--- a/forge112/build.gradle
+++ b/forge112/build.gradle
@@ -35,10 +35,10 @@ repositories {
name = "Sponge"
url = "https://repo.spongepowered.org/maven"
}
- maven {
- name = "Sponge Metrics"
- url = "http://repo.mcstats.org/content/repositories/releases/"
- }
+// maven {
+// name = "Sponge Metrics"
+// url = "http://repo.mcstats.org/content/repositories/releases/"
+// }
}
minecraft {
version = "1.12.2-14.23.0.2532"
diff --git a/forge1710/src/main/java/com/boydti/fawe/forge/FaweForge.java b/forge1710/src/main/java/com/boydti/fawe/forge/FaweForge.java
index d4188cce..55eb0d50 100644
--- a/forge1710/src/main/java/com/boydti/fawe/forge/FaweForge.java
+++ b/forge1710/src/main/java/com/boydti/fawe/forge/FaweForge.java
@@ -13,6 +13,7 @@ import com.boydti.fawe.util.TaskManager;
import com.boydti.fawe.wrappers.WorldWrapper;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.forge.ForgeWorld;
+import com.sk89q.worldedit.internal.LocalWorldAdapter;
import com.sk89q.worldedit.world.World;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.ModMetadata;
@@ -148,6 +149,8 @@ public class FaweForge implements IFawe {
e.printStackTrace();
return world.getName();
}
+ }else if (world instanceof LocalWorldAdapter){
+ return world.getName();
}
return getWorldName(((ForgeWorld) world).getWorld());
}
diff --git a/forge189/build.gradle b/forge189/build.gradle
index f998733c..824102b5 100644
--- a/forge189/build.gradle
+++ b/forge189/build.gradle
@@ -35,13 +35,13 @@ repositories {
name = "Sponge"
url = "https://repo.spongepowered.org/maven"
}
- maven {
- name = "Sponge Metrics"
- url = "http://repo.mcstats.org/content/repositories/releases/"
- }
+// maven {
+// name = "Sponge Metrics"
+// url = "http://repo.mcstats.org/content/repositories/releases/"
+// }
}
minecraft {
- version = "1855"
+ version = "1.8.9-11.15.1.1722"
mappings = "stable_22"
runDir = 'run'
}
diff --git a/forge194/build.gradle b/forge194/build.gradle
index f79586ad..9c5f4ff3 100644
--- a/forge194/build.gradle
+++ b/forge194/build.gradle
@@ -34,13 +34,13 @@ repositories {
name = "Sponge"
url = "https://repo.spongepowered.org/maven"
}
- maven {
- name = "Sponge Metrics"
- url = "http://repo.mcstats.org/content/repositories/releases/"
- }
+// maven {
+// name = "Sponge Metrics"
+// url = "http://repo.mcstats.org/content/repositories/releases/"
+// }
}
minecraft {
- version = "1965"
+ version = "1.9.4-12.17.0.2051"
mappings = "stable_26"
runDir = 'run'
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index b94fd677..005e1ee1 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Fri Jan 12 10:28:44 AEDT 2018
+#Tue Feb 26 14:36:53 CET 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/settings.gradle b/settings.gradle
index e1ede4ce..9342855c 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,3 @@
rootProject.name = 'FastAsyncWorldEdit'
-include 'core', 'bukkit', 'favs', 'nukkit', 'forge1710', 'forge189', 'forge194', 'forge110', 'forge111', 'sponge112', 'forge112', 'sponge111'
\ No newline at end of file
+include 'core', 'bukkit', 'favs', 'nukkit', 'forge189', 'forge194', 'forge110', 'forge111', 'forge112', 'sponge111', 'sponge112' // 'forge1710'
\ No newline at end of file
diff --git a/sponge111/build.gradle b/sponge111/build.gradle
index d63d5b7c..6af4a6ab 100644
--- a/sponge111/build.gradle
+++ b/sponge111/build.gradle
@@ -43,10 +43,10 @@ repositories {
name = "Sponge"
url = "https://repo.spongepowered.org/maven"
}
- maven {
- name = "Sponge Metrics"
- url = "http://repo.mcstats.org/content/repositories/releases/"
- }
+// maven {
+// name = "Sponge Metrics"
+// url = "http://repo.mcstats.org/content/repositories/releases/"
+// }
}
dependencies {
diff --git a/sponge112/build.gradle b/sponge112/build.gradle
index 9d1d6e70..6786d400 100644
--- a/sponge112/build.gradle
+++ b/sponge112/build.gradle
@@ -36,10 +36,10 @@ repositories {
name = "Sponge"
url = "https://repo.spongepowered.org/maven"
}
- maven {
- name = "Sponge Metrics"
- url = "http://repo.mcstats.org/content/repositories/releases/"
- }
+// maven {
+// name = "Sponge Metrics"
+// url = "http://repo.mcstats.org/content/repositories/releases/"
+// }
}
dependencies {