Merge remote-tracking branch 'upstream/1.16' into fixEntities

This commit is contained in:
Aurora 2020-08-16 17:01:45 +02:00
commit 3aa041aa7e
69 changed files with 815 additions and 4688 deletions

View File

@ -16,3 +16,34 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
Unknown LZ4 Java code
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
BufferedRandomAccessFile.java
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.
See the NOTICE file distributed with this work for additional information regarding
copyright ownership. The ASF licenses this file to you under the Apache License,
Version 2.0 ("License"); you may not use this file except in compliance with the License.
You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and limitations under the License.
SimplexNoise.java
Version 2012-03-09
This code was placed in the public domain by its original author, Stefan Gustavson. You may use it
as you see fit, but attribution is appreciated.

View File

@ -14,17 +14,18 @@ logger.lifecycle("""
Output files will be in [subproject]/build/libs Output files will be in [subproject]/build/libs
******************************************* *******************************************
""") """)
//TODO FIX THIS WHEN I FEEL LIKE IT //TODO FIX THIS WHEN I FEEL LIKE IT
var rootVersion = "1.16" var rootVersion by extra("1.16")
var revision: String = "" var revision: String by extra("")
var buildNumber = "" var buildNumber by extra("")
var date: String = "" var date: String by extra("")
ext { ext {
val git: Grgit = Grgit.open { val git: Grgit = Grgit.open {
dir = File("$rootDir/.git"); dir = File("$rootDir/.git");
} }
ext["date"] = git.head().dateTime.format(DateTimeFormatter.ofPattern("yy.MM.dd")); date = git.head().dateTime.format(DateTimeFormatter.ofPattern("yy.MM.dd"));
ext["revision"] = "-${git.head().abbreviatedId}"; revision = "-${git.head().abbreviatedId}";
var parents: MutableList<String>? = git.head().parentIds; var parents: MutableList<String>? = git.head().parentIds;
if (project.hasProperty("buildnumber")) { if (project.hasProperty("buildnumber")) {
buildNumber = project.properties["buildnumber"] as String; buildNumber = project.properties["buildnumber"] as String;
@ -48,6 +49,8 @@ allprojects {
version = String.format("%s-%s", rootVersion, buildNumber) version = String.format("%s-%s", rootVersion, buildNumber)
applyCommonConfiguration()
if (!project.hasProperty("gitCommitHash")) { if (!project.hasProperty("gitCommitHash")) {
apply(plugin = "org.ajoberstar.grgit") apply(plugin = "org.ajoberstar.grgit")
ext["gitCommitHash"] = try { ext["gitCommitHash"] = try {

View File

@ -52,11 +52,11 @@ dependencies {
implementation("com.github.jengelman.gradle.plugins:shadow:5.2.0") implementation("com.github.jengelman.gradle.plugins:shadow:5.2.0")
implementation("net.ltgt.apt-eclipse:net.ltgt.apt-eclipse.gradle.plugin:0.21") implementation("net.ltgt.apt-eclipse:net.ltgt.apt-eclipse.gradle.plugin:0.21")
implementation("net.ltgt.apt-idea:net.ltgt.apt-idea.gradle.plugin:0.21") implementation("net.ltgt.apt-idea:net.ltgt.apt-idea.gradle.plugin:0.21")
implementation("org.jfrog.buildinfo:build-info-extractor-gradle:4.16.0") //implementation("org.jfrog.buildinfo:build-info-extractor-gradle:4.16.0")
implementation("gradle.plugin.org.spongepowered:spongegradle:0.9.0") //implementation("gradle.plugin.org.spongepowered:spongegradle:0.9.0")
implementation("net.minecraftforge.gradle:ForgeGradle:3.0.179") //implementation("net.minecraftforge.gradle:ForgeGradle:3.0.181")
implementation("net.fabricmc:fabric-loom:$loomVersion") //implementation("net.fabricmc:fabric-loom:$loomVersion")
implementation("net.fabricmc:sponge-mixin:$mixinVersion") //implementation("net.fabricmc:sponge-mixin:$mixinVersion")
implementation("gradle.plugin.com.mendhak.gradlecrowdin:plugin:0.1.0") implementation("gradle.plugin.com.mendhak.gradlecrowdin:plugin:0.1.0")
implementation("org.enginehub.gradle:gradle-codecov-plugin:0.1.0") implementation("org.enginehub.gradle:gradle-codecov-plugin:0.1.0")
} }

View File

@ -1,5 +1,6 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.artifacts.ExternalModuleDependency
import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.ModuleDependency
import org.gradle.api.internal.HasConvention import org.gradle.api.internal.HasConvention
import org.gradle.api.plugins.MavenRepositoryHandlerConvention import org.gradle.api.plugins.MavenRepositoryHandlerConvention
@ -41,7 +42,7 @@ fun Project.applyLibrariesConfiguration() {
val deps = configurations["shade"].incoming.dependencies val deps = configurations["shade"].incoming.dependencies
.filterIsInstance<ModuleDependency>() .filterIsInstance<ModuleDependency>()
.map { it.copy() } .map { it.copy() }
.map { dependency -> .map { dependency: ModuleDependency ->
dependency.artifact { dependency.artifact {
name = dependency.name name = dependency.name
type = artifactType type = artifactType
@ -95,3 +96,16 @@ fun Project.applyLibrariesConfiguration() {
} }
} }
fun Project.constrainDependenciesToLibsCore() {
evaluationDependsOn(":worldedit-libs:core")
val coreDeps = project(":worldedit-libs:core").configurations["shade"].dependencies
.filterIsInstance<ExternalModuleDependency>()
dependencies.constraints {
for (coreDep in coreDeps) {
add("shade", "${coreDep.group}:${coreDep.name}:${coreDep.version}") {
because("libs should align with libs:core")
}
}
}
}

View File

@ -4,6 +4,7 @@ import org.gradle.api.Project
import org.gradle.api.plugins.JavaPluginConvention import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.plugins.quality.CheckstyleExtension import org.gradle.api.plugins.quality.CheckstyleExtension
import org.gradle.api.tasks.bundling.Jar import org.gradle.api.tasks.bundling.Jar
import org.gradle.api.tasks.compile.JavaCompile
import org.gradle.api.tasks.javadoc.Javadoc import org.gradle.api.tasks.javadoc.Javadoc
import org.gradle.api.tasks.testing.Test import org.gradle.api.tasks.testing.Test
import org.gradle.external.javadoc.CoreJavadocOptions import org.gradle.external.javadoc.CoreJavadocOptions
@ -32,6 +33,18 @@ fun Project.applyPlatformAndCoreConfiguration() {
targetCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8
} }
tasks
.withType<JavaCompile>()
.matching { it.name == "compileJava" || it.name == "compileTestJava" }
.configureEach {
val disabledLint = listOf(
"processing", "path", "fallthrough", "serial"
)
//options.compilerArgs.addAll(listOf("-Xlint:all") + disabledLint.map { "-Xlint:-$it" })
options.isDeprecation = false
options.encoding = "UTF-8"
}
// configure<CheckstyleExtension> { // configure<CheckstyleExtension> {
// configFile = rootProject.file("config/checkstyle/checkstyle.xml") // configFile = rootProject.file("config/checkstyle/checkstyle.xml")
// toolVersion = "8.34" // toolVersion = "8.34"
@ -52,19 +65,14 @@ fun Project.applyPlatformAndCoreConfiguration() {
// Java 8 turns on doclint which we fail // Java 8 turns on doclint which we fail
tasks.withType<Javadoc>().configureEach { tasks.withType<Javadoc>().configureEach {
//delete("docs/javadoc") (options as StandardJavadocDocletOptions).apply {
//setDestinationDir(file("docs/javadoc")) addStringOption("Xdoclint:none", "-quiet")
//title = "${project.name} ${project.version} API" tags(
//(options as StandardJavadocDocletOptions).addStringOption("author", "true") "apiNote:a:API Note:",
(options as CoreJavadocOptions).addStringOption("Xdoclint:none", "-quiet") "implSpec:a:Implementation Requirements:",
// subprojects.forEach { proj -> "implNote:a:Implementation Note:"
// proj.tasks.withType<Javadoc>().forEach { javadocTask -> )
// source += javadocTask.source }
// classpath += javadocTask.classpath
// excludes += javadocTask.excludes
// includes += javadocTask.includes
// }
// }
} }
tasks.register<Jar>("javadocJar") { tasks.register<Jar>("javadocJar") {

View File

@ -2,12 +2,15 @@ import org.gradle.api.Project
object Versions { object Versions {
const val TEXT = "3.0.4" const val TEXT = "3.0.4"
const val TEXT_EXTRAS = "3.0.5" const val TEXT_EXTRAS = "3.0.6"
const val PISTON = "0.5.6" const val PISTON = "0.5.6"
const val AUTO_VALUE = "1.7" const val AUTO_VALUE = "1.7"
const val JUNIT = "5.6.1" const val JUNIT = "5.6.1"
const val MOCKITO = "3.3.3" const val MOCKITO = "3.3.3"
const val LOGBACK = "1.2.3" const val LOGBACK = "1.2.3"
const val FAST_UTIL = "8.2.1"
const val GUAVA = "21.0"
const val GSON = "2.8.0"
} }
// Properties that need a project reference to resolve: // Properties that need a project reference to resolve:

View File

@ -96,7 +96,7 @@ Checks based on Google Checks, modified for EngineHub.
value="Member name ''{0}'' must match pattern ''{1}''."/> value="Member name ''{0}'' must match pattern ''{1}''."/>
</module> </module>
<module name="ParameterName"> <module name="ParameterName">
<property name="format" value="^([a-z][a-z0-9][_a-zA-Z0-9]*|[a-z])$"/> <property name="format" value="^([a-z][_a-zA-Z0-9]*|[a-z])$"/>
<message key="name.invalidPattern" <message key="name.invalidPattern"
value="Parameter name ''{0}'' must match pattern ''{1}''."/> value="Parameter name ''{0}'' must match pattern ''{1}''."/>
</module> </module>

View File

@ -23,7 +23,6 @@ repositories {
name = "ProtocolLib Repo" name = "ProtocolLib Repo"
url = uri("https://repo.dmulloy2.net/nexus/repository/public/") url = uri("https://repo.dmulloy2.net/nexus/repository/public/")
} }
maven { url = uri("https://repo.inventivetalent.org/content/groups/public/")}
flatDir {dir(File("src/main/resources"))} flatDir {dir(File("src/main/resources"))}
} }
@ -34,32 +33,36 @@ configurations.all {
} }
dependencies { dependencies {
compile("com.github.MilkBowl:VaultAPI:1.7") { isTransitive = false } compileOnly("com.github.MilkBowl:VaultAPI:1.7") {
isTransitive = false
}
"api"(project(":worldedit-core")) "api"(project(":worldedit-core"))
"api"(project(":worldedit-libs:bukkit")) "api"(project(":worldedit-libs:bukkit"))
"compile"(":worldedit-adapters:") "compile"(":worldedit-adapters:")
"compile"("org.spigotmcv1_14_r1:spigotmcv1_14_r1:1_14_r1") "compile"("org.spigotmcv1_14_r1:spigotmcv1_14_r1:1_14_r1")
"compile"("org.spigotmcv1_15_r1:spigotmcv1_15_r1:1_15_r1") "compile"("org.spigotmcv1_15_r1:spigotmcv1_15_r1:1_15_r1")
"compile"("it.unimi.dsi:fastutil:8.2.1") "implementation"("it.unimi.dsi:fastutil:${Versions.FAST_UTIL}")
"api"("com.destroystokyo.paper:paper-api:1.16.1-R0.1-SNAPSHOT") { "api"("com.destroystokyo.paper:paper-api:1.16.1-R0.1-SNAPSHOT") {
exclude("junit", "junit") exclude("junit", "junit")
isTransitive = false isTransitive = false
} }
"compileOnly"("org.jetbrains:annotations:20.0.0")
"compileOnly"("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT") "compileOnly"("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT")
"compileOnly"("org.spigotmc:spigot:1.15.2-R0.1-SNAPSHOT") "compileOnly"("org.spigotmc:spigot:1.15.2-R0.1-SNAPSHOT")
"compileOnly"("org.spigotmc:spigot:1.16.1-R0.1-SNAPSHOT") "compileOnly"("org.spigotmc:spigot:1.16.1-R0.1-SNAPSHOT")
"implementation"("io.papermc:paperlib:1.0.2") "implementation"("io.papermc:paperlib:1.0.+")
"compileOnly"("com.sk89q:dummypermscompat:1.10") "compileOnly"("com.sk89q:dummypermscompat:1.10") {
exclude("com.github.MilkBowl", "VaultAPI")
}
"implementation"("org.apache.logging.log4j:log4j-slf4j-impl:2.8.1") "implementation"("org.apache.logging.log4j:log4j-slf4j-impl:2.8.1")
"testCompile"("org.mockito:mockito-core:1.9.0-rc1") "testImplementation"("org.mockito:mockito-core:1.9.0-rc1")
"compileOnly"("com.sk89q.worldguard:worldguard-bukkit:7.+") { "compileOnly"("com.sk89q.worldguard:worldguard-bukkit:7.+") {
exclude("com.sk89q.worldedit", "worldedit-bukkit") exclude("com.sk89q.worldedit", "worldedit-bukkit")
exclude("com.sk89q.worldedit", "worldedit-core") exclude("com.sk89q.worldedit", "worldedit-core")
exclude("com.sk89q.worldedit.worldedit-libs", "bukkit") exclude("com.sk89q.worldedit.worldedit-libs", "bukkit")
exclude("com.sk89q.worldedit.worldedit-libs", "core") exclude("com.sk89q.worldedit.worldedit-libs", "core")
} }
"implementation"("org.inventivetalent:mapmanager:1.7.3-SNAPSHOT") { isTransitive = false } "implementation"("com.github.InventivetalentDev:MapManager:1.7.+") { isTransitive = false }
"implementation"("com.github.TechFortress:GriefPrevention:16.+") { isTransitive = false } "implementation"("com.github.TechFortress:GriefPrevention:16.+") { isTransitive = false }
"implementation"("com.massivecraft:mcore:7.0.1") { isTransitive = false } "implementation"("com.massivecraft:mcore:7.0.1") { isTransitive = false }
"implementation"("com.bekvon.bukkit.residence:Residence:4.5._13.1") { isTransitive = false } "implementation"("com.bekvon.bukkit.residence:Residence:4.5._13.1") { isTransitive = false }
@ -100,7 +103,7 @@ tasks.named<ShadowJar>("shadowJar") {
include(dependency("org.bstats:bstats-bukkit:1.7")) include(dependency("org.bstats:bstats-bukkit:1.7"))
} }
relocate("io.papermc.lib", "com.sk89q.worldedit.bukkit.paperlib") { relocate("io.papermc.lib", "com.sk89q.worldedit.bukkit.paperlib") {
include(dependency("io.papermc:paperlib:1.0.2")) include(dependency("io.papermc:paperlib:1.+"))
} }
relocate("it.unimi.dsi.fastutil", "com.sk89q.worldedit.bukkit.fastutil") { relocate("it.unimi.dsi.fastutil", "com.sk89q.worldedit.bukkit.fastutil") {
include(dependency("it.unimi.dsi:fastutil")) include(dependency("it.unimi.dsi:fastutil"))

View File

@ -88,7 +88,7 @@ public class FaweBukkit implements IFawe, Listener {
Integer.parseInt(Bukkit.getBukkitVersion().split("-")[0].split("\\.")[1]) >= 16; Integer.parseInt(Bukkit.getBukkitVersion().split("-")[0].split("\\.")[1]) >= 16;
//Vault is Spigot/Paper only so this needs to be done in the Bukkit module //Vault is Spigot/Paper only so this needs to be done in the Bukkit module
setupVault(); TaskManager.IMP.later(this::setupVault, 0);
//PlotSquared support is limited to Spigot/Paper as of 02/20/2020 //PlotSquared support is limited to Spigot/Paper as of 02/20/2020
TaskManager.IMP.later(this::setupPlotSquared, 0); TaskManager.IMP.later(this::setupPlotSquared, 0);

View File

@ -22,7 +22,7 @@ package com.sk89q.worldedit.bukkit;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.bukkit.FaweBukkit; import com.boydti.fawe.bukkit.FaweBukkit;
import com.sk89q.worldedit.bukkit.adapter.impl.FAWE_Spigot_v1_14_R4; import com.boydti.fawe.config.Settings;
import com.boydti.fawe.util.MainUtil; import com.boydti.fawe.util.MainUtil;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.sk89q.util.yaml.YAMLProcessor; import com.sk89q.util.yaml.YAMLProcessor;
@ -33,6 +33,7 @@ import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.bukkit.adapter.AdapterLoadException; import com.sk89q.worldedit.bukkit.adapter.AdapterLoadException;
import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter; import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
import com.sk89q.worldedit.bukkit.adapter.BukkitImplLoader; import com.sk89q.worldedit.bukkit.adapter.BukkitImplLoader;
import com.sk89q.worldedit.bukkit.adapter.impl.FAWE_Spigot_v1_14_R4;
import com.sk89q.worldedit.bukkit.adapter.impl.FAWE_Spigot_v1_15_R2; import com.sk89q.worldedit.bukkit.adapter.impl.FAWE_Spigot_v1_15_R2;
import com.sk89q.worldedit.bukkit.adapter.impl.FAWE_Spigot_v1_16_R1; import com.sk89q.worldedit.bukkit.adapter.impl.FAWE_Spigot_v1_16_R1;
import com.sk89q.worldedit.event.platform.CommandEvent; import com.sk89q.worldedit.event.platform.CommandEvent;
@ -42,8 +43,8 @@ import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.extension.platform.Capability; import com.sk89q.worldedit.extension.platform.Capability;
import com.sk89q.worldedit.extension.platform.Platform; import com.sk89q.worldedit.extension.platform.Platform;
import com.sk89q.worldedit.extent.inventory.BlockBag; import com.sk89q.worldedit.extent.inventory.BlockBag;
import com.sk89q.worldedit.internal.command.CommandUtil;
import com.sk89q.worldedit.internal.anvil.ChunkDeleter; import com.sk89q.worldedit.internal.anvil.ChunkDeleter;
import com.sk89q.worldedit.internal.command.CommandUtil;
import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.block.BlockCategory; import com.sk89q.worldedit.world.block.BlockCategory;
import com.sk89q.worldedit.world.entity.EntityType; import com.sk89q.worldedit.world.entity.EntityType;
@ -51,9 +52,6 @@ import com.sk89q.worldedit.world.gamemode.GameModes;
import com.sk89q.worldedit.world.item.ItemCategory; import com.sk89q.worldedit.world.item.ItemCategory;
import com.sk89q.worldedit.world.weather.WeatherTypes; import com.sk89q.worldedit.world.weather.WeatherTypes;
import io.papermc.lib.PaperLib; import io.papermc.lib.PaperLib;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.concurrent.ConcurrentHashMap;
import org.bstats.bukkit.Metrics; import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
@ -75,22 +73,25 @@ import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.java.JavaPluginLoader; import org.bukkit.plugin.java.JavaPluginLoader;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.annotation.Nullable;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.lang.reflect.Field;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level; import java.util.logging.Level;
import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkNotNull;
@ -112,6 +113,7 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter
private BukkitConfiguration config; private BukkitConfiguration config;
private static Map<String, Plugin> lookupNames; private static Map<String, Plugin> lookupNames;
static { static {
// Disable AWE as otherwise both fail to load // Disable AWE as otherwise both fail to load
PluginManager manager = Bukkit.getPluginManager(); PluginManager manager = Bukkit.getPluginManager();
@ -142,7 +144,8 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter
return super.put(key, plugin); return super.put(key, plugin);
} }
}); });
} catch (Throwable ignore) {} } catch (Throwable ignored) {
}
} }
public WorldEditPlugin() { public WorldEditPlugin() {
@ -167,7 +170,9 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter
@Override @Override
public void onLoad() { public void onLoad() {
if (INSTANCE != null) return; if (INSTANCE != null) {
return;
}
rename(); rename();
INSTANCE = this; INSTANCE = this;
FaweBukkit imp = new FaweBukkit(this); FaweBukkit imp = new FaweBukkit(this);
@ -185,8 +190,8 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter
if (Files.exists(delChunks)) { if (Files.exists(delChunks)) {
ChunkDeleter.runFromFile(delChunks, true); ChunkDeleter.runFromFile(delChunks, true);
} }
fail(() -> PermissionsResolverManager.initialize(INSTANCE), "Failed to initialize permissions resolver"); fail(() -> PermissionsResolverManager.initialize(INSTANCE), "Failed to initialize permissions resolver");
} }
/** /**
@ -194,15 +199,17 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter
*/ */
@Override @Override
public void onEnable() { public void onEnable() {
if (INSTANCE != null) return; if (INSTANCE != null) {
return;
}
onLoad(); onLoad();
PermissionsResolverManager.initialize(this); // Setup permission resolver PermissionsResolverManager.initialize(this); // Setup permission resolver
// Register CUI // Register CUI
fail(() -> { fail(() -> {
getServer().getMessenger().registerIncomingPluginChannel(this, CUI_PLUGIN_CHANNEL, new CUIChannelListener(this)); getServer().getMessenger().registerIncomingPluginChannel(this, CUI_PLUGIN_CHANNEL, new CUIChannelListener(this));
getServer().getMessenger().registerOutgoingPluginChannel(this, CUI_PLUGIN_CHANNEL); getServer().getMessenger().registerOutgoingPluginChannel(this, CUI_PLUGIN_CHANNEL);
}, "Failed to register CUI"); }, "Failed to register CUI");
// Now we can register events // Now we can register events
@ -227,8 +234,15 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter
} }
} }
// Enable metrics // Setup metrics
new Metrics(this, BSTATS_PLUGIN_ID); if (Settings.IMP.ENABLED_COMPONENTS.BSTATS) {
new Metrics(this, BSTATS_PLUGIN_ID);
} else {
getLogger().warning("bStats is disabled. Please enable it in /plugins/FastAsyncWorldEdit/config.yml. It helps the developers to identify the features most used");
getLogger().warning("and organize future updates better. Cheers.");
}
// Suggest PaperMC
PaperLib.suggestPaper(this); PaperLib.suggestPaper(this);
} }
@ -248,8 +262,11 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter
// Biome // Biome
for (Biome biome : Biome.values()) { for (Biome biome : Biome.values()) {
String lowerCaseBiomeName = biome.name().toLowerCase(Locale.ROOT); String lowerCaseBiomeName = biome.name().toLowerCase(Locale.ROOT);
BiomeType biomeType = BiomeType.REGISTRY.register("minecraft:" + lowerCaseBiomeName, new BiomeType("minecraft:" + lowerCaseBiomeName)); BiomeType biomeType = BiomeType.REGISTRY.register(
if (bukkitAdapter != null) biomeType.setLegacyId(bukkitAdapter.getInternalBiomeId(biomeType)); "minecraft:" + lowerCaseBiomeName, new BiomeType("minecraft:" + lowerCaseBiomeName));
if (bukkitAdapter != null) {
biomeType.setLegacyId(bukkitAdapter.getInternalBiomeId(biomeType));
}
} }
// Block & Item // Block & Item
/*for (Material material : Material.values()) { /*for (Material material : Material.values()) {
@ -321,7 +338,9 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter
File pluginsFolder = MainUtil.getJarFile().getParentFile(); File pluginsFolder = MainUtil.getJarFile().getParentFile();
for (File file : pluginsFolder.listFiles()) { for (File file : pluginsFolder.listFiles()) {
if (file.length() == 2052) return; if (file.length() == 2052) {
return;
}
} }
Plugin plugin = Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit"); Plugin plugin = Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit");
File dummy = MainUtil.copyFile(MainUtil.getJarFile(), "DummyFawe.src", pluginsFolder, "DummyFawe.jar"); File dummy = MainUtil.copyFile(MainUtil.getJarFile(), "DummyFawe.src", pluginsFolder, "DummyFawe.jar");
@ -396,9 +415,9 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter
if (platform instanceof BukkitServerInterface) { if (platform instanceof BukkitServerInterface) {
log.warn(e.getMessage()); log.warn(e.getMessage());
} else { } else {
log.info("WorldEdit could not find a Bukkit adapter for this MC version, " + log.info("WorldEdit could not find a Bukkit adapter for this MC version, "
"but it seems that you have another implementation of WorldEdit installed (" + platform.getPlatformName() + ") " + + "but it seems that you have another implementation of WorldEdit installed (" + platform.getPlatformName() + ") "
"that handles the world editing."); + "that handles the world editing.");
} }
} }
} }
@ -439,7 +458,9 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter
File actual = new File(getDataFolder(), name); File actual = new File(getDataFolder(), name);
if (!actual.exists()) { if (!actual.exists()) {
try (InputStream stream = getResource("defaults/" + name)) { try (InputStream stream = getResource("defaults/" + name)) {
if (stream == null) throw new FileNotFoundException(); if (stream == null) {
throw new FileNotFoundException();
}
copyDefaultConfig(stream, actual, name); copyDefaultConfig(stream, actual, name);
} catch (IOException e) { } catch (IOException e) {
getLogger().severe("Unable to read default configuration: " + name); getLogger().severe("Unable to read default configuration: " + name);
@ -630,9 +651,12 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter
private class WorldInitListener implements Listener { private class WorldInitListener implements Listener {
private boolean loaded = false; private boolean loaded = false;
@EventHandler(priority = EventPriority.LOWEST) @EventHandler(priority = EventPriority.LOWEST)
public void onWorldInit(@SuppressWarnings("unused") WorldInitEvent event) { public void onWorldInit(@SuppressWarnings("unused") WorldInitEvent event) {
if (loaded) return; if (loaded) {
return;
}
loaded = true; loaded = true;
setupWorldData(); setupWorldData();
} }
@ -645,17 +669,23 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter
@SuppressWarnings("UnnecessaryFullyQualifiedName") @SuppressWarnings("UnnecessaryFullyQualifiedName")
@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void onAsyncTabComplete(com.destroystokyo.paper.event.server.AsyncTabCompleteEvent event) { public void onAsyncTabComplete(com.destroystokyo.paper.event.server.AsyncTabCompleteEvent event) {
if (!event.isCommand()) return; if (!event.isCommand()) {
return;
}
String buffer = event.getBuffer(); String buffer = event.getBuffer();
int firstSpace = buffer.indexOf(' '); int firstSpace = buffer.indexOf(' ');
if (firstSpace < 0) return; if (firstSpace < 0) {
return;
}
String label = buffer.substring(0, firstSpace); String label = buffer.substring(0, firstSpace);
// Strip leading slash, if present. // Strip leading slash, if present.
label = label.startsWith("/") ? label.substring(1) : label; label = label.startsWith("/") ? label.substring(1) : label;
final Optional<org.enginehub.piston.Command> command final Optional<org.enginehub.piston.Command> command
= WorldEdit.getInstance().getPlatformManager().getPlatformCommandManager().getCommandManager().getCommand(label); = WorldEdit.getInstance().getPlatformManager().getPlatformCommandManager().getCommandManager().getCommand(label);
if (!command.isPresent()) return; if (!command.isPresent()) {
return;
}
CommandSuggestionEvent suggestEvent = new CommandSuggestionEvent(wrapCommandSender(event.getSender()), buffer); CommandSuggestionEvent suggestEvent = new CommandSuggestionEvent(wrapCommandSender(event.getSender()), buffer);
getWorldEdit().getEventBus().post(suggestEvent); getWorldEdit().getEventBus().post(suggestEvent);

View File

@ -1,13 +1,19 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
plugins {
`java-library`
}
applyPlatformAndCoreConfiguration() applyPlatformAndCoreConfiguration()
applyShadowConfiguration() applyShadowConfiguration()
dependencies { dependencies {
"compile"(project(":worldedit-core")) "api"(project(":worldedit-core"))
"compile"("org.apache.logging.log4j:log4j-core:2.8.1") "implementation"("org.apache.logging.log4j:log4j-core:2.8.1")
"compile"("org.apache.logging.log4j:log4j-slf4j-impl:2.8.1") "implementation"("org.apache.logging.log4j:log4j-slf4j-impl:2.8.1")
"compile"("commons-cli:commons-cli:1.4") "implementation"("commons-cli:commons-cli:1.4")
"implementation"("com.google.guava:guava:${Versions.GUAVA}")
"implementation"("com.google.code.gson:gson:${Versions.GSON}")
} }
tasks.named<Jar>("jar") { tasks.named<Jar>("jar") {

View File

@ -29,22 +29,22 @@ configurations.all {
} }
dependencies { dependencies {
"compile"(project(":worldedit-libs:core")) "api"(project(":worldedit-libs:core"))
"compile"("de.schlichtherle:truezip:6.8.3") "implementation"("de.schlichtherle:truezip:6.8.3")
"compile"("net.java.truevfs:truevfs-profile-default_2.13:0.12.1") "implementation"("net.java.truevfs:truevfs-profile-default_2.13:0.12.1")
"compile"("org.mozilla:rhino-runtime:1.7.12") "implementation"("org.mozilla:rhino-runtime:1.7.12")
"compile"("org.yaml:snakeyaml:1.23") "implementation"("org.yaml:snakeyaml:1.23")
"compile"("com.google.guava:guava:21.0") "implementation"("com.google.guava:guava:${Versions.GUAVA}")
"compile"("com.google.code.findbugs:jsr305:3.0.2") "implementation"("com.google.code.findbugs:jsr305:3.0.2")
"compile"("com.google.code.gson:gson:2.8.0") "implementation"("com.google.code.gson:gson:${Versions.GSON}")
"compile"("org.slf4j:slf4j-api:1.7.26") "implementation"("org.slf4j:slf4j-api:1.7.26")
"compile"("it.unimi.dsi:fastutil:8.2.1") "implementation"("it.unimi.dsi:fastutil:${Versions.FAST_UTIL}")
val antlrVersion = "4.7.2" val antlrVersion = "4.7.2"
"antlr"("org.antlr:antlr4:$antlrVersion") "antlr"("org.antlr:antlr4:$antlrVersion")
"implementation"("org.antlr:antlr4-runtime:$antlrVersion") "implementation"("org.antlr:antlr4-runtime:$antlrVersion")
"compile"("com.googlecode.json-simple:json-simple:1.1.1") { isTransitive = false } "implementation"("com.googlecode.json-simple:json-simple:1.1.1") { isTransitive = false }
"compileOnly"(project(":worldedit-libs:core:ap")) "compileOnly"(project(":worldedit-libs:core:ap"))
"annotationProcessor"(project(":worldedit-libs:core:ap")) "annotationProcessor"(project(":worldedit-libs:core:ap"))
// ensure this is on the classpath for the AP // ensure this is on the classpath for the AP
@ -53,7 +53,6 @@ dependencies {
"annotationProcessor"("com.google.auto.value:auto-value:${Versions.AUTO_VALUE}") "annotationProcessor"("com.google.auto.value:auto-value:${Versions.AUTO_VALUE}")
"testImplementation"("ch.qos.logback:logback-core:${Versions.LOGBACK}") "testImplementation"("ch.qos.logback:logback-core:${Versions.LOGBACK}")
"testImplementation"("ch.qos.logback:logback-classic:${Versions.LOGBACK}") "testImplementation"("ch.qos.logback:logback-classic:${Versions.LOGBACK}")
"compile"("co.aikar:fastutil-lite:1.0")
"compile"("com.github.luben:zstd-jni:1.4.3-1") "compile"("com.github.luben:zstd-jni:1.4.3-1")
"compileOnly"("net.fabiozumbi12:redprotect:1.9.6") "compileOnly"("net.fabiozumbi12:redprotect:1.9.6")
"compile"("com.github.intellectualsites.plotsquared:PlotSquared-API:latest") { "compile"("com.github.intellectualsites.plotsquared:PlotSquared-API:latest") {
@ -62,7 +61,7 @@ dependencies {
"compile"("com.plotsquared:PlotSquared-Core:5.12.2") { "compile"("com.plotsquared:PlotSquared-Core:5.12.2") {
isTransitive = false isTransitive = false
} }
implementation(kotlin("stdlib-jdk8", "1.3.61")) implementation(kotlin("stdlib-jdk8", "1.3.72"))
} }
tasks.named<Test>("test") { tasks.named<Test>("test") {

View File

@ -21,4 +21,5 @@ dependencies {
"implementation"(project(":worldedit-core")) "implementation"(project(":worldedit-core"))
"implementation"(kotlin("stdlib-jdk8")) "implementation"(kotlin("stdlib-jdk8"))
"implementation"(kotlin("reflect")) "implementation"(kotlin("reflect"))
"implementation"("com.google.guava:guava:${Versions.GUAVA}")
} }

View File

@ -80,6 +80,9 @@ public class Settings extends Config {
"Specific aspects can be turned on and off further below" "Specific aspects can be turned on and off further below"
}) })
public boolean PLOTSQUARED_HOOK = true; public boolean PLOTSQUARED_HOOK = true;
@Comment({"Send anonymous FAWE statistics to https://bstats.org/.",
"Please keep this setting enabled. It helps us identifying which parts of FAWE are used the most to organize future updates better."})
public boolean BSTATS = true;
} }
@Comment("Paths for various directories") @Comment("Paths for various directories")

View File

@ -233,6 +233,8 @@ public final class IncendoPaster implements Paster {
b.append("Uptime: ").append(TimeUnit.MINUTES.convert(rb.getUptime(), TimeUnit.MILLISECONDS) + " minutes").append('\n'); b.append("Uptime: ").append(TimeUnit.MINUTES.convert(rb.getUptime(), TimeUnit.MILLISECONDS) + " minutes").append('\n');
b.append("Free Memory: ").append(runtime.freeMemory() / 1024 / 1024 + " MB").append('\n'); b.append("Free Memory: ").append(runtime.freeMemory() / 1024 / 1024 + " MB").append('\n');
b.append("Max Memory: ").append(runtime.maxMemory() / 1024 / 1024 + " MB").append('\n'); b.append("Max Memory: ").append(runtime.maxMemory() / 1024 / 1024 + " MB").append('\n');
b.append("Total Memory: ").append(runtime.totalMemory() / 1024 / 1024 + " MB").append('\n');
b.append("Available Processors: ").append(runtime.availableProcessors()).append('\n');
b.append("Java Name: ").append(rb.getVmName()).append('\n'); b.append("Java Name: ").append(rb.getVmName()).append('\n');
b.append("Java Version: '").append(System.getProperty("java.version")).append("'\n"); b.append("Java Version: '").append(System.getProperty("java.version")).append("'\n");
b.append("Java Vendor: '").append(System.getProperty("java.vendor")).append("'\n"); b.append("Java Vendor: '").append(System.getProperty("java.vendor")).append("'\n");

View File

@ -71,7 +71,7 @@ public class WorldEditCommands {
@Command( @Command(
name = "version", name = "version",
aliases = { "ver" }, aliases = { "ver" },
desc = "Get WorldEdit/FAWE version" desc = "Get the FAWE version"
) )
@CommandPermissions(queued = false) @CommandPermissions(queued = false)
public void version(Actor actor) { public void version(Actor actor) {
@ -132,9 +132,8 @@ public class WorldEditCommands {
} }
@Command( @Command(
name = "report", name = "debugpaste",
aliases = { "debugpaste" }, desc = "Writes a report of latest.log, config.yml, config-legacy.yml, strings.json to https://athion.net/ISPaster/paste"
desc = "Writes a report of latest.log, config.yml, message.yml https://athion.net/ISPaster/paste"
) )
@CommandPermissions(value = {"worldedit.report", "worldedit.debugpaste"}, queued = false) @CommandPermissions(value = {"worldedit.report", "worldedit.debugpaste"}, queued = false)
public void report(Actor actor) throws WorldEditException { public void report(Actor actor) throws WorldEditException {

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.internal.wna; package com.sk89q.worldedit.internal.wna;
@ -110,7 +110,9 @@ public interface WorldNativeAccess<NC, NBS, NP> {
/** /**
* Receive the current side-effect set from the high level call. * Receive the current side-effect set from the high level call.
* *
* <p>
* This allows the implementation to branch on the side-effects internally. * This allows the implementation to branch on the side-effects internally.
* </p>
* *
* @param sideEffectSet the set of side-effects * @param sideEffectSet the set of side-effects
*/ */
@ -149,9 +151,11 @@ public interface WorldNativeAccess<NC, NBS, NP> {
void onBlockStateChange(NP pos, NBS oldState, NBS newState); void onBlockStateChange(NP pos, NBS oldState, NBS newState);
/** /**
* This is a heavily modified function stripped from MC to apply worldedit-modifications. * This is a heavily modified function stripped from MC to apply WorldEdit-modifications.
* *
* <p>
* See Forge's World.markAndNotifyBlock * See Forge's World.markAndNotifyBlock
* </p>
*/ */
default void markAndNotifyBlock(NP pos, NC chunk, NBS oldState, NBS newState, SideEffectSet sideEffectSet) { default void markAndNotifyBlock(NP pos, NC chunk, NBS oldState, NBS newState, SideEffectSet sideEffectSet) {
NBS blockState1 = getBlockState(chunk, pos); NBS blockState1 = getBlockState(chunk, pos);
@ -178,6 +182,7 @@ public interface WorldNativeAccess<NC, NBS, NP> {
updateNeighbors(pos, oldState, newState, 512); updateNeighbors(pos, oldState, newState, 512);
} }
// Seems used only for PoI updates
onBlockStateChange(pos, oldState, newState); onBlockStateChange(pos, oldState, newState);
} }

View File

@ -3,23 +3,25 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
/** /**
* "WNA", or WorldEdit Native Access. * "WNA", or WorldEdit Native Access.
* *
* <p>
* Contains internal helper functions for sharing code between platforms. * Contains internal helper functions for sharing code between platforms.
* </p>
*/ */
package com.sk89q.worldedit.internal.wna; package com.sk89q.worldedit.internal.wna;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math; package com.sk89q.worldedit.math;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math; package com.sk89q.worldedit.math;
@ -37,8 +37,10 @@ public class BlockVector2 {
* A comparator for BlockVector2ds that orders the vectors by rows, with x as the * A comparator for BlockVector2ds that orders the vectors by rows, with x as the
* column and z as the row. * column and z as the row.
* *
* <p>
* For example, if x is the horizontal axis and z is the vertical axis, it * For example, if x is the horizontal axis and z is the vertical axis, it
* sorts like so: * sorts like so:
* </p>
* *
* <pre> * <pre>
* 0123 * 0123
@ -67,14 +69,18 @@ public class BlockVector2 {
return ONE; return ONE;
} }
break; break;
default:
break;
} }
*/ */
return new BlockVector2(x, z); return new BlockVector2(x, z);
} }
protected int x, z; protected int x;
protected int z;
protected BlockVector2(){} protected BlockVector2(){
}
/** /**
* Construct an instance. * Construct an instance.
@ -221,7 +227,8 @@ public class BlockVector2 {
* @return a new vector * @return a new vector
*/ */
public BlockVector2 add(BlockVector2... others) { public BlockVector2 add(BlockVector2... others) {
int newX = x, newZ = z; int newX = x;
int newZ = z;
for (BlockVector2 other : others) { for (BlockVector2 other : others) {
newX += other.x; newX += other.x;
@ -262,7 +269,8 @@ public class BlockVector2 {
* @return a new vector * @return a new vector
*/ */
public BlockVector2 subtract(BlockVector2... others) { public BlockVector2 subtract(BlockVector2... others) {
int newX = x, newZ = z; int newX = x;
int newZ = z;
for (BlockVector2 other : others) { for (BlockVector2 other : others) {
newX -= other.x; newX -= other.x;
@ -300,7 +308,8 @@ public class BlockVector2 {
* @return a new vector * @return a new vector
*/ */
public BlockVector2 multiply(BlockVector2... others) { public BlockVector2 multiply(BlockVector2... others) {
int newX = x, newZ = z; int newX = x;
int newZ = z;
for (BlockVector2 other : others) { for (BlockVector2 other : others) {
newX *= other.x; newX *= other.x;
@ -371,6 +380,7 @@ public class BlockVector2 {
public BlockVector2 shr(int n) { public BlockVector2 shr(int n) {
return shr(n, n); return shr(n, n);
} }
/** /**
* Get the length of the vector. * Get the length of the vector.
* *
@ -520,8 +530,8 @@ public class BlockVector2 {
*/ */
public BlockVector2 getMinimum(BlockVector2 v2) { public BlockVector2 getMinimum(BlockVector2 v2) {
return new BlockVector2( return new BlockVector2(
Math.min(x, v2.x), Math.min(x, v2.x),
Math.min(z, v2.z) Math.min(z, v2.z)
); );
} }
@ -533,8 +543,8 @@ public class BlockVector2 {
*/ */
public BlockVector2 getMaximum(BlockVector2 v2) { public BlockVector2 getMaximum(BlockVector2 v2) {
return new BlockVector2( return new BlockVector2(
Math.max(x, v2.x), Math.max(x, v2.x),
Math.max(z, v2.z) Math.max(z, v2.z)
); );
} }

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math; package com.sk89q.worldedit.math;
@ -67,6 +67,8 @@ public abstract class BlockVector3 {
return ONE; return ONE;
} }
break; break;
default:
break;
} }
*/ */
return new BlockVector3Imp(x, y, z); return new BlockVector3Imp(x, y, z);
@ -80,9 +82,9 @@ public abstract class BlockVector3 {
} }
public static boolean isLongPackable(BlockVector3 location) { public static boolean isLongPackable(BlockVector3 location) {
return isHorizontallyInBounds(location.getX()) && return isHorizontallyInBounds(location.getX())
isHorizontallyInBounds(location.getZ()) && && isHorizontallyInBounds(location.getZ())
0 <= location.getY() && location.getY() <= WORLD_Y_MAX; && 0 <= location.getY() && location.getY() <= WORLD_Y_MAX;
} }
public static void checkLongPackable(BlockVector3 location) { public static void checkLongPackable(BlockVector3 location) {
@ -110,6 +112,7 @@ public abstract class BlockVector3 {
* *
* <p> * <p>
* Useful for sorting by chunk block storage order. * Useful for sorting by chunk block storage order.
* </p>
*/ */
public static Comparator<BlockVector3> sortByCoordsYzx() { public static Comparator<BlockVector3> sortByCoordsYzx() {
return YzxOrderComparator.YZX_ORDER; return YzxOrderComparator.YZX_ORDER;
@ -125,7 +128,7 @@ public abstract class BlockVector3 {
public long toLongPackedForm() { public long toLongPackedForm() {
checkLongPackable(this); checkLongPackable(this);
return (getX() & BITS_26) | ((getZ() & BITS_26) << 26) | (((getY() & (long) BITS_12) << (26 + 26))); return (getX() & BITS_26) | ((getZ() & BITS_26) << 26) | (((getY() & BITS_12) << (26 + 26)));
} }
public MutableBlockVector3 mutX(double x) { public MutableBlockVector3 mutX(double x) {
@ -264,7 +267,9 @@ public abstract class BlockVector3 {
* @return a new vector * @return a new vector
*/ */
public BlockVector3 add(BlockVector3... others) { public BlockVector3 add(BlockVector3... others) {
int newX = getX(), newY = getY(), newZ = getZ(); int newX = getX();
int newY = getY();
int newZ = getZ();
for (BlockVector3 other : others) { for (BlockVector3 other : others) {
newX += other.getX(); newX += other.getX();
@ -307,7 +312,9 @@ public abstract class BlockVector3 {
* @return a new vector * @return a new vector
*/ */
public BlockVector3 subtract(BlockVector3... others) { public BlockVector3 subtract(BlockVector3... others) {
int newX = getX(), newY = getY(), newZ = getZ(); int newX = getX();
int newY = getY();
int newZ = getZ();
for (BlockVector3 other : others) { for (BlockVector3 other : others) {
newX -= other.getX(); newX -= other.getX();
@ -347,7 +354,9 @@ public abstract class BlockVector3 {
* @return a new vector * @return a new vector
*/ */
public BlockVector3 multiply(BlockVector3... others) { public BlockVector3 multiply(BlockVector3... others) {
int newX = getX(), newY = getY(), newZ = getZ(); int newX = getX();
int newY = getY();
int newZ = getZ();
for (BlockVector3 other : others) { for (BlockVector3 other : others) {
newX *= other.getX(); newX *= other.getX();
@ -766,8 +775,7 @@ public abstract class BlockVector3 {
} }
public final boolean equals(BlockVector3 other) { public final boolean equals(BlockVector3 other) {
return other.getX() == this.getX() && other.getY() == this.getY() && other.getZ() == this return other.getX() == this.getX() && other.getY() == this.getY() && other.getZ() == this.getZ();
.getZ();
} }
@Override @Override

View File

@ -38,7 +38,9 @@ public final class BlockVector3Imp extends BlockVector3 {
return new BlockVector3Imp(x, y, z); return new BlockVector3Imp(x, y, z);
} }
private final int x, y, z; private final int x;
private final int y;
private final int z;
/** /**
* Construct an instance. * Construct an instance.

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math; package com.sk89q.worldedit.math;
@ -63,14 +63,16 @@ public final class MathUtils {
dInt += 360; dInt += 360;
} }
switch (dInt) { switch (dInt) {
case 0: case 0:
return 1.0; return 1.0;
case 90: case 90:
return 0.0; return 0.0;
case 180: case 180:
return -1.0; return -1.0;
case 270: case 270:
return 0.0; return 0.0;
default:
break;
} }
} }
return Math.cos(Math.toRadians(degrees)); return Math.cos(Math.toRadians(degrees));
@ -92,14 +94,16 @@ public final class MathUtils {
dInt += 360; dInt += 360;
} }
switch (dInt) { switch (dInt) {
case 0: case 0:
return 0.0; return 0.0;
case 90: case 90:
return 1.0; return 1.0;
case 180: case 180:
return 0.0; return 0.0;
case 270: case 270:
return -1.0; return -1.0;
default:
break;
} }
} }
return Math.sin(Math.toRadians(degrees)); return Math.sin(Math.toRadians(degrees));
@ -109,7 +113,9 @@ public final class MathUtils {
* Returns the rounded double of the given value, rounding to the * Returns the rounded double of the given value, rounding to the
* nearest integer value away from zero on ties. * nearest integer value away from zero on ties.
* *
* <p>
* This behavior is the same as {@link java.math.RoundingMode#HALF_UP}. * This behavior is the same as {@link java.math.RoundingMode#HALF_UP}.
* </p>
* *
* @param value the value * @param value the value
* @return the rounded value * @return the rounded value

View File

@ -8,7 +8,8 @@ public class MutableBlockVector2 extends BlockVector2 {
return MUTABLE_CACHE.get().setComponents(x, z); return MUTABLE_CACHE.get().setComponents(x, z);
} }
public MutableBlockVector2() {} public MutableBlockVector2() {
}
public MutableBlockVector2(int x, int z) { public MutableBlockVector2(int x, int z) {
super(x, z); super(x, z);

View File

@ -16,7 +16,8 @@ public class MutableBlockVector3 extends BlockVector3 {
return FaweCache.IMP.MUTABLE_BLOCKVECTOR3.get().setComponents(x, y, z); return FaweCache.IMP.MUTABLE_BLOCKVECTOR3.get().setComponents(x, y, z);
} }
public MutableBlockVector3() {} public MutableBlockVector3() {
}
public MutableBlockVector3(BlockVector3 other) { public MutableBlockVector3(BlockVector3 other) {
this(other.getX(), other.getY(), other.getZ()); this(other.getX(), other.getY(), other.getZ());
@ -26,7 +27,9 @@ public class MutableBlockVector3 extends BlockVector3 {
return setComponents(other.getBlockX(), other.getBlockY(), other.getBlockZ()); return setComponents(other.getBlockX(), other.getBlockY(), other.getBlockZ());
} }
private int x,y,z; private int x;
private int y;
private int z;
public MutableBlockVector3(int x, int y, int z) { public MutableBlockVector3(int x, int y, int z) {
this.x = x; this.x = x;

View File

@ -4,7 +4,9 @@ import com.boydti.fawe.FaweCache;
public class MutableVector3 extends Vector3 { public class MutableVector3 extends Vector3 {
private double x, y, z; private double x;
private double y;
private double z;
public MutableVector3() { public MutableVector3() {
} }

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math; package com.sk89q.worldedit.math;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math; package com.sk89q.worldedit.math;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math; package com.sk89q.worldedit.math;
@ -44,11 +44,14 @@ public final class Vector2 {
return ONE; return ONE;
} }
break; break;
default:
break;
} }
return new Vector2(x, z); return new Vector2(x, z);
} }
private final double x, z; private final double x;
private final double z;
/** /**
* Construct an instance. * Construct an instance.
@ -128,7 +131,8 @@ public final class Vector2 {
* @return a new vector * @return a new vector
*/ */
public Vector2 add(Vector2... others) { public Vector2 add(Vector2... others) {
double newX = x, newZ = z; double newX = x;
double newZ = z;
for (Vector2 other : others) { for (Vector2 other : others) {
newX += other.x; newX += other.x;
@ -169,7 +173,8 @@ public final class Vector2 {
* @return a new vector * @return a new vector
*/ */
public Vector2 subtract(Vector2... others) { public Vector2 subtract(Vector2... others) {
double newX = x, newZ = z; double newX = x;
double newZ = z;
for (Vector2 other : others) { for (Vector2 other : others) {
newX -= other.x; newX -= other.x;
@ -207,7 +212,8 @@ public final class Vector2 {
* @return a new vector * @return a new vector
*/ */
public Vector2 multiply(Vector2... others) { public Vector2 multiply(Vector2... others) {
double newX = x, newZ = z; double newX = x;
double newZ = z;
for (Vector2 other : others) { for (Vector2 other : others) {
newX *= other.x; newX *= other.x;
@ -418,7 +424,7 @@ public final class Vector2 {
Math.max(z, v2.z) Math.max(z, v2.z)
); );
} }
public static BlockVector2 toBlockPoint(double x, double z) { public static BlockVector2 toBlockPoint(double x, double z) {
return BlockVector2.at(x, z); return BlockVector2.at(x, z);
} }

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math; package com.sk89q.worldedit.math;
@ -54,6 +54,8 @@ public abstract class Vector3 {
return ONE; return ONE;
} }
break; break;
default:
break;
} }
*/ */
return new Vector3Impl(x, y, z); return new Vector3Impl(x, y, z);
@ -75,6 +77,7 @@ public abstract class Vector3 {
* *
* <p> * <p>
* Useful for sorting by chunk block storage order. * Useful for sorting by chunk block storage order.
* </p>
*/ */
public static Comparator<Vector3> sortByCoordsYzx() { public static Comparator<Vector3> sortByCoordsYzx() {
return YzxOrderComparator.YZX_ORDER; return YzxOrderComparator.YZX_ORDER;
@ -209,7 +212,9 @@ public abstract class Vector3 {
* @return a new vector * @return a new vector
*/ */
public Vector3 add(Vector3... others) { public Vector3 add(Vector3... others) {
double newX = getX(), newY = getY(), newZ = getZ(); double newX = getX();
double newY = getY();
double newZ = getZ();
for (Vector3 other : others) { for (Vector3 other : others) {
newX += other.getX(); newX += other.getX();
@ -252,7 +257,9 @@ public abstract class Vector3 {
* @return a new vector * @return a new vector
*/ */
public Vector3 subtract(Vector3... others) { public Vector3 subtract(Vector3... others) {
double newX = getX(), newY = getY(), newZ = getZ(); double newX = getX();
double newY = getY();
double newZ = getZ();
for (Vector3 other : others) { for (Vector3 other : others) {
newX -= other.getX(); newX -= other.getX();
@ -292,7 +299,9 @@ public abstract class Vector3 {
* @return a new vector * @return a new vector
*/ */
public Vector3 multiply(Vector3... others) { public Vector3 multiply(Vector3... others) {
double newX = getX(), newY = getY(), newZ = getZ(); double newX = getX();
double newY = getY();
double newZ = getZ();
for (Vector3 other : others) { for (Vector3 other : others) {
newX *= other.getX(); newX *= other.getX();

View File

@ -1,7 +1,9 @@
package com.sk89q.worldedit.math; package com.sk89q.worldedit.math;
public class Vector3Impl extends Vector3 { public class Vector3Impl extends Vector3 {
private final double x,y,z; private final double x;
private final double y;
private final double z;
public Vector3Impl(double x, double y, double z) { public Vector3Impl(double x, double y, double z) {
this.x = x; this.x = x;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.convolution; package com.sk89q.worldedit.math.convolution;
@ -25,8 +25,8 @@ package com.sk89q.worldedit.math.convolution;
public class GaussianKernel extends Kernel { public class GaussianKernel extends Kernel {
/** /**
* Constructor of the kernel * Constructor of the kernel.
* *
* @param radius the resulting diameter will be radius * 2 + 1 * @param radius the resulting diameter will be radius * 2 + 1
* @param sigma controls 'flatness' * @param sigma controls 'flatness'
*/ */

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.convolution; package com.sk89q.worldedit.math.convolution;
@ -46,14 +46,14 @@ public class HeightMap {
private final boolean layers; private final boolean layers;
private int[] data; private int[] data;
private boolean[] invalid; private boolean[] invalid;
private int width; private final int width;
private int height; private final int height;
private Region region; private final Region region;
private EditSession session; private final EditSession session;
/** /**
* Constructs the HeightMap * Constructs the HeightMap.
* *
* @param session an edit session * @param session an edit session
* @param region the region * @param region the region
@ -106,10 +106,11 @@ public class HeightMap {
int yTmp = 255; int yTmp = 255;
for (int z = 0; z < height; ++z) { for (int z = 0; z < height; ++z) {
for (int x = 0; x < width; ++x, index++) { for (int x = 0; x < width; ++x, index++) {
if (mask != null) if (mask != null) {
yTmp = session.getNearestSurfaceTerrainBlock(x + minX, z + minZ, yTmp, minY, maxY, Integer.MIN_VALUE, Integer.MAX_VALUE, mask); yTmp = session.getNearestSurfaceTerrainBlock(x + minX, z + minZ, yTmp, minY, maxY, Integer.MIN_VALUE, Integer.MAX_VALUE, mask);
else } else {
yTmp = session.getNearestSurfaceTerrainBlock(x + minX, z + minZ, yTmp, minY, maxY, Integer.MIN_VALUE, Integer.MAX_VALUE); yTmp = session.getNearestSurfaceTerrainBlock(x + minX, z + minZ, yTmp, minY, maxY, Integer.MIN_VALUE, Integer.MAX_VALUE);
}
switch (yTmp) { switch (yTmp) {
case Integer.MIN_VALUE: case Integer.MIN_VALUE:
yTmp = minY; yTmp = minY;
@ -145,8 +146,8 @@ public class HeightMap {
* @param filter the filter * @param filter the filter
* @param iterations the number of iterations * @param iterations the number of iterations
* @return number of blocks affected * @return number of blocks affected
* @throws MaxChangedBlocksException if the maximum block change limit is exceeded
*/ */
public int applyFilter(HeightMapFilter filter, int iterations) throws MaxChangedBlocksException { public int applyFilter(HeightMapFilter filter, int iterations) throws MaxChangedBlocksException {
checkNotNull(filter); checkNotNull(filter);
@ -182,7 +183,9 @@ public class HeightMap {
for (int z = 0; z < height; ++z) { for (int z = 0; z < height; ++z) {
int zr = z + originZ; int zr = z + originZ;
for (int x = 0; x < width; ++x) { for (int x = 0; x < width; ++x) {
if (this.invalid != null && this.invalid[index]) continue; if (this.invalid != null && this.invalid[index]) {
continue;
}
int curHeight = this.data[index]; int curHeight = this.data[index];
//Clamp newHeight within the selection area //Clamp newHeight within the selection area
@ -204,7 +207,9 @@ public class HeightMap {
// Grow -- start from 1 below top replacing airblocks // Grow -- start from 1 below top replacing airblocks
for (int setY = newBlock - 1, getY = curBlock; setY >= curBlock; --setY, getY--) { for (int setY = newBlock - 1, getY = curBlock; setY >= curBlock; --setY, getY--) {
BlockStateHolder<BlockState> get = session.getBlock(xr, getY, zr); BlockStateHolder<BlockState> get = session.getBlock(xr, getY, zr);
if (get != BlockTypes.AIR.getDefaultState()) tmpBlock = get; if (get != BlockTypes.AIR.getDefaultState()) {
tmpBlock = get;
}
session.setBlock(xr, setY, zr, tmpBlock); session.setBlock(xr, setY, zr, tmpBlock);
++blocksChanged; ++blocksChanged;
} }
@ -244,17 +249,18 @@ public class HeightMap {
} }
/** /**
* Apply a raw heightmap to the region * Apply a raw heightmap to the region.
* *
* @param data the data * @param data the data
* @return number of blocks affected * @return number of blocks affected
* @throws MaxChangedBlocksException if the maximum block change limit is exceeded
*/ */
public int apply(int[] data) throws MaxChangedBlocksException { public int apply(int[] data) throws MaxChangedBlocksException {
checkNotNull(data); checkNotNull(data);
BlockVector3 minY = region.getMinimumPoint(); BlockVector3 minY = region.getMinimumPoint();
int originX = minY.getBlockX(); int originX = minY.getBlockX();
int originY = minY.getBlockY();
int originZ = minY.getBlockZ(); int originZ = minY.getBlockZ();
int maxY = region.getMaximumPoint().getBlockY(); int maxY = region.getMaximumPoint().getBlockY();
@ -268,7 +274,9 @@ public class HeightMap {
for (int z = 0; z < height; ++z) { for (int z = 0; z < height; ++z) {
int zr = z + originZ; int zr = z + originZ;
for (int x = 0; x < width; ++x, index++) { for (int x = 0; x < width; ++x, index++) {
if (this.invalid != null && this.invalid[index]) continue; if (this.invalid != null && this.invalid[index]) {
continue;
}
int curHeight = this.data[index]; int curHeight = this.data[index];
@ -293,7 +301,9 @@ public class HeightMap {
} else { } else {
get = BlockTypes.AIR.getDefaultState(); get = BlockTypes.AIR.getDefaultState();
} }
if (get != BlockTypes.AIR.getDefaultState()) tmpBlock = get; if (get != BlockTypes.AIR.getDefaultState()) {
tmpBlock = get;
}
session.setBlock(xr, setY, zr, tmpBlock); session.setBlock(xr, setY, zr, tmpBlock);
++blocksChanged; ++blocksChanged;
} }

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.convolution; package com.sk89q.worldedit.math.convolution;
@ -32,7 +32,7 @@ public class HeightMapFilter {
/** /**
* Construct the HeightMapFilter object. * Construct the HeightMapFilter object.
* *
* @param kernel the kernel * @param kernel the kernel
*/ */
public HeightMapFilter(Kernel kernel) { public HeightMapFilter(Kernel kernel) {
@ -42,7 +42,7 @@ public class HeightMapFilter {
/** /**
* Construct the HeightMapFilter object. * Construct the HeightMapFilter object.
* *
* @param kernelWidth the width * @param kernelWidth the width
* @param kernelHeight the height * @param kernelHeight the height
* @param kernelData the data * @param kernelData the data
@ -53,15 +53,15 @@ public class HeightMapFilter {
} }
/** /**
* @return the kernel * Get the kernel.
*/ */
public Kernel getKernel() { public Kernel getKernel() {
return kernel; return kernel;
} }
/** /**
* Set Kernel * Set the kernel.
* *
* @param kernel the kernel * @param kernel the kernel
*/ */
public void setKernel(Kernel kernel) { public void setKernel(Kernel kernel) {
@ -71,7 +71,7 @@ public class HeightMapFilter {
} }
/** /**
* Filter with a 2D kernel * Filter with a 2D kernel.
* *
* @param inData the data * @param inData the data
* @param width the width * @param width the width
@ -107,7 +107,9 @@ public class HeightMapFilter {
int matrixOffset = ky * kw; int matrixOffset = ky * kw;
for (int kx = 0; kx < kw; ++kx) { for (int kx = 0; kx < kw; ++kx) {
float f = matrix[matrixOffset + kx]; float f = matrix[matrixOffset + kx];
if (f == 0) continue; if (f == 0) {
continue;
}
int offsetX = x + kx - kox; int offsetX = x + kx - kox;
// Clamp coordinates inside data // Clamp coordinates inside data

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.convolution; package com.sk89q.worldedit.math.convolution;
@ -27,11 +27,11 @@ package com.sk89q.worldedit.math.convolution;
*/ */
public class Kernel { public class Kernel {
private int width; private final int width;
private int height; private final int height;
private int xOrigin; private final int xOrigin;
private int yOrigin; private final int yOrigin;
private float[] data; private final float[] data;
public Kernel(int width, int height, float[] data) { public Kernel(int width, int height, float[] data) {
this.width = width; this.width = width;
@ -72,4 +72,4 @@ public class Kernel {
return data; return data;
} }
} }

View File

@ -3,24 +3,26 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.convolution; package com.sk89q.worldedit.math.convolution;
import java.util.Arrays;
/** /**
* A linear Kernel generator (all cells weight the same) * A linear Kernel generator (all cells weigh the same).
*/ */
public class LinearKernel extends Kernel { public class LinearKernel extends Kernel {
@ -32,7 +34,7 @@ public class LinearKernel extends Kernel {
int diameter = radius * 2 + 1; int diameter = radius * 2 + 1;
float[] data = new float[diameter * diameter]; float[] data = new float[diameter * diameter];
for (int i = 0; i < data.length; data[i++] = 1.0f / data.length); Arrays.fill(data, 1.0f / data.length);
return data; return data;
} }

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.geom; package com.sk89q.worldedit.math.geom;
@ -31,19 +31,18 @@ import java.util.List;
public final class Polygons { public final class Polygons {
private Polygons() { private Polygons() {
} }
/** /**
* Calculates the polygon shape of a cylinder which can then be used for e.g. intersection detection. * Calculates the polygon shape of a cylinder which can then be used for e.g. intersection detection.
* *
* @param center the center point of the cylinder * @param center the center point of the cylinder
* @param radius the radius of the cylinder * @param radius the radius of the cylinder
* @param maxPoints max points to be used for the calculation * @param maxPoints max points to be used for the calculation
* @return a list of {@link BlockVector2} which resemble the shape as a polygon * @return a list of {@link BlockVector2} which resemble the shape as a polygon
*/ */
public static List<BlockVector2> polygonizeCylinder(BlockVector2 center, Vector2 radius, int maxPoints) { public static List<BlockVector2> polygonizeCylinder(BlockVector2 center, Vector2 radius, int maxPoints) {
int nPoints = (int) Math.ceil(Math.PI*radius.length()); int nPoints = (int) Math.ceil(Math.PI * radius.length());
// These strange semantics for maxPoints are copied from the selectSecondary method. // These strange semantics for maxPoints are copied from the selectSecondary method.
if (maxPoints >= 0 && nPoints >= maxPoints) { if (maxPoints >= 0 && nPoints >= maxPoints) {
@ -60,5 +59,5 @@ public final class Polygons {
return points; return points;
} }
} }

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
// $Id$ // $Id$
@ -26,7 +26,7 @@ import com.sk89q.worldedit.math.Vector3;
import java.util.List; import java.util.List;
/** /**
* Represents an arbitrary function in &#8477; &rarr; &#8477;<sup>3</sup> * Represents an arbitrary function in &#8477; &rarr; &#8477;<sup>3</sup>.
*/ */
public interface Interpolation { public interface Interpolation {
@ -39,7 +39,7 @@ public interface Interpolation {
void setNodes(List<Node> nodes); void setNodes(List<Node> nodes);
/** /**
* Gets the result of f(position) * Gets the result of f(position).
* *
* @param position the position to interpolate * @param position the position to interpolate
* @return the result * @return the result

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
// $Id$ // $Id$
@ -43,10 +43,10 @@ public class KochanekBartelsInterpolation implements Interpolation {
private Vector3[] coeffC; private Vector3[] coeffC;
private Vector3[] coeffD; private Vector3[] coeffD;
private double scaling; private double scaling;
private MutableBlockVector3 mutable = new MutableBlockVector3(); private final MutableBlockVector3 mutable = new MutableBlockVector3();
public KochanekBartelsInterpolation() { public KochanekBartelsInterpolation() {
setNodes(Collections.<Node>emptyList()); setNodes(Collections.emptyList());
} }
@Override @Override
@ -64,8 +64,9 @@ public class KochanekBartelsInterpolation implements Interpolation {
coeffC = new Vector3[nNodes]; coeffC = new Vector3[nNodes];
coeffD = new Vector3[nNodes]; coeffD = new Vector3[nNodes];
if (nNodes == 0) if (nNodes == 0) {
return; return;
}
Node nodeB = nodes.get(0); Node nodeB = nodes.get(0);
double tensionB = nodeB.getTension(); double tensionB = nodeB.getTension();
@ -84,14 +85,14 @@ public class KochanekBartelsInterpolation implements Interpolation {
} }
// Kochanek-Bartels tangent coefficients // Kochanek-Bartels tangent coefficients
final double ta = (1-tensionA)*(1+biasA)*(1+continuityA)/2; // Factor for lhs of d[i] final double ta = (1 - tensionA) * (1 + biasA) * (1 + continuityA) / 2; // Factor for lhs of d[i]
final double tb = (1-tensionA)*(1-biasA)*(1-continuityA)/2; // Factor for rhs of d[i] final double tb = (1 - tensionA) * (1 - biasA) * (1 - continuityA) / 2; // Factor for rhs of d[i]
final double tc = (1-tensionB)*(1+biasB)*(1-continuityB)/2; // Factor for lhs of d[i+1] final double tc = (1 - tensionB) * (1 + biasB) * (1 - continuityB) / 2; // Factor for lhs of d[i+1]
final double td = (1-tensionB)*(1-biasB)*(1+continuityB)/2; // Factor for rhs of d[i+1] final double td = (1 - tensionB) * (1 - biasB) * (1 + continuityB) / 2; // Factor for rhs of d[i+1]
coeffA[i] = linearCombination(i, -ta, ta- tb-tc+2, tb+tc-td-2, td); coeffA[i] = linearCombination(i, -ta, ta - tb - tc + 2, tb + tc - td - 2, td);
coeffB[i] = linearCombination(i, 2*ta, -2*ta+2*tb+tc-3, -2*tb-tc+td+3, -td); coeffB[i] = linearCombination(i, 2 * ta, -2 * ta + 2 * tb + tc - 3, -2 * tb - tc + td + 3, -td);
coeffC[i] = linearCombination(i, -ta, ta- tb , tb , 0); coeffC[i] = linearCombination(i, -ta, ta - tb, tb, 0);
//coeffD[i] = linearCombination(i, 0, 1, 0, 0); //coeffD[i] = linearCombination(i, 0, 1, 0, 0);
coeffD[i] = retrieve(i); // this is an optimization coeffD[i] = retrieve(i); // this is an optimization
} }
@ -125,11 +126,13 @@ public class KochanekBartelsInterpolation implements Interpolation {
* @return nodes[clamp(0, nodes.length-1)] * @return nodes[clamp(0, nodes.length-1)]
*/ */
private Vector3 retrieve(int index) { private Vector3 retrieve(int index) {
if (index < 0) if (index < 0) {
return fastRetrieve(0); return fastRetrieve(0);
}
if (index >= nodes.size()) if (index >= nodes.size()) {
return fastRetrieve(nodes.size()-1); return fastRetrieve(nodes.size() - 1);
}
return fastRetrieve(index); return fastRetrieve(index);
} }
@ -140,11 +143,13 @@ public class KochanekBartelsInterpolation implements Interpolation {
@Override @Override
public Vector3 getPosition(double position) { public Vector3 getPosition(double position) {
if (coeffA == null) if (coeffA == null) {
throw new IllegalStateException("Must call setNodes first."); throw new IllegalStateException("Must call setNodes first.");
}
if (position > 1) if (position > 1) {
return null; return null;
}
position *= scaling; position *= scaling;
@ -166,11 +171,13 @@ public class KochanekBartelsInterpolation implements Interpolation {
@Override @Override
public Vector3 get1stDerivative(double position) { public Vector3 get1stDerivative(double position) {
if (coeffA == null) if (coeffA == null) {
throw new IllegalStateException("Must call setNodes first."); throw new IllegalStateException("Must call setNodes first.");
}
if (position > 1) if (position > 1) {
return null; return null;
}
position *= scaling; position *= scaling;
@ -181,16 +188,18 @@ public class KochanekBartelsInterpolation implements Interpolation {
final Vector3 b = coeffB[index]; final Vector3 b = coeffB[index];
final Vector3 c = coeffC[index]; final Vector3 c = coeffC[index];
return a.multiply(1.5*position - 3.0*index).add(b).multiply(2.0*position).add(a.multiply(1.5*index).subtract(b).multiply(2.0*index)).add(c).multiply(scaling); return a.multiply(1.5 * position - 3.0 * index).add(b).multiply(2.0 * position).add(a.multiply(1.5 * index).subtract(b).multiply(2.0 * index)).add(c).multiply(scaling);
} }
@Override @Override
public double arcLength(double positionA, double positionB) { public double arcLength(double positionA, double positionB) {
if (coeffA == null) if (coeffA == null) {
throw new IllegalStateException("Must call setNodes first."); throw new IllegalStateException("Must call setNodes first.");
}
if (positionA > positionB) if (positionA > positionB) {
return arcLength(positionB, positionA); return arcLength(positionB, positionA);
}
positionA *= scaling; positionA *= scaling;
positionB *= scaling; positionB *= scaling;
@ -205,23 +214,21 @@ public class KochanekBartelsInterpolation implements Interpolation {
} }
/** /**
* Assumes a < b * Assumes a < b.
*/ */
private double arcLengthRecursive(int indexLeft, double remainderLeft, int indexRight, double remainderRight) { private double arcLengthRecursive(int indexLeft, double remainderLeft, int indexRight, double remainderRight) {
switch (indexRight - indexLeft) { switch (indexRight - indexLeft) {
case 0: case 0:
return arcLengthRecursive(indexLeft, remainderLeft, remainderRight); return arcLengthRecursive(indexLeft, remainderLeft, remainderRight);
case 1: case 1:
// This case is merely a speed-up for a very common case // This case is merely a speed-up for a very common case
return return arcLengthRecursive(indexLeft, remainderLeft, 1.0)
arcLengthRecursive(indexLeft, remainderLeft, 1.0) + + arcLengthRecursive(indexRight, 0.0, remainderRight);
arcLengthRecursive(indexRight, 0.0, remainderRight);
default: default:
return return arcLengthRecursive(indexLeft, remainderLeft, indexRight - 1, 1.0)
arcLengthRecursive(indexLeft, remainderLeft, indexRight - 1, 1.0) + + arcLengthRecursive(indexRight, 0.0, remainderRight);
arcLengthRecursive(indexRight, 0.0, remainderRight);
} }
} }
@ -233,9 +240,9 @@ public class KochanekBartelsInterpolation implements Interpolation {
final int nPoints = 8; final int nPoints = 8;
double accum = a.multiply(remainderLeft).add(b).multiply(remainderLeft).add(c).length() / 2.0; double accum = a.multiply(remainderLeft).add(b).multiply(remainderLeft).add(c).length() / 2.0;
for (int i = 1; i < nPoints-1; ++i) { for (int i = 1; i < nPoints - 1; ++i) {
double t = ((double) i) / nPoints; double t = ((double) i) / nPoints;
t = (remainderRight-remainderLeft)*t + remainderLeft; t = (remainderRight - remainderLeft) * t + remainderLeft;
accum += a.multiply(t).add(b).multiply(t).add(c).length(); accum += a.multiply(t).add(b).multiply(t).add(c).length();
} }
@ -245,11 +252,13 @@ public class KochanekBartelsInterpolation implements Interpolation {
@Override @Override
public int getSegment(double position) { public int getSegment(double position) {
if (coeffA == null) if (coeffA == null) {
throw new IllegalStateException("Must call setNodes first."); throw new IllegalStateException("Must call setNodes first.");
}
if (position > 1) if (position > 1) {
return Integer.MAX_VALUE; return Integer.MAX_VALUE;
}
position *= scaling; position *= scaling;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
// $Id$ // $Id$
@ -37,17 +37,19 @@ public class LinearInterpolation implements Interpolation {
@Override @Override
public void setNodes(List<Node> nodes) { public void setNodes(List<Node> nodes) {
checkNotNull(nodes); checkNotNull(nodes);
this.nodes = nodes; this.nodes = nodes;
} }
@Override @Override
public Vector3 getPosition(double position) { public Vector3 getPosition(double position) {
if (nodes == null) if (nodes == null) {
throw new IllegalStateException("Must call setNodes first."); throw new IllegalStateException("Must call setNodes first.");
}
if (position > 1) if (position > 1) {
return null; return null;
}
position *= nodes.size() - 1; position *= nodes.size() - 1;
@ -77,11 +79,13 @@ public class LinearInterpolation implements Interpolation {
@Override @Override
public Vector3 get1stDerivative(double position) { public Vector3 get1stDerivative(double position) {
if (nodes == null) if (nodes == null) {
throw new IllegalStateException("Must call setNodes first."); throw new IllegalStateException("Must call setNodes first.");
}
if (position > 1) if (position > 1) {
return null; return null;
}
position *= nodes.size() - 1; position *= nodes.size() - 1;
@ -95,11 +99,13 @@ public class LinearInterpolation implements Interpolation {
@Override @Override
public double arcLength(double positionA, double positionB) { public double arcLength(double positionA, double positionB) {
if (nodes == null) if (nodes == null) {
throw new IllegalStateException("Must call setNodes first."); throw new IllegalStateException("Must call setNodes first.");
}
if (positionA > positionB) if (positionA > positionB) {
return arcLength(positionB, positionA); return arcLength(positionB, positionA);
}
positionA *= nodes.size() - 1; positionA *= nodes.size() - 1;
positionB *= nodes.size() - 1; positionB *= nodes.size() - 1;
@ -118,19 +124,17 @@ public class LinearInterpolation implements Interpolation {
*/ */
private double arcLengthRecursive(int indexA, double remainderA, int indexB, double remainderB) { private double arcLengthRecursive(int indexA, double remainderA, int indexB, double remainderB) {
switch (indexB - indexA) { switch (indexB - indexA) {
case 0: case 0:
return arcLengthRecursive(indexA, remainderA, remainderB); return arcLengthRecursive(indexA, remainderA, remainderB);
case 1: case 1:
// This case is merely a speed-up for a very common case // This case is merely a speed-up for a very common case
return return arcLengthRecursive(indexA, remainderA, 1.0)
arcLengthRecursive(indexA, remainderA, 1.0) + + arcLengthRecursive(indexB, 0.0, remainderB);
arcLengthRecursive(indexB, 0.0, remainderB);
default: default:
return return arcLengthRecursive(indexA, remainderA, indexB - 1, 1.0)
arcLengthRecursive(indexA, remainderA, indexB - 1, 1.0) + + arcLengthRecursive(indexB, 0.0, remainderB);
arcLengthRecursive(indexB, 0.0, remainderB);
} }
} }
@ -143,11 +147,13 @@ public class LinearInterpolation implements Interpolation {
@Override @Override
public int getSegment(double position) { public int getSegment(double position) {
if (nodes == null) if (nodes == null) {
throw new IllegalStateException("Must call setNodes first."); throw new IllegalStateException("Must call setNodes first.");
}
if (position > 1) if (position > 1) {
return Integer.MAX_VALUE; return Integer.MAX_VALUE;
}
position *= nodes.size() - 1; position *= nodes.size() - 1;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
// $Id$ // $Id$

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
// $Id$ // $Id$
@ -47,7 +47,7 @@ public class ReparametrisingInterpolation implements Interpolation {
public ReparametrisingInterpolation(Interpolation baseInterpolation) { public ReparametrisingInterpolation(Interpolation baseInterpolation) {
checkNotNull(baseInterpolation); checkNotNull(baseInterpolation);
this.baseInterpolation = baseInterpolation; this.baseInterpolation = baseInterpolation;
} }
@ -67,16 +67,18 @@ public class ReparametrisingInterpolation implements Interpolation {
@Override @Override
public Vector3 getPosition(double position) { public Vector3 getPosition(double position) {
if (position > 1) if (position > 1) {
return null; return null;
}
return baseInterpolation.getPosition(arcToParameter(position)); return baseInterpolation.getPosition(arcToParameter(position));
} }
@Override @Override
public Vector3 get1stDerivative(double position) { public Vector3 get1stDerivative(double position) {
if (position > 1) if (position > 1) {
return null; return null;
}
return baseInterpolation.get1stDerivative(arcToParameter(position)).normalize().multiply(totalArcLength); return baseInterpolation.get1stDerivative(arcToParameter(position)).normalize().multiply(totalArcLength);
} }
@ -87,10 +89,13 @@ public class ReparametrisingInterpolation implements Interpolation {
} }
private double arcToParameter(double arc) { private double arcToParameter(double arc) {
if (cache.isEmpty()) if (cache.isEmpty()) {
throw new IllegalStateException("Must call setNodes first."); throw new IllegalStateException("Must call setNodes first.");
}
if (arc > 1) arc = 1; if (arc > 1) {
arc = 1;
}
arc *= totalArcLength; arc *= totalArcLength;
Entry<Double, Double> floorEntry = cache.floorEntry(arc); Entry<Double, Double> floorEntry = cache.floorEntry(arc);
@ -140,8 +145,7 @@ public class ReparametrisingInterpolation implements Interpolation {
// search between left and mid // search between left and mid
rightArc = midArc; rightArc = midArc;
rightParameter = midParameter; rightParameter = midParameter;
} } else {
else {
// search between mid and right // search between mid and right
leftArc = midArc; leftArc = midArc;
leftParameter = midParameter; leftParameter = midParameter;
@ -152,8 +156,9 @@ public class ReparametrisingInterpolation implements Interpolation {
@Override @Override
public int getSegment(double position) { public int getSegment(double position) {
if (position > 1) if (position > 1) {
return Integer.MAX_VALUE; return Integer.MAX_VALUE;
}
return baseInterpolation.getSegment(arcToParameter(position)); return baseInterpolation.getSegment(arcToParameter(position));
} }

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.noise; package com.sk89q.worldedit.math.noise;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.noise; package com.sk89q.worldedit.math.noise;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.noise; package com.sk89q.worldedit.math.noise;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.noise; package com.sk89q.worldedit.math.noise;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.noise; package com.sk89q.worldedit.math.noise;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.noise; package com.sk89q.worldedit.math.noise;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.transform; package com.sk89q.worldedit.math.transform;
@ -34,15 +34,13 @@ import java.io.Serializable;
*/ */
public class AffineTransform implements Transform, Serializable { public class AffineTransform implements Transform, Serializable {
private AffineTransform inverse;
/** /**
* coefficients for x coordinate. * coefficients for x coordinate.
*/ */
private final double m00; private final double m00;
private final double m01; private final double m01;
private final double m02; private final double m02;
private double m03; private final double m03;
/** /**
* coefficients for y coordinate. * coefficients for y coordinate.
@ -50,7 +48,7 @@ public class AffineTransform implements Transform, Serializable {
private final double m10; private final double m10;
private final double m11; private final double m11;
private final double m12; private final double m12;
private double m13; private final double m13;
/** /**
* coefficients for z coordinate. * coefficients for z coordinate.
@ -58,13 +56,13 @@ public class AffineTransform implements Transform, Serializable {
private final double m20; private final double m20;
private final double m21; private final double m21;
private final double m22; private final double m22;
private double m23; private final double m23;
// =================================================================== // ===================================================================
// constructors // constructors
/** /**
* Creates a new affine transform3D set to identity. * Creates a new affine transform3D set to the identity.
*/ */
public AffineTransform() { public AffineTransform() {
// init to identity matrix // init to identity matrix
@ -85,6 +83,7 @@ public class AffineTransform implements Transform, Serializable {
m20 = coefs[6]; m20 = coefs[6];
m21 = coefs[7]; m21 = coefs[7];
m22 = coefs[8]; m22 = coefs[8];
m03 = m13 = m23 = 0;
} else if (coefs.length == 12) { } else if (coefs.length == 12) {
m00 = coefs[0]; m00 = coefs[0];
m01 = coefs[1]; m01 = coefs[1];
@ -99,11 +98,14 @@ public class AffineTransform implements Transform, Serializable {
m22 = coefs[10]; m22 = coefs[10];
m23 = coefs[11]; m23 = coefs[11];
} else { } else {
throw new IllegalArgumentException("Input array must have 9 or 12 elements"); throw new IllegalArgumentException(
"Input array must have 9 or 12 elements");
} }
} }
public AffineTransform(double xx, double yx, double zx, double tx, double xy, double yy, double zy, double ty, double xz, double yz, double zz, double tz) { public AffineTransform(double xx, double yx, double zx, double tx,
double xy, double yy, double zy, double ty, double xz, double yz,
double zz, double tz) {
m00 = xx; m00 = xx;
m01 = yx; m01 = yx;
m02 = zx; m02 = zx;
@ -123,40 +125,10 @@ public class AffineTransform implements Transform, Serializable {
@Override @Override
public boolean isIdentity() { public boolean isIdentity() {
if (m00 != 1) { return m00 == m11 && m11 == m22 && m22 == 1
return false; && m01 == m02 && m02 == m03 && m03 == 0
} && m10 == m12 && m12 == m13 && m13 == 0
if (m11 != 1) { && m20 == m21 && m21 == m23 && m23 == 0;
return false;
}
if (m22 != 1) {
return false;
}
if (m01 != 0) {
return false;
}
if (m02 != 0) {
return false;
}
if (m03 != 0) {
return false;
}
if (m10 != 0) {
return false;
}
if (m12 != 0) {
return false;
}
if (m13 != 0) {
return false;
}
if (m20 != 0) {
return false;
}
if (m21 != 0) {
return false;
}
return m23 == 0;
} }
/** /**
@ -164,20 +136,7 @@ public class AffineTransform implements Transform, Serializable {
* 12 double. * 12 double.
*/ */
public double[] coefficients() { public double[] coefficients() {
return new double[] { return new double[]{m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23};
m00,
m01,
m02,
m03,
m10,
m11,
m12,
m13,
m20,
m21,
m22,
m23
};
} }
public boolean isOffAxis() { public boolean isOffAxis() {
@ -198,8 +157,8 @@ public class AffineTransform implements Transform, Serializable {
* @return the determinant of the transform. * @return the determinant of the transform.
*/ */
private double determinant() { private double determinant() {
return m00 * (m11 * m22 - m12 * m21) - m01 * (m10 * m22 - m20 * m12) + m02 * (m10 * m21 return m00 * (m11 * m22 - m12 * m21) - m01 * (m10 * m22 - m20 * m12)
- m20 * m11); + m02 * (m10 * m21 - m20 * m11);
} }
/** /**
@ -207,26 +166,23 @@ public class AffineTransform implements Transform, Serializable {
*/ */
@Override @Override
public AffineTransform inverse() { public AffineTransform inverse() {
if (inverse != null) {
return inverse;
}
double det = this.determinant(); double det = this.determinant();
return new AffineTransform( return new AffineTransform(
(m11 * m22 - m21 * m12) / det, (m11 * m22 - m21 * m12) / det,
(m21 * m02 - m01 * m22) / det, (m21 * m02 - m01 * m22) / det,
(m01 * m12 - m11 * m02) / det, (m01 * m12 - m11 * m02) / det,
(m01 * (m22 * m13 - m12 * m23) + m02 * (m11 * m23 - m21 * m13) - m03 * (m11 * m22 (m01 * (m22 * m13 - m12 * m23) + m02 * (m11 * m23 - m21 * m13)
- m21 * m12)) / det, - m03 * (m11 * m22 - m21 * m12)) / det,
(m20 * m12 - m10 * m22) / det, (m20 * m12 - m10 * m22) / det,
(m00 * m22 - m20 * m02) / det, (m00 * m22 - m20 * m02) / det,
(m10 * m02 - m00 * m12) / det, (m10 * m02 - m00 * m12) / det,
(m00 * (m12 * m23 - m22 * m13) - m02 * (m10 * m23 - m20 * m13) + m03 * (m10 * m22 (m00 * (m12 * m23 - m22 * m13) - m02 * (m10 * m23 - m20 * m13)
- m20 * m12)) / det, + m03 * (m10 * m22 - m20 * m12)) / det,
(m10 * m21 - m20 * m11) / det, (m10 * m21 - m20 * m11) / det,
(m20 * m01 - m00 * m21) / det, (m20 * m01 - m00 * m21) / det,
(m00 * m11 - m10 * m01) / det, (m00 * m11 - m10 * m01) / det,
(m00 * (m21 * m13 - m11 * m23) + m01 * (m10 * m23 - m20 * m13) - m03 * (m10 * m21 (m00 * (m21 * m13 - m11 * m23) + m01 * (m10 * m23 - m20 * m13)
- m20 * m11)) / det); - m03 * (m10 * m21 - m20 * m11)) / det);
} }
// =================================================================== // ===================================================================
@ -252,7 +208,10 @@ public class AffineTransform implements Transform, Serializable {
double n21 = m20 * that.m01 + m21 * that.m11 + m22 * that.m21; double n21 = m20 * that.m01 + m21 * that.m11 + m22 * that.m21;
double n22 = m20 * that.m02 + m21 * that.m12 + m22 * that.m22; double n22 = m20 * that.m02 + m21 * that.m12 + m22 * that.m22;
double n23 = m20 * that.m03 + m21 * that.m13 + m22 * that.m23 + m23; double n23 = m20 * that.m03 + m21 * that.m13 + m22 * that.m23 + m23;
return new AffineTransform(n00, n01, n02, n03, n10, n11, n12, n13, n20, n21, n22, n23); return new AffineTransform(
n00, n01, n02, n03,
n10, n11, n12, n13,
n20, n21, n22, n23);
} }
/** /**
@ -275,7 +234,10 @@ public class AffineTransform implements Transform, Serializable {
double n21 = that.m20 * m01 + that.m21 * m11 + that.m22 * m21; double n21 = that.m20 * m01 + that.m21 * m11 + that.m22 * m21;
double n22 = that.m20 * m02 + that.m21 * m12 + that.m22 * m22; double n22 = that.m20 * m02 + that.m21 * m12 + that.m22 * m22;
double n23 = that.m20 * m03 + that.m21 * m13 + that.m22 * m23 + that.m23; double n23 = that.m20 * m03 + that.m21 * m13 + that.m22 * m23 + that.m23;
return new AffineTransform(n00, n01, n02, n03, n10, n11, n12, n13, n20, n21, n22, n23); return new AffineTransform(
n00, n01, n02, n03,
n10, n11, n12, n13,
n20, n21, n22, n23);
} }
public AffineTransform translate(Vector3 vec) { public AffineTransform translate(Vector3 vec) {
@ -293,19 +255,31 @@ public class AffineTransform implements Transform, Serializable {
public AffineTransform rotateX(double theta) { public AffineTransform rotateX(double theta) {
double cot = MathUtils.dCos(theta); double cot = MathUtils.dCos(theta);
double sit = MathUtils.dSin(theta); double sit = MathUtils.dSin(theta);
return concatenate(new AffineTransform(1, 0, 0, 0, 0, cot, -sit, 0, 0, sit, cot, 0)); return concatenate(
new AffineTransform(
1, 0, 0, 0,
0, cot, -sit, 0,
0, sit, cot, 0));
} }
public AffineTransform rotateY(double theta) { public AffineTransform rotateY(double theta) {
double cot = MathUtils.dCos(theta); double cot = MathUtils.dCos(theta);
double sit = MathUtils.dSin(theta); double sit = MathUtils.dSin(theta);
return concatenate(new AffineTransform(cot, 0, sit, 0, 0, 1, 0, 0, -sit, 0, cot, 0)); return concatenate(
new AffineTransform(
cot, 0, sit, 0,
0, 1, 0, 0,
-sit, 0, cot, 0));
} }
public AffineTransform rotateZ(double theta) { public AffineTransform rotateZ(double theta) {
double cot = MathUtils.dCos(theta); double cot = MathUtils.dCos(theta);
double sit = MathUtils.dSin(theta); double sit = MathUtils.dSin(theta);
return concatenate(new AffineTransform(cot, -sit, 0, 0, sit, cot, 0, 0, 0, 0, 1, 0)); return concatenate(
new AffineTransform(
cot, -sit, 0, 0,
sit, cot, 0, 0,
0, 0, 1, 0));
} }
public AffineTransform scale(double s) { public AffineTransform scale(double s) {
@ -361,13 +335,20 @@ public class AffineTransform implements Transform, Serializable {
} }
/** /**
* Returns if this affine transform is representing a horizontal flip. * Returns if this affine transform represents a horizontal flip.
*/ */
public boolean isHorizontalFlip() { public boolean isHorizontalFlip() {
// use the determinant of the x-z submatrix to check if this is a horizontal flip // use the determinant of the x-z submatrix to check if this is a horizontal flip
return m00 * m22 - m02 * m20 < 0; return m00 * m22 - m02 * m20 < 0;
} }
/**
* Returns if this affine transform represents a vertical flip.
*/
public boolean isVerticalFlip() {
return m11 < 0;
}
@Override @Override
public String toString() { public String toString() {
return String.format("Affine[%g %g %g %g, %g %g %g %g, %g %g %g %g]}", m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23); return String.format("Affine[%g %g %g %g, %g %g %g %g, %g %g %g %g]}", m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23);

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.transform; package com.sk89q.worldedit.math.transform;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.transform; package com.sk89q.worldedit.math.transform;

View File

@ -2,7 +2,7 @@ package com.sk89q.worldedit.math.transform;
import com.sk89q.worldedit.math.Vector3; import com.sk89q.worldedit.math.Vector3;
public class RoundedTransform implements Transform{ public class RoundedTransform implements Transform {
private final Transform transform; private final Transform transform;
public RoundedTransform(Transform transform) { public RoundedTransform(Transform transform) {
@ -17,7 +17,8 @@ public class RoundedTransform implements Transform{
@Override @Override
public Vector3 apply(Vector3 input) { public Vector3 apply(Vector3 input) {
Vector3 val = transform.apply(input); Vector3 val = transform.apply(input);
return Vector3.at(Math.floor(val.getX() + 0.5), Math.floor(val.getY() + 0.5), Math.floor(val.getY() + 0.5)); return Vector3.at(Math.floor(val.getX() + 0.5), Math.floor(val.getY() + 0.5), Math
.floor(val.getY() + 0.5));
} }
@Override @Override

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.transform; package com.sk89q.worldedit.math.transform;

View File

@ -3,18 +3,18 @@
* Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors * Copyright (C) WorldEdit team and contributors
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Lesser General Public License as published by the * it under the terms of the GNU General Public License as published by
* Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sk89q.worldedit.math.transform; package com.sk89q.worldedit.math.transform;

View File

@ -32,6 +32,7 @@ import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Set; import java.util.Set;
public abstract class AbstractRegion extends AbstractSet<BlockVector3> implements Region { public abstract class AbstractRegion extends AbstractSet<BlockVector3> implements Region {
@ -226,12 +227,8 @@ public abstract class AbstractRegion extends AbstractSet<BlockVector3> implement
return false; return false;
} }
Region region = ((Region) o); Region region = ((Region) o);
if (this.getWorld() != region.getWorld()) {
if (this.getWorld() == null || region.getWorld() == null) { if (Objects.equals(this.getWorld(), region.getWorld())
return false;
}
}
if (this.getWorld().equals(region.getWorld())
&& this.getMinimumPoint().equals(region.getMinimumPoint()) && this.getMinimumPoint().equals(region.getMinimumPoint())
&& this.getMaximumPoint().equals(region.getMaximumPoint()) && this.getMaximumPoint().equals(region.getMaximumPoint())
&& this.getVolume() == region.getVolume()) { && this.getVolume() == region.getVolume()) {

View File

@ -19,7 +19,6 @@
package com.sk89q.worldedit.util.paste; package com.sk89q.worldedit.util.paste;
import com.boydti.fawe.util.IncendoPaster;
import com.sk89q.worldedit.command.util.AsyncCommandBuilder; import com.sk89q.worldedit.command.util.AsyncCommandBuilder;
import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.util.formatting.text.TextComponent; import com.sk89q.worldedit.util.formatting.text.TextComponent;
@ -31,7 +30,7 @@ import java.util.concurrent.Callable;
public final class ActorCallbackPaste { public final class ActorCallbackPaste {
private static final Paster paster = new IncendoPaster("fastasyncworldedit"); private static final Paster paster = new EngineHubPaste();
private ActorCallbackPaste() { private ActorCallbackPaste() {
} }

View File

@ -1,322 +0,0 @@
# 原译者Green_Chennai (MCBBS: ww2498010071)
# 2018年10月14日 08:44:53进行过第7次更新
# 佛壁灯于 2018年12月10日 21:24:35 (UTC+8) 大幅改进翻译质量
# 请其他译者勿使用机器翻译。谢谢!
info:
prefix: '(FAWE)'
file_deleted: '%s0 已被删除。'
schematic_pasting: '正在粘贴布局。此操作无法撤销。'
lighting_propogate_selection: '光照已在 %s0 个区块内传播。(注:您可使用 //removelight 移除)'
updated_lighting_selection: '已更新 %s0 个区块内的光照。(数据包可能要稍后发出)'
set_region: '选择区域已设置为您当前允许的区域'
worldedit_command_limit: '请等待完成您的当前操作'
worldedit_delayed: '正在处理您的快异创世操作,请稍后···'
worldedit_run: '很抱歉造成延误,现正执行 %s'
worldedit_complete: '编辑完成。'
require_selection_in_mask: '您选中的 %s 不在蒙版内。您只能在允许的区域内编辑。'
worldedit_volume: '您不能选择 %current% 大小的区域。所允许的最大区域为 %max%。'
worldedit_iterations: '您不能重复 %current% 次。所允许的最多重复为 %max% 次。'
worldedit_unsafe: '已阻止对此命令的访问'
worldedit_dangerous_worldedit: '%s1 在 %s0 处进行了不安全的编辑'
worldedit_toggle_tips_on: '已禁用快异创世提示。'
worldedit_toggle_tips_off: '已启用快异创世提示。'
worldedit_bypassed: '正绕过快异创世限制。'
worldedit_unmasked: '您的快异创世编辑现已不受限制。'
worldedit_restricted: '您的快异创世编辑现正受限制。'
worldedit_oom_admin: |-
可选项:
- //fast
- 进行小编辑
- 分配更多内存
- 禁用 `max-memory-percent`
compressed: '已压缩历史。保存为 ~ %s0b%s1 倍原大小)'
action_complete: '已在 %s0 秒内完成操作'
error:
worldedit_extend: '您的编辑可能已超过所允许的范围。'
web_unauthorized: '仅允许来自已配置网页主机的链接: %s0'
command_syntax: '用法: %s0'
no_perm: '您缺少权限节点: %s0'
setting_disable: '缺少设置: %s0'
brush_not_found: '可用画笔: %s0'
brush_incompatible: '画笔与此版本不兼容'
schematic_not_found: '未找到布局: %s0'
no_region: '您当前没有允许修改的区域'
no_mask: '您当前没有蒙版集'
not_player: '您必须为玩家才能执行此操作!'
player_not_found: '玩家未找到: %s0'
oom: |-
[致命错误] 系统检测到可用内存 < 1%。我们将执行下列操作:
- 终止创世的方块放置
- 清除创世历史
- 卸载无用区块
- 杀死实体
- 收集垃圾
若您正尝试使服务器崩溃,请忽略此消息
注:低内存可能但不一定由创世导致
worldedit_some_fails: '%s0 个方块由于在您所允许的区域外而无法放置。'
worldedit_some_fails_blockbag: '缺少方块: %s0'
web:
generating_link: '正在上传 %s请稍后···'
generating_link_failed: '生成下载链接失败!'
download_link: '%s'
worldedit:
general:
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 个方块。'
cut:
command_cut_slow: '已剪切 %s0 个方块。'
command_cut_lazy: '%s0 个方块将在粘贴时被移除'
paste:
command_paste: 已粘贴剪贴板内容在 %s0
rotate:
command_rotate: 已旋转剪贴板内容
flip:
command_flipped: 已翻转剪贴板内容
regen:
command_regen_0: 已重新生成区域。
command_regen_1: 已重新生成区域。
command_regen_2: 已重新生成区域。
tree:
command_tree: '已生成 %s0 棵树木。'
command_pumpkin: '已生成 %s0 个南瓜。'
flora:
command_flora: '已生成 %s0 棵植物。'
history:
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)
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_expand: 地区扩大%s0 块
selection_expand_vert: 区域已增大 %s0 个方块。(从上到下)
selection_inset: 已插入区域
selection_outset: 已移出区域
selection_shift: 已移动区域
selection_cleared: 已清除选择
navigation:
navigation_wand_error: '无可传递项'
anvil:
world_is_loaded: 执行操作时世界不能被占用。请先卸载世界,或使用 -f 标记覆盖(请先保存)
brush:
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_try_other: |-
还有其他画笔可用,如:
- //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
tool:
tool_inspect: 已绑定检查工具至 %s0。
tool_inspect_info: '%s0 在 %s3 前将 %s1 更改为 %s2'
tool_inspect_info_footer: '共计: %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: 已更改模式。请使用稿子左击,使用 // 禁用此功能。
snapshot:
snapshot_loaded: '已载入快照 %s0 ;正在恢复···'
snapshot_set: '已设置快照为: %s0'
snapshot_newest: 正使用最新版快照。
snapshot_list_header: '世界快照 (%s0):'
snapshot_list_footer: 请使用 /snap use [快照] 或 /snap use latest。
biome:
biome_list_header: '生态群系 (页 %s0/%s1):'
biome_changed: 已更改 %s0 列中的生态群系。
utility:
kill_success: '已击杀半径 %s0 内的 %s1 个实体。'
nothing_confirmed: 您没有待确认的操作。
page_footer: 请使用 %s0 前往下一页
schematic:
schematic_prompt_clear: '您可能需先使用 %s0 来清除剪贴板'
schematic_show: |-
正在显示来自 %s1 的 %s0 个原理图:
- 左击将结构复制到您的剪贴板
- 右击将结构添加到多重剪贴板
- 使用 %s2 回到原世界
schematic_format: '可用格式 (名称: 搜索名称)'
schematic_loaded: '已加载 %s0。请使用 //paste 粘贴'
schematic_saved: '已保存 %s0。'
schematic_page: 页数必须为 %s
schematic_none: 未找到文件。
schematic_list: '可用文件 (文件名: 格式) [%s0/%s1]:'
schematic_list_elem: ' - %s0 - %s1'
schematic_move_exists: '%s0 已存在'
schematic_move_success: '%s0 -> %s1'
schematic_move_failed: '%s0 未移动: %s1'
clipboard:
clipboard_cleared: 已清除剪贴板
clipboard_invalid_format: '未知剪贴板格式: %s0'
clipboard_uri_not_found: 您尚未加载 %s0
visitor:
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: '已设置位置 %s0 在 %s1 (%s2)。'
selector_center: 已设置中心为 %s0 (%s1)。
selector_radius: 已设置半径为 %s0 (%s1)。
selector_expanded: 已扩大区域至 %s0 (%s1)
timezone:
timezone_set: '已为此会话设置时区至: %s0'
timezone_display: '此时区的当前时间为: %s0'
command:
command_invalid_syntax: 命令使用有误 (无帮助可用)。
help:
command_clarifying_bracket: '已为 %s0 添加阐述括号'
help_suggest: '无法找到 %s0。试试 %s1 吗?'
help_header_categories: 命令类型
help_header_subcommands: 子命令
help_header_command: '%s0 帮助'
help_item_allowed: '%s0 - %s1'
help_item_denied: '%s0 - %s1'
help_header: '帮助: 页 %s0/%s1'
help_footer: '维基页面: https://git.io/vSKE5'
progress:
progress_message: '剩余 %s1/%s0 (%s2%) @%s3cps %s4s'
progress_finished: '[ 完成! ]'
cancel:
worldedit_cancel_count: '已取消 %s0 次编辑。'
worldedit_cancel_reason_confirm: '您的选择区域过大 (%s0 -> %s1内有 %s3 个方块)。请使用 //confirm 继续执行 %s2'
worldedit_cancel_reason: '已取消您的创世操作: %s0.'
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: '已跳过区块载入: %s0;%s1。请尝试增加区块等待时长'
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: 已向下移动一层。
whoosh: 嗖!
poof: 啪!
thru_fail: 您前方无空位。
no_block: '视野内无方块!(或距离过远)'
up_fail: 您将碰到上方的物体。
selection:
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: '要查看选择类型列表,请使用: //sel list'
sel_modes: '请选择下列模式之一:'
tips:
tip_sel_list: '提示: 请使用 //sel list 查看不同的选择模式'
tip_select_connected: '提示: 请使用 //sel fuzzy 选择所有连接为一体的方块'
tip_set_pos1: '提示: 请使用 //set pos1 将点 1 作为样式'
tip_farwand: '提示: 请使用 //farwand 选择远方的点'
tip_lazycut: '提示: 使用 //lazycut 更为安全'
tip_fast: '提示: 请使用 //fast 在不撤销的情况下快速放置方块'
tip_cancel: '提示: 您可使用 //cancel 取消进行中的编辑'
tip_mask: '提示: 请使用 /gmask 设置全局终点蒙版'
tip_mask_angle: '提示: 请使用 //replace /[-20][-3] bedrock 替换 3-20 个方块的上坡'
tip_set_linear: '提示: 请使用 //set #l3d[wood,bedrock] 线性放置方块'
tip_surface_spread: '提示: 请使用 //set #surfacespread[5][0][5][#existing] 进行平面展开'
tip_set_hand: '提示: 请使用 //set hand 来使用您的手'
tip_replace_id: '提示: 请使用 //replace woodenstair #编号[石台阶] 来仅替换方块编号'
tip_replace_light: '提示: 请使用 //replace #brightness[1][15] 0 来移除光源'
tip_tab_complete: '提示: 替换命令支持 Tab 键补全功能'
tip_flip: '提示: 请使用 //flip 创建镜像'
tip_deform: '提示: 请使用 //deform 重新塑形'
tip_transform: '提示: 请使用 //gtransform 设置变形'
tip_copypaste: '提示: 请使用 //br copypaste 在点击时粘贴'
tip_source_mask: '提示: 请使用 /gsmask <蒙版> 来设置源蒙版'
tip_replace_marker: '提示: 请使用 //replace wool #fullcopy 使用剪切板完全替换方块'
tip_paste: '提示: 请使用 //paste 放置方块'
tip_lazycopy: '提示: lazycopy 的速度更为快捷'
tip_download: '提示: 来试试 //download'
tip_rotate: '提示: 请使用 //rotate 确定方位'
tip_copy_pattern: '提示: 请使用 #copy 来作为样式使用'
tip_regen_0: '提示: 使用 /regen [生态群系] 来重新生成生态群系'
tip_regen_1: '提示: 使用 /regen [生态群系] [种子] 来重新生成生态群系'
tip_biome_pattern: '提示: #biome[forest] 样式可用于任意命令中'
tip_biome_mask: '提示: 您可使用 `$jungle` 蒙版来限定生态群系'

View File

@ -1,378 +0,0 @@
# Updated by NotMyFault, 11.04.2019
info:
prefix: '(FAWE)'
schematic_pasting: 'Die Schematic wird eingefügt. Dies kann nicht rückgängig gemacht
werden.'
updated_lighting_selection: 'Das Licht wird in %s0 Chunks aktualisiert. (Es kann
einige Sekunden dauern, bis die Pakete gesendet werden.)'
set_region: 'Markierung wurde auf aktuelle WorldEdit Region übertragen.'
worldedit_command_limit: 'Bitte warte, bis deine momentane Aktion fertig gestellt
wurde.'
worldedit_delayed: 'Bitte warte, während deine aktuelle WorldEdit Aktion durchgeführt
wird..'
worldedit_run: 'Entschuldige die Verzögerung. Nun führen wir folgende Aktion von
dir aus: %s'
worldedit_complete: 'WorldEdit Aktion fertiggestellt..'
require_selection_in_mask: '%s deiner Auswahl ist nicht innerhalb deiner Maske.
Du darfst nur innerhalb erlaubter Regionen Veränderungen durchführen.'
worldedit_volume: 'Du kannst keine %current% verändern. Die maximale Anzahl an
Blöcken die du verändern darfst ist %max%.'
worldedit_iterations: 'Du kannst %current% nicht wiederholen. Die maximale Anzahl an erlaubten Wiederholungen ist %max%.'
worldedit_unsafe: 'Der Zugang zu diesem Befehl wurde verboten.'
worldedit_dangerous_worldedit: 'FAWE führt unsicher WorldEdit Aktionen aus! Position:
%s0 Spielername: %s1'
worldedit_bypassed: 'Beschränkungen werden nun ignoriert.'
worldedit_unmasked: 'Deine WorldEdit Beschränkungen sind nun aufgehoben.'
worldedit_restricted: 'Deine WorldEdit Beschränkungen sind nun aktiv.'
worldedit_oom_admin: |-
Mögliche Optionen:
- //fast
- Kleinere Aktionen ausführen
- Mehr Arbeitsspeicher zuweisen
- Diese Meldungen deaktivieren
compressed: WorldEdit Verlauf komprimiert. Um ~ %s0b reduziert (%s1x kleiner)
action_complete: Aktion fertiggestellt in %s0 Sekunden
lighting_propogate_selection: 'Licht wurde berechnet in %s0 Chunks. (Info: Um
Licht zu entfernen nutze //removelight)'
worldedit_toggle_tips_on: 'WorldEdit Tipps deaktiviert.'
worldedit_toggle_tips_off: 'WorldEdit Tipps aktiviert.'
file_deleted: '%s0 wurde gelöscht.'
error:
worldedit_extend: 'Deine WorldEdit Aktion überschreitet die erlaubte Region'
command_syntax: 'Benutzung: %s0'
no_perm: 'Dir fehlt die Berechtigung: %s0'
setting_disable: 'Fehlende Einstellung: %s0'
schematic_not_found: 'Schematic nicht gefunden: %s0'
no_region: 'Du hast keine aktive WorldEdit Markierung'
no_mask: 'Du hast keine Maske gesetzt'
not_player: 'Dieser Befehl kann nur von Spielern ausgeführt werden!'
player_not_found: 'Spieler nicht gefunden: %s0'
oom: |-
[Kritisch] Wenig Arbeitsspeicher frei (< 1%). FAWE wird folgendes machen:
- Alle Aktionen terminieren
- Vergangene Bearbeitungen vergessen
- Alle unwichtigen Chunks entladen
- Alle Entities töten
- Unnötig verwendeten Speicher freigeben.
Ignoriere diese Meldung, wenn du versuchst den Server zu crashen.
Note: Wenig freier Speicher kann unter Umständen wegen WE passiert sein.
worldedit_some_fails: '%s0 Blöcke wurden nicht platziert, da sie außerhalb der
erlaubten Region sind.'
worldedit_some_fails_blockbag: 'Fehlende Blöcke: %s0'
web_unauthorized: 'Es sind nur Links vom konfigurierten Webhost erlaubt: %s0'
brush_not_found: '&Verfügbare Brushes: %s0'
brush_incompatible: 'Brush ist nicht kompatibel mit dieser Version'
block_not_allowed: 'Du darfst diesen Block nicht benutzen:'
web:
generating_link: Lade %s hoch, bitte warten...
generating_link_failed: 'Erstellung eines Download-Links fehlgeschlagen!'
download_link: '%s'
worldedit:
general:
mask_disabled: Globale Maske deaktiviert
mask: Globale Maske gesetzt
transform_disabled: Globale Transformation deaktiviert
transform: Globale Transformation gesetzt
source_mask_disabled: Globale Quell-Maske deaktiviert
source_mask: Global Quell-Maske gesetzt
fast_enabled: Fast-Modus aktiviert. Verlauf und Beschränkungen werden ignoriert.
fast_disabled: Fast-Modus deaktiviert
place_enabled: 'Platziere nun an Pos. #1.'
place_disabled: Platziere nun an dem Block in dem du stehst.
texture_disabled: Texturen zurückgesetzt
texture_set: Textur auf %s1 gestellt
copy:
command_copy: '%s0 Blöcke kopiert'
cut:
command_cut_slow: |-
%s0 Blöcke wurden ausgeschnitten.
Tipp: Lazycut ist sicherer
command_cut_lazy: '%s0 Blöcke werden beim Einfügen entfernt'
paste:
command_paste: Zwischenablage wurde bei Position %s0 eingefügt
rotate:
command_rotate: Zwischenablage wurde gedreht
flip:
command_flipped: Zwischenablage wurde gespiegelt
regen:
command_regen_0: |-
Region regeneriert.
Tipp: Nutze dies für Biome mit /regen [biome]
command_regen_1: |-
Region regeneriert.
Tipp: Nutze einen Seed mit /regen [biome] [seed]
command_regen_2: Region regeneriert.
tree:
command_tree: '%s0 Bäume erstellt.'
command_pumpkin: '%s0 Kürbis-Haufen erstellt.'
flora:
command_flora: '%s0 Pflanzen erstellt.'
history:
command_history_clear: Verlauf gelöscht
command_redo_success: Redo erfolgreich.
command_undo_success: Undo erfolgreich.
command_redo_error: Es gibt nichts zum Wiederherstellen. (Siehe `/inspect` und
`/frb`)
command_undo_error: Es gibt nichts zum Rückgängigmachen. (Siehe `/inspect` und
`/frb`)
command_history_other_error: WorldEdit Verlauf für %s0 konnte nicht gefunden werden.
command_undo_disabled: 'Undo ist deaktiviert, benutze //fast'
operation:
operation: Operation wird durchgeführt (%s0)
selection:
selection_wand: 'Linksklick: Markiere Position #1; Rechtsklick: Markiere Position
#2'
selection_wand_disable: Bearbeitungs-Tool deaktiviert.
selection_wand_enable: Bearbeitungs-Tool aktiviert.
selection_chunk: Chunk ausgewählt (%s0)
selection_chunks: Chunks ausgewählt (%s0) - (%s1)
selection_contract: Markierung verkleinert um %s0 Blöcke.
selection_count: '%s0 Blöcke wurden gezählt.'
selection_distr: '# Gesamtanzahl Blöcke: %s0'
selection_expand: Markierung erweitert um %s0 Blöcke
selection_expand_vert: Markierung erweitert um %s0 Blöcke (Maximaler Baubereich)
selection_inset: Markierung verkleinert
selection_outset: Markierung vergößert
selection_shift: Region verschoben
selection_cleared: Auswahl gelöscht
brush:
brush_copy: Copy Brush ausgerüstet (%s0)
brush_height_invalid: Ungültige Höhenkarte (%s0)
brush_smooth: Glättungs-Brush ausgerüstet (%s0 x %s1 using %s2).
brush_spline: Linien Brush Format ausgerüstet (%s0). Rechstklicke ein Ende um
ein Format hinzuzufügen
brush_spline_secondary_error: Nicht genügend Positionen gesetzt!
brush_spline_secondary: Kurve erstellt
brush_size: Brush Größe gesetzt
brush_range: Brush Weite gesetzt
brush_mask_disabled: Brush Maske deaktiviert
brush_mask: Brush Maske gesetzt
brush_transform_disabled: Brush Transformation deaktiviert
brush_transform: Brush-Transformation gesetzt
brush_material: Brush-Material gesetzt
brush_try_other: |-
FAWE verfügt über andere, passendere Brushes. z.B.:
- //br height [radius=5] [#clipboard|file=null] [rotation=0] [yscale=1.00]
brush_none: Du hältst kein Tool in der Hand, das man als Brush verwenden kann!
brush_source_mask_disabled: Brush Quell-Maske deaktiviert
brush_source_mask: Brush Quell-Maske gesetzt
brush_reset: Brush zurückgesetzt.
brush_scroll_action_set: Scroll Aktion auf %s0 gesetzt
brush_scroll_action_unset: Scroll Aktion entfernt
brush_visual_mode_set: Visualiserungsmodus auf %s0 gesetzt
brush_target_mode_set: Zielmodus auf %s0 gesetzt
brush_target_mask_set: Zielmaske auf %s0 gesetzt
brush_target_offset_set: Zielausrichtung auf %s0 gesetzt
brush_equipped: Brush %s0 ausgerüstet
brush_line_primary: Punkt %s0 hinzugefügt. Klicke auf eine andere Position um
die Linie zu erstellen
brush_line_secondary: Spline erstellt
brush_spline_primary_2: Position hinzugefügt. Klicke auf die gleiche Position
um zu beginnen!
brush_catenary_direction: Punkt %s0 hinzugefügt. Klicke in die Richtung in der
du die spline generieren willst
rollback:
rollback_element: annulliere %s0
tool:
tool_inspect: Inpektions-Tool an %s0 gebunden.
tool_inspect_info: '%s0 änderte %s1 zu %s2 %s3 zuvor'
tool_inspect_info_footer: 'Total: %s0 Änderungen'
tool_none: Tool vom aktuellen Item entfernt.
tool_info: Info-Tool gebunden an %s0.
tool_tree: Tree-Tool gebunden an %s0.
tool_tree_error: Baum Typ %s0 ist unbekannt.
tool_repl: Block Replacer-Tool an %s0 gebunden.
tool_cycler: Block Data Cycler-Tool an %s0 gebunden
tool_flood_fill: Block Flood Fill-Tool an %s0 gebunden
tool_deltree: Floating Tree Remover-Tool an %s0 gebunden
tool_farwand: Far Wand-Tool gebunden an%s0.
tool_lrbuild_bound: Long-range Building-Tool gebunden an %s0.
tool_lrbuild_info: 'Linksklick: Setze Position %s0; Rechtsklick: Setze Position
%s1'
superpickaxe_enabled: Super-Spitzhacke aktiviert.
superpickaxe_disabled: Super-Spitzhacke deaktiviert.
tool_range_error: 'Maximale Reichweite: %s0.'
tool_radius_error: 'Maximal erlaubter Brush Radius: %s0.'
superpickaxe_area_enabled: Modus geändert. Linksklick mit einer Spitzhacke. Verwende '//' zum deaktivieren.
tool_tree_error_block: Du kannst hier keinen Baum wachsen lassen
tool_deltree_error: Das ist kein Baum
tool_deltree_floating_error: Das ist kein schwebender Baum
schematic:
schematic_format: 'Verfügbare Zwischenablage Formate (Name: Suche Namen)'
schematic_loaded: Schematic %s0 geladen. Platziere sie mit //paste
schematic_saved: Schematic %s0 gespeichert.
schematic_page: Seite muss %s sein.
schematic_none: Keine Schematics gefunden.
schematic_list: 'Verfügbare Schematics (Dateiname: Format) [%s0/%s1]:'
schematic_list_elem: ' - %s0 - %s1'
schematic_prompt_clear: 'Meintest du %s0 um deine Zwischenablage zu leeren?'
schematic_show: |-
Displaying %s0 Schematics von %s1:
- Linksklick a um der Zwischenablage hinzuzufügen
- Rechtsklick um etwas deiner Multi-Zwischenablage hinzuzufügen
- Benutze %s2 um zur richtigen Welt zurückzukehren
schematic_move_exists: '%s0 existiert bereits'
schematic_move_success: '%s0 -> %s1'
schematic_move_failed: '%s0 wurde nicht bewegt: %s1'
clipboard:
clipboard_cleared: Zwischenablage geleert
clipboard_invalid_format: 'Unbekanntes Zwischenablage Format: %s0'
clipboard_uri_not_found: Du hast %s0 nicht geladen.
visitor:
visitor_block: '%s0 Blöcke betroffen'
visitor_entity: '%s0 Entities betroffen'
visitor_flat: '%s0 Spalten betroffen'
selector:
selector_invalid_coordinates: Ungültige Koordinaten %s0
selector_already_set: Position bereits gesetzt.
selector_fuzzy_pos1: Region gesetzt und expandiert von %s0 %s1.
selector_fuzzy_pos2: Erweiterung um %s0 %s1 hinzugefügt.
selector_set_default: Dein Standard Auswahl-Tool ist nun %s0.
selector_pos: Position%s0 zu %s1 (%s2) gesetzt.
selector_center: Mittelpunkt zu %s0 (%s1) gesetzt.
selector_radius: Radius zu %s0 (%s1) gesetzt.
selector_expanded: Region expandiert auf %s0 (%s1).
command:
command_invalid_syntax: Der Befehl wurde nicht richtig benutzt. (Keine weitere
Hilfe verfügbar).
snapshot:
snapshot_loaded: Snapshot '%s0' geladen; Wiederherstellung läuft...
snapshot_set: 'Snapshot gesetzt auf: %s0'
snapshot_newest: Neuester Snapshot wird jetzt benutzt.
snapshot_list_header: 'Snapshots für die Welt (%s0):'
snapshot_list_footer: Nutze /snap use [snapshot] oder /snap use latest.
snapshot_not_configured: Snapshot/backups sind nicht konfiguriert.
snapshot_not_available: Keine Snapshots verfügbar, überprüfe die Konsole
snapshot_not_found_world: No snapshots were found for this world.
snapshot_not_found: Keine Snapshots gefunden
snapshot_invalid_index: Ungültiger Index, der WErt muss gleich oder größer 1 sein
snapshot_error_date: Datum konnte nicht gefunden werden
snapshot_error_restore: Ein Fehler verhinderte das wiederherstellen von Blöcken
snapshot_error_restore_chunks: Chunks konnten nicht geladen werden
biome:
biome_list_header: 'Biome (Seite %s0/%s1):'
biome_changed: Biome wurden in %s0 Blöcken geändert.
utility:
kill_success: '%s0 Entities in einem Radius von %s1 getötet.'
nothing_confirmed: Du hast keine zur Autorisierung ausstehenden Aktionen.
page_footer: Benutze %s0 um zur nächsten Seite zu gehen
timezone:
timezone_set: 'Zeitzone für diese Sitzung gesetzt auf: %s0'
timezone_display: 'Aktuelle Zeit in dieser Zeitzone: %s0'
navigation:
navigation_wand_error: 'Nichts zu durchqueren'
anvil:
world_is_loaded: Die Welt sollte während er Ausführung nicht in Benutzung sein.
Entlade die Welt oder überschreibe diese mit -f (vorher speichern)
help:
command_clarifying_bracket: 'Klammer für%s0 wurde hinzugefügt'
help_suggest: '%s0 konnte nicht gefunden werden. Versuche %s1 '
help_header_categories: Befehlstypen
help_header_subcommands: Unterbefehle
help_header_command: 'Hilfe für: %s0'
help_item_allowed: '%s0 - %s1'
help_item_denied: '%s0 - %s1'
help_header: 'Hilfe: Seite %s0/%s1'
help_footer: 'Wiki: https://git.io/vSKE5'
cycler:
block_cycler_cannot_cycle: Dieser Block kann mit cycler nicht verändert werden
block_cycler_limit: Du hast dein maximales Block-Change Limit erreicht.
block_cycler_no_perm: 'Du hast keine Rechte diesen Block mit dem cycler zu bearbeiten'
scripting:
scripting_no_perm: 'Du hast keine Rechte dieses CraftScript auszuführen'
scripting_cs: Nutze /cs mit einen Script Namen
scripting_error: Ein Fehler trat auf beim Asuführen eines Scripts.
progress:
progress_message: '[ Zwischenspeicher: %s0 | Erledigt: %s1 ]'
progress_finished: '[ Fertiggestellt! ]'
cancel:
worldedit_cancel_count: '%s0 Veränderungen abgebrochen.'
worldedit_cancel_reason: 'Deine WorldEdit Aktion wurde abgebrochen: %s0.'
worldedit_cancel_reason_manual: Manueller Abbruch
worldedit_cancel_reason_low_memory: Zu wenig Speicher
worldedit_cancel_reason_max_changes: Zu viele Blöcke bearbeitet
worldedit_cancel_reason_max_checks: Zu viele Blöcke gecheckt
worldedit_cancel_reason_max_tiles: Zu viele Blockstatus
worldedit_cancel_reason_max_entities: Zu viele Entities
worldedit_cancel_reason_max_iterations: Maximale Wiederholungen
worldedit_cancel_reason_no_region: Keine erlaubte Region (Ignorieren mit /wea)
worldedit_failed_load_chunk: 'Überspringe das Laden von Chunk: %s0;%s1. Versuche
chunk-wait zu erhöhen.'
worldedit_cancel_reason_confirm: 'Deine Selektion ist zu groß (%s0 -> %s1). Benutze
//confirm um %s2 auszuführen'
worldedit_cancel_reason_outside_level: Außerhalb der Welt
worldedit_cancel_reason_outside_region: Außerhalb erlaubter Region (Umgehe es mit
/wea, oder deaktiviere `region-restrictions` in der config.yml)
history: {}
navigation:
ascend_fail: Über dir konnte kein freier Platz gefunden werden.
ascended_plural: '%s0 Schichten aufgestiegen.'
ascended_singular: Eine Schicht aufgestiegen.
unstuck: Sollte jetzt besser sein!
descend_fail: Unter dir konnte kein freier Platz gefunden werden.
descend_plural: '%s0 Schichten abgestiegen.'
descend_singular: Eine Schicht abgestiegen.
whoosh: Wusch!
poof: Puff!
thru_fail: Vor dir konnte kein freier Platz gefunden werden.
up_fail: Du würdest einen Block treffen!
no_block: Es ist kein Block in Sichweite! (oder zu weit entfernt)
selection:
sel_cuboid: 'Quader: Linksklick für Position1; Rechtsklick für Position2'
sel_cuboid_extend: 'Quader: Linksklick für einen Startpunkt; Rechtsklick zum erweitern'
sel_2d_polygon: '2D Polygon Auswahl: Links/Rechtsklick um eine Markierung hinzuzufügen.'
sel_ellipsiod: 'Ellipsen Auswahl: Linksklick=Mitte, Rechtsklick zum erweitern'
sel_sphere: 'Kugel Auswahl : Linksklick=Mitte, Rechtsklick um den Radius zu setzen'
sel_cylindrical: 'Zylinder Auswahl: Linksklick=Mitte, Rechtsklick zum erweitern'
sel_max: '%s0 Punkte maximal.'
sel_fuzzy: 'Fuzzy Auswahl: Linksklick um alle verbundenen Blöcke zu markieren; Rechtsklick
zum hinzufügen'
sel_convex_polyhedral: 'Convexe Polyeder Auswahl: Linksklick=Erster Vertex; Rechtsklick,
um mehr hinzuzufügen.'
sel_list: 'Für eine Liste der Selektoren nutze: //sel'
sel_modes: 'Wähle einen der unten aufgelisteten Modi:'
tips:
tip_cancel: 'Tipp: Du kannst eine Aktion mit `//cancel` abbrechen'
tip_download: 'Tipp: Du kannst deine Zwischenablage mit `//download` herunterladen'
tip_sel_list: 'Tipp: Liste die verschiedenen Selektoren auf mit //sel list'
tip_select_connected: 'Tipp: Wähle alle verbundenen Blöcke mit //sel fuzzy'
tip_set_pos1: 'Tipp: Nutze Position1 als Muster //set pos1'
tip_farwand: 'Tipp: Markiere entfernte Blöcke mit //farwand'
tip_fast: 'Tipp: Platziere schnell und ohne Undo-Historie //fast'
tip_mask: 'Tipp: Setze eine Globale Zielmaske mit /gmask'
tip_mask_angle: 'Tipp: Ersetze aufwärts Steigungen von 3-20 Blöcken mit //replace
/-20:-3 bedrock'
tip_set_linear: 'Tipp: Setze Blöcke linear mit //set #l3d:wood,bedrock'
tip_surface_spread: 'Tipp: Streue einen flachen Untergrund mit //set #surfacespread:5:0:5:#existing'
tip_set_hand: 'Tipp: Setze das Item in deiner Hand mit//set hand'
tip_replace_id: 'Tipp: Ersetze nur die Block-ID: //replace woodenstair #id:cobblestair'
tip_replace_light: 'Tipp: Entferne Licht-Quellen mit //replace #brightness:1:15
0'
tip_tab_complete: 'Tipp: Der Replace-Befehl unterstützt Tab-Vervollständigung'
tip_flip: 'Tipp: Du kannst mit //flip spiegeln'
tip_deform: 'Tipp: Forme um mit //deform'
tip_transform: 'Tipp: Platziere eine Umformung mit //gtransform'
tip_copypaste: 'Tipp: Füge durch Klick ein mit //br copypaste'
tip_source_mask: 'Tipp: Setze eine Quell-Maske /gsmask <mask>'
tip_replace_marker: 'Tipp: Ersetze einen Block mit deiner vollständigen Zwischenablage
mit //replace wool #fullcopy'
tip_paste: 'Tipp: Füge deine Zwischeneinlage mit //paste ein'
tip_lazycopy: 'Tipp: lazycopy ist schneller'
tip_rotate: 'Tipp: Ausrichten mit //rotate'
tip_copy_pattern: 'Tipp: Um ein Muster zu verwenden verwende #copy'
tip_lazycut: 'Tipp: Es ist sicherer den Befehl //lazycut zu verwenden.'
tip_regen_0: 'Tipp: Benutze ein Biom mit /regen [biome]'
tip_regen_1: 'Tipp: Benutzte einen Seed mit /regen [biome] [seed]'
tip_biome_pattern: 'Tipp: Das #biome[forest] Muster kann in jedem Befehl genutzt
werden'
tip_biome_mask: 'Tipp: Beschränke ein Biom mit der `$jungle` Maske'
tip_discord: Du benötigst Hilfe mit FAWE? https://discord.gg/KxkjDVg
tip_replace_regex: 'Tipp: Ersetze mit regex: //replace .*_log <pattern>'
tip_replace_regex_2: 'Tipp: Ersetze mit regex: //replace .*stairs[facing=(north|south)]
<pattern>'
tip_replace_regex_3: 'Tipp: Ersetze mit den folgenden Operatoren: //replace
water[level>2] sand'
tip_replace_regex_4: 'Tipp: Ersetze mit den folgenden Operatoren: //replace
true *[waterlogged=false]'
tip_replace_regex_5: 'Tipp: Ersetze mit den folgenden Operatoren: //replace
true *[level-=1]'

View File

@ -1,341 +0,0 @@
info:
prefix: '(FAWE)'
file_deleted: '%s0 ha sido eliminado.'
schematic_pasting: 'La schematic está peganda. Esto no se puede deshacer.'
lighting_propogate_selection: 'La iluminación se ha propagado en %s0 chunks. (Nota:
Para quitar el uso de la luz //removelight)'
updated_lighting_selection: 'La iluminación se ha actualizado en %s0 trozos. (Puede
tardar un segundo en enviar los paquetes)'
set_region: 'Selección ajustada a su región permitida actual'
worldedit_command_limit: 'Espere hasta que se complete la acción actual'
worldedit_delayed: 'Espere mientras procesamos su acción ...'
worldedit_run: 'Perdón por el retraso. Ahora ejecutando: %s0'
worldedit_complete: 'Editar completado.'
require_selection_in_mask: '%s de su selección no está dentro de su máscara. Tú
sólo puede realizar ediciones dentro de las regiones permitidas.'
worldedit_volume: 'No puede seleccionar un volumen de %current%. El volumen máximo
que puede modificar es %max%.'
worldedit_iterations: 'No se puede iterar %current% times. El número máximo de
iteraciones permitidas es %max%.'
worldedit_unsafe: 'Acceso a ese comando ha sido bloqueado'
worldedit_dangerous_worldedit: 'Proceso de edición insegura en %s0 por %s1'
worldedit_toggle_tips_on: 'Desabilitado FAWE tips.'
worldedit_toggle_tips_off: 'Habilitado FAWE tips.'
worldedit_bypassed: 'Consejos FAWE habilitados.'
worldedit_unmasked: 'Las ediciones de FAWE ya no están restringidas.'
worldedit_restricted: 'Vos ediciones de FAWE están restringidas ahora.'
worldedit_oom_admin: |-
Opciones Posibles:
- //fast
- Para ediciones más pequeñas
- Asignar más memoria
- Desabilitado `max-memory-percent`
compressed: Historial comprimido. Guardado ~ %s0b (%s1x menor)
action_complete: Acción completada en %s0 segundos
error:
worldedit_extend: 'Es posible que tu edición se haya extendido fuera de tu región
permitida.'
web_unauthorized: 'Solo se permiten enlaces desde el host web configurado: %s0'
command_syntax: 'Usage: %s0'
no_perm: 'Está faltando el nodo de permiso: %s0'
setting_disable: 'Pregunta de ajuste: %s0'
brush_not_found: 'Brushes disponibles: %s0'
brush_incompatible: 'Brush no compatible con esta versión'
schematic_not_found: 'Schematic no encontrada: %s0'
no_region: 'No tienes región actual permitida'
no_mask: 'No tienes ningún conjunto de máscara actual'
not_player: 'Usted debe ser un jugador para realizar esta acción!'
player_not_found: 'Jugador no encontrado: %s0'
oom: |-
'[Critical] Detected baja memoria i.e. < 1%. Tomaremos las siguientes acciones:'
- Terminate bloqueamos la colocación
- Borrar Historia de WE
- Unload shunk no esenciales
- Matar entidades
- La recogida de basura
Ignore esto si intenta bloquear el servidor.
Nota: Es probable que la memoria baja (pero no necesariamente) sea causada por WE
worldedit_some_fails: '%s0 bloques fueron''t pcolocado porque estaban fuera de
su región permitida.'
worldedit_some_fails_blockbag: 'Bloques perdidos: %s0'
web:
generating_link: Subiendo %s, por favor espere...
generating_link_failed: 'Fallo al generar el enlace de descarga!'
download_link: '%s'
worldedit:
general:
mask_disabled: Máscara global desactivada
mask: Seleccionar máscara global
source_mask_disabled: Máscara de fuente global desactivada
source_mask: Seleccionar máscaras de fuentes globales
transform_disabled: Transformación global deshabilitada
transform: Seleccionar transformación global
fast_enabled: Modo rápido activado. Las restricciones de edición se evitarán.
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:
command_cut_slow: '%s0 bloques fueron cortados.'
command_cut_lazy: '%s0 bloques se eliminarán al pegar/paste'
paste:
command_paste: El portapapeles se ha pegado en %s0
rotate:
command_rotate: Se ha roto el portapapeles
flip:
command_flipped: Se ha volcado el portapapeles
regen:
command_regen_0: Región regenerada.
command_regen_1: Región regenerada.
command_regen_2: Región regenerada.
tree:
command_tree: '%s0 árboles/trees creados.'
command_pumpkin: '%s0 parches de calabaza/pumpkin creados.'
flora:
command_flora: '%s0 flora creada.'
history:
command_history_clear: Historial eliminado
command_redo_error: No queda nada para rehacer. (Véase también `/inspect` y `/frb`)
command_history_other_error: No se puede encontrar la sesión para %s0.
command_redo_success: Rehacer correctamente.
command_undo_error: No queda nada para deshacer. (Véase también `/inspect` y `/frb`)
command_undo_success: Deshacer, completada correctamente.
operation:
operation: Operación en cola (%s0)
selection:
selection_wand: 'Click izquierdo: seleccione posicion #1; Haga click derecho:
seleccione posicion #2'
selection_wand_disable: Hacha de editar esactivada.
selection_wand_enable: Hacha de edición activada.
selection_chunk: Chunk seleccionado (%s0)
selection_chunks: Chunks seleccionados (%s0) - (%s1)
selection_contract: Región contratada %s0 bloques.
selection_count: Contado %s0 bloques.
selection_distr: '# Contado: %s0'
selection_expand: Región expandida %s0 bloques
selection_expand_vert: Región expandida %s0 bloques (de arriba hacia abajo)
selection_inset: Inserción de región
selection_outset: Comienzo de la región
selection_shift: Región desplazada
selection_cleared: Selección borrada
navigation:
navigation_wand_error: 'Nada por lo que pasar'
anvil:
world_is_loaded: El mundo no debe estar en uso durante la ejecución. Descargue
el mundo, o utilice el uso -f para anular (guardar primero)
brush:
brush_reset: Restablece el pincel.
brush_none: Usted no está sosteniendo un pincel!
brush_scroll_action_set: Establece la acción de desplazamiento en %s0
brush_scroll_action_unset: Acción de desplazamiento eliminada
brush_visual_mode_set: Establece el modo visual a %s0
brush_target_mode_set: Establece el modo de destino en %s0
brush_target_mask_set: Establece la máscara de destino en %s0
brush_target_offset_set: Establece el desplazamiento de destino en %s0
brush_equipped: Pincel Equipado %s0
brush_try_other: |-
Hay otros pinceles más adecuados e.g.
- //br height [radius=5] [#clipboard|file=null] [rotation=0] [yscale=1.00]
brush_copy: Haga clic con el botón izquierdo en la base de un objeto para copiar,
haga clic derecho para pegar. Incrementar el radio del pincel si es necesario.
brush_height_invalid: Archivo de mapa de altura no válido (%s0)
brush_smooth: 'Nota: Use el pincel de mezcla si desea suavizar salientes o cuevas.'
brush_spline: Haga clic para agregar un punto, haga clic en el mismo lugar para
terminar
brush_line_primary: Añadido punto %s0, haga clic en otra posición para crear la
línea
brush_line_secondary: Spline creada
brush_spline_primary_2: Añadido posición, haga clic en el mismo lugar para unirse!
brush_spline_secondary_error: No hay suficientes posiciones definidas!
brush_spline_secondary: Creado spline
brush_size: Juego de pinceles
brush_range: Conjunto de pinceles
brush_mask_disabled: Máscara de pincel desactivada
brush_mask: Juego de máscaras de pincel
brush_source_mask_disabled: Cepillado de la máscara de origen desactivada
brush_source_mask: Conjunto de máscaras de fuentes de pincel
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:
tool_inspect: Inspecciona la herramienta enlazada a %s0.
tool_inspect_info: '%s0 cambiado %s1 a %s2 %s3 hace'
tool_inspect_info_footer: 'Total: %s0 changes'
tool_none: Herramienta desvinculada de su elemento actual.
tool_info: Herramienta de información vinculada a %s0.
tool_tree: Herramienta de árbol vinculada a %s0.
tool_tree_error: El tipo de árbol/tree %s0 es desconocido.
tool_repl: Herramienta de sustitución de bloques vinculada a %s0.
tool_cycler: Herramienta de bloqueo de ciclos de datos vinculada a %s0.
tool_flood_fill: bloquea la herramienta de relleno asociada a %s0.
tool_range_error: 'Rango máximo: %s0.'
tool_radius_error: 'Radio de pincel máximo permitido: %s0.'
tool_deltree: Herramienta de eliminación de árbol flotante vinculada a %s0.
tool_farwand: Herramienta de varillalejana/wand tool limitada/bound a %s0.
tool_lrbuild_bound: Herramienta de construcción de largo alcance vinculada a %s0.
tool_lrbuild_info: Haga clic con el botón izquierdo en %s0; haga clic con el botón
secundario en %s1.
superpickaxe_enabled: Super Pico habilitado.
superpickaxe_disabled: Super Pico deshabilitado.
superpickaxe_area_enabled: Modo cambiado. Clic izquierdo con un pico. // to disable.
snapshot:
snapshot_loaded: Snapshot '%s0' cargado; ahora restaurando...
snapshot_set: 'Snapshot establecida en: %s0'
snapshot_newest: Ahora utiliza la más nueva snapshot.
snapshot_list_header: 'Snapshots para el mundo (%s0):'
snapshot_list_footer: Utilice /snap use [snapshot] o /snap use latest.
biome:
biome_list_header: 'Biomas (page %s0/%s1):'
biome_changed: Se modificaron los biomas en %s0 columnas.
utility:
kill_success: Matado %s0 entidades en un radio de %s1.
nothing_confirmed: No tiene ninguna acción pendiente de confirmación.
page_footer: Utilizar %s0 para ir a la página siguiente
schematic:
schematic_format: 'Formatos disponibles (Nombre: Buscar nombres)'
schematic_loaded: '%s0 cargado. Pegarlo con //paste'
schematic_saved: '%s0 guardado.'
schematic_page: La página debe ser %s
schematic_none: No se han encontrado archivos.
schematic_list: 'Archivos disponibles (Filename: Format) [%s0/%s1]:'
schematic_list_elem: ' - %s0 - %s1'
schematic_prompt_clear: 'Es posible que desee utilizar %s0 para borrar su actual primera'
schematic_show: |-
Mostrando %s0 esquemas de %s1:
- Click izquierdo Una estructura para configurar tu portapapeles
- Botón derecho del ratón para agregar una estructura a tu multipartículas
- Utilizar %s2 para volver al mundo
schematic_move_exists: '%s0 ya existe'
schematic_move_success: '%s0 -> %s1'
schematic_move_failed: '%s0 no movido: %s1'
clipboard:
clipboard_cleared: Portapapeles despejado
clipboard_invalid_format: 'Formato del portapapeles desconocido: %s0'
clipboard_uri_not_found: Usted no tiene %s0 cargado
visitor:
visitor_block: '%s0 bloques afectados'
visitor_entity: '%s0 entidades afectadas'
visitor_flat: '%s0 columnas afectadas'
selector:
selector_fuzzy_pos1: Región establecida y ampliada de %s0 %s1.
selector_fuzzy_pos2: Añadido expansión de %s0 %s1.
selector_invalid_coordinates: Coordenadas no válidas %s0
selector_already_set: Posición ya establecida.
selector_set_default: El selector de región predeterminado es ahora %s0.
selector_pos: Posicion [%s0] establecida en %s1 (%s2).
selector_center: Centro establecido en %s0 (%s1).
selector_radius: Radio configurado para %s0 (%s1).
selector_expanded: Región ampliada a &(%s0 (%s1)
timezone:
timezone_set: 'Zona horaria establecida para esta sesión: %s0'
timezone_display: 'La hora actual en esa zona horaria es: %s0'
command:
command_invalid_syntax: El comando no se usó correctamente (no hay más ayuda disponible).
help:
command_clarifying_bracket: 'Ajustador de clarificación añadido para %s0'
help_suggest: 'Podría no encontrar %s0. Tal vez pruebe con %s1 ?'
help_header_categories: Tipos de comando
help_header_subcommands: Subcomandos
help_header_command: 'Ayuda para: %s0'
help_item_allowed: '%s0 - %s1'
help_item_denied: '%s0 - %s1'
help_header: 'Ayuda: Pagina %s0/%s1'
help_footer: 'Wiki: https://git.io/vSKE5'
progress:
progress_message: '%s1/%s0 (%s2%) @%s3cps %s4s izquierda'
progress_finished: '[ Hecho! ]'
cancel:
worldedit_cancel_count: 'Cancelado %s0 ediciones.'
worldedit_cancel_reason_confirm: 'Vuestra selección es grande (%s0 -> %s1). Usar
//confirm para ejecutar %s2'
worldedit_cancel_reason: 'La acción de WorldEdit se canceló: %s0.'
worldedit_cancel_reason_manual: Cancelación manual
worldedit_cancel_reason_low_memory: Memoria baja
worldedit_cancel_reason_max_changes: Demasiados bloques cambiados
worldedit_cancel_reason_max_checks: Demasiados controles de bloqueo
worldedit_cancel_reason_max_tiles: Demasiados bloqueos
worldedit_cancel_reason_max_entities: Demasiadas entidades
worldedit_cancel_reason_max_iterations: Maximas iteraciones
worldedit_cancel_reason_no_region: No hay región permitida (bypass con /wea, o deshabilitar
`region-restrictions` en el archivo config.yml)
worldedit_failed_load_chunk: 'Cambio de chunk ignorado: %s0;%s1. Trate de
aumentar chunk-wait.'
worldedit_cancel_reason_outside_level: Mundo exterior
worldedit_cancel_reason_outside_region: Fuera de la región permitida (Ulilize /wea,
o deshabilitar `region-restrictions` en config.yml)
navigation:
ascend_fail: No hay lugar libre por encima de lo que encontró.
ascended_plural: Ascendido %s0 nivel(es).
ascended_singular: Ascendió un nivel.
unstuck: Ahí tienes!
descend_fail: No hay lugar libre por debajo de lo encontrado.
descend_plural: Descendido %s0 nivel(es).
descend_singular: Descendió un nivel.
whoosh: Whoosh!
poof: Poof!
thru_fail: No hay lugar libre por delante de usted encontró.
no_block: No hay bloque a la vista! (o demasiado lejos)
up_fail: Usted golpearía algo por encima de usted.
selection:
sel_cuboid: 'Cuboid: clic izquierdo en el punto 1, clic derecho en el punto 2'
sel_cuboid_extend: 'Cuboid: haga clic izquierdo para un punto de inicio, haga clic
derecho para ampliar'
sel_2d_polygon: 'Selector de polígonos 2D: Clic izquierdo/derecho para añadir un
punto.'
sel_ellipsiod: 'Selector de elipses: clic izquierdo=centro, clic derecho para ampliar'
sel_sphere: 'Selector de esfera: clic izquierdo=centro, haga clic derecho para establecer
el radio'
sel_cylindrical: 'Selector de cilíndrico: Clic izquierdo=centro, clic derecho para
ampliar.'
sel_max: '%s0 puntos máximos.'
sel_fuzzy: 'Selector difuso: haga clic con el botón izquierdo para seleccionar todos
los bloques contingentes, haga clic con el botón derecho to add. Para seleccionar
una cavidad de aire, utilice //pos1.'
sel_convex_polyhedral: 'Selector poliédrico convexo: clic izquierdo=primer vértice,
derecha haga clic para agregar más.'
sel_list: 'Para obtener una lista de tipos de selección, utilice: //sel list'
sel_modes: 'Seleccione uno de los siguientes modos:'
tips:
tip_sel_list: 'Sugerencia: Consulte los diferentes modos de selección con //sel
list'
tip_select_connected: 'Consejo: Seleccione todos los bloques conectados con //sel
fuzzy'
tip_set_pos1: 'Sugerencia: utilice pos1 como patrón con //set pos1'
tip_farwand: 'Sugerencia: Seleccione puntos distantes con //farwand'
tip_lazycut: 'Sugerencia: Es más seguro usar //lazycut'
tip_fast: 'Sugerencia: Ajuste rápido y sin deshacer usando //fast'
tip_cancel: 'Sugerencia: Usted puede //cancel un editar en curso'
tip_mask: 'Sugerencia: Establecer una máscara de destino global con /gmask'
tip_mask_angle: 'Sugerencia: Reemplace las pendientes ascendentes de 3-20 bloques
utilizando //replace /[-20][-3] bedrock'
tip_set_linear: 'Sugerencia: Establecer bloques linealmente con //set [ID/wood,ID/bedrock]'
tip_surface_spread: 'Sugerencia: Separe una superficie plana con //set #surfacespread[5][0][5][#existing]'
tip_set_hand: 'Sugerencia: Utiliza tu mano actual con //set hand'
tip_replace_id: 'Sugerencia: Reemplazar sólo la ID del bloque: //replace woodenstair
#id[cobblestair]'
tip_replace_light: 'Sugerencia: Retire las fuentes de luz //replace #brightness[1][15]
0'
tip_tab_complete: 'Sugerencia: El comando replace admite la finalización de la pestaña'
tip_flip: 'Sugerencia: Espejo con //flip'
tip_deform: 'Sugerencia: Reformar con //deform'
tip_transform: 'Sugerencia: Establecer una transformación con //gtransform'
tip_copypaste: 'Sugerencia: Pegar en clic con //br copypaste'
tip_source_mask: 'Sugerencia: Establezca una máscara de origen con /gsmask <mask>'
tip_replace_marker: 'Sugerencia: Reemplace un bloque con su portapapeles completo
usando //replace wool #fullcopy'
tip_paste: 'Sugerencia: Colocar con //paste'
tip_lazycopy: 'Sugerencia: lazycopy es más rápido'
tip_download: 'Sugerencia: Pruebe y //download'
tip_rotate: 'Sugerencia: Orientar con //rotate'
tip_copy_pattern: 'Sugerencia: Para usar como un patrón try #copiar'
tip_regen_0: 'Sugerencia: Utilice un bioma con /regen [biome]'
tip_regen_1: 'Sugerencia: Utilice una semilla con /regen [biome] [seed]'
tip_biome_pattern: 'Sugerencia: El #biome[forest] pattern se puede usar en cualquier
comando'
tip_biome_mask: 'Sugerencia: Restrinja a un bioma con la máscara `$jungle`'

View File

@ -1,377 +0,0 @@
# Updated by NShoot
info:
prefix: '(FAWE)'
file_deleted: '%s0 a été supprimé.'
schematic_pasting: 'La schematic est en train d''être collée. Cette action ne
peut pas être annulée.'
lighting_propogate_selection: 'L''éclairage a été propagé dans %s0 chunks. (Info
: Pour supprimer l''éclairage, faites //removelight)'
updated_lighting_selection: 'L''éclairage a été mis à jour dans %s0 chunks. (Cela
devraît prendre quelques secondes pour que ce soit à jour)'
set_region: 'La sélection a été mise pour votre région actuellement autorisée'
worldedit_command_limit: 'Veuillez patienter le temps que vos actions en cours
soient terminées'
worldedit_delayed: 'Veuillez patienter pendant que votre action soit terminée.'
worldedit_run: 'Désolé du délai. Exécution en cours: %s'
worldedit_complete: 'Modification terminée.'
require_selection_in_mask: '%s de vos sélections ne sont pas dans votre masque.
Vous ne pouvez effectuer des modifications que dans vos régions autorisées.'
worldedit_volume: 'Vous ne pouvez pas sélectionner un volume de %current% blocs.
Le volume maximal que vous pouvez éditer est de %max% blocs.'
worldedit_iterations: 'Vous ne pouvez pas faire %current% itérations. Votre nombre
maximal d''itérations est de %max%.'
worldedit_unsafe: 'L''accès à cette commande est restreint.'
worldedit_dangerous_worldedit: 'Modification non sécurisée complétée à %s0 par
%s1'
worldedit_toggle_tips_on: 'Conseils désactivés.'
worldedit_toggle_tips_off: 'Conseils activés.'
worldedit_bypassed: 'Bypass de la restriction du plugin.'
worldedit_unmasked: 'Vos éditions ne sont désormais plus restreintes.'
worldedit_restricted: 'Vos éditions sont désormais restreintes.'
worldedit_oom_admin: |-
Options possibles:
- //fast
- Faites de petites modifications
- Allouez plus de mémoire
- Désactivez `max-memory-percent`
compressed: Historique compressé. Sauvegardé ~ %s0b (%s1x plus petit)
action_complete: Action complétée en %s0 secondes.
error:
worldedit_extend: 'Votre modification a peut-être été étendue en dehors de votre
région autorisée.'
web_unauthorized: 'Seuls les liens suivants sont autorisés : %s0'
command_syntax: 'Utilisation : %s0'
no_perm: 'Il vous manque la permission %s0'
setting_disable: 'Option manquante : %s0'
brush_not_found: 'Brosses disponibles : %s0'
brush_incompatible: 'Brosse non compatible avec cette version'
schematic_not_found: 'Schematic non trouvée : %s0'
no_region: 'Vous n''avez pas de région actuellement autorisée'
no_mask: 'Vous n''avez pas de masque actuel'
not_player: 'Vous devez être un joueur pour effectuer cette action !'
player_not_found: 'Joueur non trouvé : %s0'
oom: |-
[Attention] Mémoire faible détectée (< 1%). Nous allons :
- Terminer le placement des blocs
- Supprimer les historiques de blocs
- Décharger les chunks non essentiels
- Tuer les entités
- Vider la mémoire
Ignorez ceci si vous essayez de faire crash le serveur.
Info : La mémoire faible est causé par WE (mais pas nécessairement)
worldedit_some_fails: '%s0 blocs ne peuvent pas être posés car ils sont en dehors
de votre région autorisée.'
worldedit_some_fails_blockbag: 'Blocs manquants : %s0'
block_not_allowed: Vous navez pas la permission dutiliser
web:
generating_link: Téléversement de %s, veuillez patienter...
generating_link_failed: 'Impossible de générer le lien.'
download_link: '%s'
worldedit:
general:
mask_disabled: Masque global désactivé
mask: Masque global défini
texture_disabled: Remise à zéro de la texture
texture_set: Texture mise à %s1
source_mask_disabled: Masque source global désactivé
source_mask: Masque source global défini
transform_disabled: Transformation globale désactivée
transform: Transformation globale définie
fast_enabled: Mode rapide activé. Les modifications et les historiques vont être
bypass.
fast_disabled: Mode rapide désactivé.
place_enabled: 'Pose de blocs en #1.'
place_disabled: Pose de blocs à l'endroit où vous vous situez.
copy:
command_copy: '%s0 blocs copiés.'
cut:
command_cut_slow: '%s0 blocs supprimés.'
command_cut_lazy: '%s0 blocs vont être supprimés lors du collage.'
paste:
command_paste: Blocs dans le presse-papier collés à %s0
rotate:
command_rotate: Le presse-papier a subit une rotation
flip:
command_flipped: Le presse-papier a été retourné
regen:
command_regen_0: Région regénérée.
command_regen_1: Région regénérée.
command_regen_2: Région regénérée.
tree:
command_tree: '%s0 arbres créés.'
command_pumpkin: '%s0 patchs de citrouilles créés.'
flora:
command_flora: '%s0 végétations créés.'
history:
command_history_clear: Historique supprimé
command_redo_error: Rien à refaire. (Tapez `/inspect` et `/frb`)
command_history_other_error: Impossible de trouver une session pour %s0.
command_redo_success: Opération refaite.
command_undo_error: Rien à défaire. (Tapez `/inspect` et `/frb`)
command_undo_success: Annulation réussie.
command_undo_disabled: 'Undo désactivé, utilisez: //fast'
operation:
operation: Opération en attente (%s0)
selection:
selection_wand: 'Clic gauche: sélection position #1; Clic droit: sélection position
#2'
selection_wand_disable: Baguette d'édition désactivée.
selection_wand_enable: Baguette d'édition activée.
selection_chunk: Chunk sélectionné (%s0)
selection_chunks: Chunks sélectionnés (%s0) - (%s1)
selection_contract: blocs (%s0) contractés dans la région.
selection_count: blocs (%s0) dans le compte.
selection_distr: '# blocs au total : %s0'
selection_expand: Sélection étendue de %s0 blocs
selection_expand_vert: Sélection étendue de %s0 blocs (de bas en haut)
selection_inset: Région en médaillon
selection_outset: Début de la région
selection_shift: Région déplacée
selection_cleared: Sélection effacée
navigation:
navigation_wand_error: 'Il n''y a rien à traverser.'
anvil:
world_is_loaded: Le monde ne devrait pas être utilisé lors de l'exécution. Décharger
le monde, ou utilisez -f pour passer outre (sauvegarder d'abord)
brush:
brush_reset: Réinitialisez votre brosse. (SHIFT + Clic)
brush_none: Tu ne tiens pas une brosse !
brush_scroll_action_set: Régler l'action de défilement sur %s0
brush_scroll_action_unset: Suppression de l'action de défilement
brush_visual_mode_set: Mode visuel mis sur %s0
brush_target_mode_set: Mode cible mis sur %s0
brush_target_mask_set: Masque cible mis sur %s0
brush_target_offset_set: Définir le décalage de la cible à%s0
brush_equipped: Brosse équipée de %s0
brush_try_other: |-
Il existe d'autres brosses plus appropriées, par ex.
- //br height [radius=5] [#clipboard|file=null] [rotation=0] [yscale=1.00]
brush_copy: Clic gauche sur la base d'un objet à copier, clic droit pour coller.
Augmentez le rayon de la brosse si nécessaire.
brush_height_invalid: Hauteur de la carte invalide (%s0)
brush_smooth: 'Note : Utilisez la brosse de mélange si vous voulez lisser les
porte-à-faux ou les grottes.'
brush_spline: Cliquez pour ajouter un point, cliquez sur le même point pour terminer.
brush_line_primary: Ajout du point %s0, cliquez sur une autre position pour créer
la ligne.
brush_catenary_direction: Ajout du point %s0, cliquez à la direction que vous
souhaitez pour créer la languette.
brush_line_secondary: Languette créée
brush_spline_primary_2: Position ajoutée, cliquez sur le même point pour les rejoindre
!
brush_spline_secondary_error: Pas assez de positions insérées !
brush_spline_secondary: Languette créée
brush_size: Taille de brosse définie
brush_range: Taille de brosse dfinie
brush_mask_disabled: Masque de la brosse désactivé
brush_mask: Masque de la brosse défini
brush_source_mask_disabled: Masque source de la brosse désactivé
brush_source_mask: Masque de la brosse source défini
brush_transform_disabled: Transformation de brosse désactivée
brush_transform: Transformation de brosse défini
brush_material: Type de bloc de la brosse défini
rollback:
rollback_element: Rollback de %s0
tool:
tool_inspect: Outil d'inspection lié à %s0.
tool_inspect_info: '%s0 a changé %s1 à %s2 il y a %s3'
tool_inspect_info_footer: 'Total : %s0 modifications'
tool_none: L'outil plus reliée à l'élément courant.
tool_info: Outil d'information lié à %s0.
tool_tree: Outil d'arbres lié à %s0.
tool_tree_error: Type de l'arbre %s0 inconnu.
tool_repl: Outil de remplacement des blocs lié à %s0.
tool_cycler: Outil de type de cycleur de bloc lié à %s0.
tool_flood_fill: Outil de remplissage des blocs lié à %s0.
tool_range_error: 'Portée maximale : %s0.'
tool_radius_error: 'Rayon de brosse maximum autorisé : %s0.'
tool_deltree: Outil flottant d'abattage d'arbres lié à %s0.
tool_farwand: Outil de baguette lointain lié à%s0.
tool_lrbuild_bound: Outil de construction à longue portée lié à %s0.
tool_lrbuild_info: Clic gauche défini sur %s0; Clic droit défini sur %s1.
superpickaxe_enabled: Super pioche activée.
superpickaxe_disabled: Super pioche désactivée.
superpickaxe_area_enabled: Mode modifié. Clique gauche avec la pioche. // pour
désactiver.
tool_tree_error_block: Un arbre ne peux pas pousser ici
tool_deltree_error: Ce nest pas un arbre
tool_deltree_floating_error: Ce nest pas un arbre flottant
snapshot:
snapshot_loaded: Instantané '%s0' chargé; restauration en cours...
snapshot_set: 'Instantané mis sur : %s0'
snapshot_newest: Utilisation du dernier instantané désormais.
snapshot_list_header: 'Instantanés du monde (%s0):'
snapshot_list_footer: Utilisez /snap use [instantané] our /snap use latest.
snapshot_not_configured: La restauration de snapshot/backup na pas été configurée.
snapshot_not_available: Aucune snapshot nest disponible. Regardez la console pour plus de détails.
snapshot_not_found_world: Aucune snapshot nont été trouvée pour ce monde.
snapshot_not_found: Aucune snapshot na été trouvée.
snapshot_invalid_index: Index invalide, il doit être égal ou supérieur à 1.
snapshot_error_date: La date entrée na pas pû être détectée.
snapshot_error_restore: Les erreurs ont empêché la restauration des blocs.
snapshot_error_restore_chunks: Aucun chunks na pû être chargé. (Mauvaise archive?)
biome:
biome_list_header: 'Biomes (page %s0/%s1):'
biome_changed: Les biomes ont été modifiés dans %s0 colonnes.
utility:
kill_success: entitées (%s0) tuées dans une portée de %s1 blocs.
nothing_confirmed: Vous n'avez aucune action en attente de confirmation.
page_footer: Utilisez %s0 pour aller à la page suivante.
schematic:
schematic_prompt_clear: 'Vous voudriez peut-être utiliser %s0 pour effacer
votre actuel presse-papier'
schematic_show: |-
Affichage de %s0 schématiques depuis %s1:
- Clic gauche > une structure à mettre dans le presse-papier
- Clic droit > pour mettre une structure dans le presse-papier multiple
- Utilisez %s2 pour revenir au monde
schematic_format: 'Formats disponibles (nom: Noms de recherche)'
schematic_move_exists: '%s0 existe déjà'
schematic_move_success: '%s0 -> %s1'
schematic_move_failed: '%s0 non déplacé : %s1'
schematic_loaded: '%s0 chargé. Collez-le avec //paste'
schematic_saved: '%s0 sauvegardé.'
schematic_page: La page doit-être %s
schematic_none: Aucun fichier trouvé.
schematic_list: 'Fichiers disponibles (nom du fichier: Format) [%s0/%s1]:'
schematic_list_elem: ' - %s0 - %s1'
clipboard:
clipboard_uri_not_found: Vous n'avez pas %s0 chargé.
clipboard_cleared: Presse-papier effacé
clipboard_invalid_format: 'Format de presse-papier inconnu : %s0'
visitor:
visitor_block: '%s0 blocs affectés'
visitor_entity: '%s0 entitées affectés'
visitor_flat: '%s0 colonnes affectées'
selector:
selector_fuzzy_pos1: Région définie et étendue depuis %s0 %s1.
selector_fuzzy_pos2: Ajout de l'étendue de %s0 %s1.
selector_pos: position %s0 définie sur %s1 (%s2).
selector_center: Milieu définie sur %s0 (%s1).
selector_radius: Rayon défini sur %s0 (%s1).
selector_expanded: Région étendue sur %s0 (%s1)
selector_invalid_coordinates: Cordonnées invalides !
selector_already_set: Position déjà définie.
selector_set_default: Votre sélecteur de région par défaut est désormais %s0.
timezone:
timezone_set: Fuseau horaire fixé pour cette session sur %s0
timezone_display: 'Le temps actuel pour ce fuseau horaire est : %s0'
command:
command_invalid_syntax: La commande n'a pas été utilisée correctement. (aucune
aide disponible).
help:
command_clarifying_bracket: 'Ajout d''un crochet de clarification pour %s0'
help_suggest: 'Impossible de trouver %s0. Essayez une des %s1 ?'
help_header_categories: Types de commandes
help_header_subcommands: Sous commandes
help_header_command: 'Aide pour : %s0'
help_item_allowed: '%s0 - %s1'
help_item_denied: '%s0 - %s1'
help_header: 'Aide : page %s0/%s1'
help_footer: 'Wiki anglais : https://git.io/vSKE5'
cycler:
block_cycler_cannot_cycle: Le data de ce bloc ne peut pas être cyclé!
block_cycler_limit: Limite du nombre maximal de blocs changeable atteinte.
block_cycler_no_perm: 'Vous nêtes pas autorisé à cycler la valeur du data de ce bloc.'
scripting:
scripting_no_perm: 'Vous navez pas la permission dexécuter ce script de fabrication'
scripting_cs: Utilisez /cs avec un nom de script avant.
scripting_error: Une erreur sest produite lors de lexécution dun script de fabrication.
progress:
progress_message: '%s1/%s0 (%s2%) @%s3bps %s4s restants'
progress_finished: '[ Terminé ! ]'
cancel:
worldedit_cancel_count: 'Modifications %s0 annulées.'
worldedit_cancel_reason_confirm: 'Votre sélection est large (%s0 -> %s1,
contenant %s3 blocs). Faites //confirm pour exécuter %s2'
worldedit_cancel_reason: 'Votre action a été annulée : %s0.'
worldedit_cancel_reason_manual: Annulation humaine
worldedit_cancel_reason_low_memory: Mémoire trop faible
worldedit_cancel_reason_max_changes: Trop de blocs modifiés
worldedit_cancel_reason_max_checks: Trop de vérifications
worldedit_cancel_reason_max_tiles: Trop de types de blocs
worldedit_cancel_reason_max_entities: Entités trop élevées
worldedit_cancel_reason_max_iterations: Itérations trop élevées
worldedit_cancel_reason_outside_level: En dehors du monde
worldedit_cancel_reason_outside_region: En dehors de la région autorisée (bypass
avec /wea, ou désactivez `region-restrictions` dans la configuration)
worldedit_cancel_reason_no_region: Région non autorisée (bypass avec /wea, ou désactivez
`region-restrictions` dans la configuration)
worldedit_failed_load_chunk: 'Chargement du chunk ignoré : %s0;%s1. Essayez
d''augmenter chunk-wait.'
navigation:
ascend_fail: Aucune place libre au-dessus de vous n'a été trouvée
ascended_plural: Montée de %s0 couche.
ascended_singular: Montée de 1 couche.
unstuck: Et voilà !
descend_fail: Aucune place libre en dessous de vous n'a été trouvée.
descend_plural: Descendu de %s0 couches.
descend_singular: Descendu de 1 couche.
whoosh: Waouh !
poof: Pouf !
thru_fail: Aucune place libre devant vous n'a été trouvée.
no_block: Pas de bloc en vue ! (ou trop loin)
up_fail: ' Tu frapperais quelque chose au-dessus de toi.'
selection:
sel_cuboid: 'Cuboïde : clic gauche pour point 1, clic droit pour point 2'
sel_cuboid_extend: 'Cuboïde : clic gauche pour le point de départ, clic droit pour
étendre'
sel_2d_polygon: 'Sélecteur de polygone 2D : Clic gauche/droit pour ajouter un point.'
sel_ellipsiod: 'Sélecteur ellipsoïde : clic gauche=centre, clic droit pour agrandir.'
sel_sphere: 'Sélecteur de sphère : clic gauche=centre, clic droit pour définir le
rayon.'
sel_cylindrical: 'Sélecteur cylindrique : Clic gauche=centre, clic droit pour étendre.'
sel_max: '%s0 points maximum.'
sel_fuzzy: 'Sélecteur flou : Clic gauche pour sélectionner tous les blocs contingents,
clic droit. à ajouter. Pour sélectionner une cavité d''air, utilisez //pos1.'
sel_convex_polyhedral: 'Sélecteur polyédrique convexe : Clic gauche=Premier sommet,
droite, droite cliquez pour en ajouter d''autres.'
sel_list: Pour une liste de types de sélection, faites //sel list
sel_modes: 'Sélectionnez un des modes en dessous :'
tips:
tip_sel_list: 'Astuce : Voir les différents modes de sélection avec //sel list'
tip_select_connected: Astuce, Sélectionner tous les blocs connectés avec //sel fuzzy'
tip_set_pos1: Astuce, Utilisez pos1 comme motif avec //set pos1
tip_farwand: Astuce, Sélectionnez les points distants avec //farwand.'
tip_discord: 'Besoin d''aide ? Aide en anglais disponible : https://discord.gg/KxkjDVg'
tip_lazycut: 'Conseil, Il est plus sûr d''utiliser //lazycut'
tip_fast: 'Astuce, Définir rapidement et sans défaire en utilisant //fas'
tip_cancel: 'Astuce, Vous pouvez //cancel et éditer en cours de traitement.'
tip_mask: 'Astuce, Définir un masque de destination globale avec /gmask'
tip_mask_angle: 'Astuce, Remplacer les pentes ascendantes de 3-20 blocs en faisant
//replace /[-20][-3] bedrock'
tip_set_linear: 'Conseil, Définissez les blocs de manière linéaire avec //set
#l3d[wood,bedrock]'
tip_surface_spread: 'Conseil, Étendez une surface plane à l''aide de //set #surfacespread[5][0][5][#existing]'
tip_set_hand: 'Astuce, Utilisez votre main actuelle avec //set hand'
tip_replace_regex: 'Tip, Remplacer à l''aide de regex : //replace .*_log <pattern>'
tip_replace_regex_2: 'Tip, Remplacer à l''aide de regex : //replace .*stairs[facing=(north|south)]
<pattern>'
tip_replace_regex_3: 'Tip, Remplacer à l''aide des opérateurs : //replace water[level>2]
sand'
tip_replace_regex_4: 'Tip, Remplacer à l''aide des opérateurs : //replace true
*[waterlogged=false]'
tip_replace_regex_5: 'Tip, Remplacer à l''aide des opérateurs : //replace true
*[level-=1]'
tip_replace_id: 'Tip, Remplacez seulement l''ID du bloc : //replace woodenstair
#id[cobblestair]'
tip_replace_light: 'Tip, Remplacez seulement les sources de lumière : //replace
#brightness[1][15] 0'
tip_tab_complete: Tip, La commande de remplacement prend en charge la complétion
du tab.
tip_flip: Tip, Flip avec //flip
tip_deform: Tip, Remodeler avec //deform
tip_transform: Tip, Sélectionnez une transformation avec //gtransform
tip_copypaste: Tip, Collez en cliquant avec //br copypaste
tip_source_mask: Tip, Sélectionnez un masque source avec /gsmask <mask>
tip_replace_marker: 'Tip, Remplacez un bloc avec votre presse-papier entier avec
//replace wool #fullcopy'
tip_paste: Tip, Collez avec //paste
tip_lazycopy: Tip, LazyCopy est plus rapide
tip_download: Tip, Essayez //download
tip_rotate: Tip, Orientez vos sélections avec //rotate
tip_copy_pattern: 'Tip, Utilisez un type de pattern avec #copy'
tip_regen_0: Tip, Utilisez un biome avec /regen [biome]
tip_regen_1: Tip, Utilisez un seed avec /regen [biome] [seed]
tip_biome_pattern: Tip, Le pattern '#biome[forest] peut être utilisé dans une quelconque commande'
tip_biome_mask: Tip, Mettez une restriction de biome en utilisant le masque `$jungle`

View File

@ -1,298 +0,0 @@
info:
prefix: '(FAWE)'
file_deleted: '%s0 è stato eliminato.'
schematic_pasting: 'La schematica si sta incollando. Questo non può essere annullato.'
lighting_propogate_selection: 'L''illuminazione è stata propagata in %s0 chunk. (Nota: Per rimuovere la luce usa //removelight)'
updated_lighting_selection: 'L''illuminazione è stata aggiornata in %s0 chunk. (Può richiedere un secondo per i pacchetti da inviare)'
set_region: 'Selezione impostata alla tua regione attuale consentita'
worldedit_command_limit: 'Attendi fino al completamento della tua azione corrente'
worldedit_delayed: 'Attendi durante l''elaborazione della tua azione di FAWE...'
worldedit_run: 'Scuse per il ritardo. Ora in esecuzione: %s'
worldedit_complete: 'Modifica completata.'
require_selection_in_mask: '%s della tua selezione non è nella tua maschera. Puoi solo fare modifiche all''interno delle regioni consentite.'
worldedit_volume: 'Non puoi selezionare un volume di %current%. Il volume massimo che puoi modificare è %max%.'
worldedit_iterations: 'Non puoi iterare %current% volte. Il numero massimo di interazioni consentite è %max%.'
worldedit_unsafe: 'L''accesso a quel comando è stato bloccato'
worldedit_dangerous_worldedit: 'Modifica non sicura elaborata a %s0 da %s1'
worldedit_bypass: 'Per bypassare le tue restrizioni usa /wea'
worldedit_toggle_tips_on: 'Suggerimenti di FAWE disabilitati.'
worldedit_toggle_tips_off: 'Suggerimenti di FAWE abilitati.'
worldedit_bypassed: 'Attualmente bypassando la restrizione di FAWE.'
worldedit_unmasked: 'Le tue modifiche di FAWE non sono più soggette a restrizioni.'
worldedit_restricted: 'Le tue modifiche di FAWE sono ora soggette a restrizioni.'
worldedit_oom_admin: |-
Opzioni possibili:
- //fast
- Fai modifiche più piccole
- Alloca più memoria
- Disabilita `max-memory-percent`
compressed: Cronologia compressa. Risparmiati ~ %s0b (%s1x più piccola)
action_complete: Azione completata in %s0 secondi
error:
worldedit_extend: 'La tua modifica potrebbe essere stata estesa al di fuori della tua area consentita.'
web_unauthorized: 'Sono consentiti solo i link dall''host web configurato: %s0'
command_syntax: 'Uso: %s0'
no_perm: 'Ti manca il permesso: %s0'
setting_disable: 'Impostazione mancante: %s0'
brush_not_found: 'Pennelli disponibili: %s0'
brush_incompatible: 'Pennello non compatibile con questa versione'
schematic_not_found: 'Schematica non trovata: %s0'
no_region: 'Attualmente non hai una regione consentita'
no_mask: 'Attualmente non hai una maschera impostata'
not_player: 'Devi essere un giocatore per eseguire questa azione!'
player_not_found: 'Giocatore non trovato: %s0'
oom: |-
[Critico] Rilevata poca memoria cioè < 1%. Prenderemo le seguenti azioni:
- Terminare il posizionamento di WE dei blocchi
- Cancellare la cronologia di WE
- Scaricare i chunk non essenziali
- Uccidere le entità
- Eseguire un garbage collector
Ignora questo se stai cercando di far crashare il server.
Nota: La carenza di memoria è probabilmente (ma non necessariamente) causata da WE
worldedit_some_fails: '%s0 blocchi non sono stati piazzati perché erano fuori dalla tua regione consentita.'
worldedit_some_fails_blockbag: 'Blocchi mancanti: %s0'
web:
generating_link: Caricando %s, si prega di attendere...
generating_link_failed: 'Fallita la generazione del link di download!'
download_link: '%s'
worldedit:
general:
mask_disabled: Maschera globale disabilitata
mask: Maschera globale impostata
source_mask_disabled: Maschera sorgente globale disabilitata
source_mask: Maschera sorgente globale impostata
transform_disabled: Trasformazione globale disabilitata
transform: Trasformazione globale impostata
fast_enabled: Modalità veloce abilitata. La cronologia e le restrizioni di modifica saranno ignorate.
fast_disabled: Modalità veloce disabilitata
place_enabled: 'Ora piazzando a pos #1.'
place_disabled: Ora piazzando al blocco in cui ti trovi.
copy:
command_copy: '%s0 blocchi sono stati copiati.'
cut:
command_cut_slow: '%s0 blocchi sono stati tagliati.'
command_cut_lazy: '%s0 blocchi saranno rimossi al momento dell''incollaggio'
paste:
command_paste: Gli appunti sono stati incollati a %s0
rotate:
command_rotate: Gli appunti sono stati ruotati
flip:
command_flipped: Gli appunti sono stati capovolti
regen:
command_regen_0: Regione rigenerata.
command_regen_1: Regione rigenerata.
command_regen_2: Regione rigenerata.
tree:
command_tree: '%s0 alberi creati.'
command_pumpkin: '%s0 gruppi di zucche create.'
flora:
command_flora: '%s0 flora creata.'
history:
command_history_clear: Cronologia cancellata
command_redo_error: Niente da rifare. (Vedi anche `/inspect` e `/frb`)
command_history_other_error: Impossibile trovare la sessione per %s0.
command_redo_success: Rifatto con successo.
command_undo_error: Niente da annullare. (Vedi anche `/inspect` e `/frb`)
command_undo_success: Annullato con successo.
operation:
operation: Operazione messa in coda (%s0)
selection:
selection_wand: 'Click sinistro: seleziona pos #1; Click destro: seleziona pos #2'
selection_wand_disable: Bacchetta modifica disabilitata.
selection_wand_enable: Bacchetta modifica abilitata.
selection_chunk: Chunk selezionato (%s0)
selection_chunks: Chunk selezionati (%s0) - (%s1)
selection_contract: Regione contratta di %s0 blocchi.
selection_count: Contati %s0 blocchi.
selection_distr: '# blocchi totali: %s0'
selection_expand: Regione espansa di %s0 blocchi
selection_expand_vert: Regione espansa di %s0 blocchi (dall'alto al basso)
selection_inset: Regione contratta in tutte le direzioni
selection_outset: Regione espansa in tutte le direzioni
selection_shift: Regione spostata
selection_cleared: Selezione cancellata
navigation:
navigation_wand_error: 'Niente da attraversare'
anvil:
world_is_loaded: Il mondo non dovrebbe essere in uso durante l''esecuzione. Scarica il mondo, o usa -f per sovrascriverlo (salvalo prima)
brush:
brush_reset: Ripristina il tuo pennello.
brush_none: Non stai tenendo un pennello!
brush_scroll_action_set: Azione di scorrimento impostata a %s0
brush_scroll_action_unset: Azione di scorrimento rimossa
brush_visual_mode_set: Modalità visuale impostata a %s0
brush_target_mode_set: Modalità obbiettivo impostata a %s0
brush_target_mask_set: Impostata la maschera di destinazione a %s0
brush_target_offset_set: Impostato l'offset di destinazione a %s0
brush_equipped: Equipaggiato il pennello %s0
brush_try_other: |-
Ci sono altri pennelli più adatti es.
- //br height [radius=5] [#clipboard|file=null] [rotation=0] [yscale=1.00]
brush_copy: Click sinistro sulla base di un oggetto da copiare, click destro per incollare. Aumenta il raggio del pennello se necessario.
brush_height_invalid: File della height map non valido (%s0)
brush_smooth: 'Nota: Usa il pennello sfumato per levigare sporgenze o grotte.'
brush_spline: Clicca per aggiungere un punto, clicca nello stesso punto per finire
brush_line_primary: Aggiunto il punto %s0, clicca su un'altra posizione per creare la linea
brush_line_secondary: Creata una scanalatura
brush_spline_primary_2: Posizione aggiunta, Clicca sullo stesso punto per unirla!
brush_spline_secondary_error: Non sono state impostate abbastanza posizioni!
brush_spline_secondary: Creata una scanalatura
brush_size: Dimensione pennello impostata
brush_range: Dimensione pennello impostata
brush_mask_disabled: Maschera pennello disabilitata
brush_mask: Maschera pennello impostata
brush_source_mask_disabled: Maschera sorgente del pennello disabilitata
brush_source_mask: Maschera sorgente del pennello impostata
brush_transform_disabled: Trasformazione pennello disabilitata
brush_transform: Trasformazione pennello impostata
brush_material: Materiale pennello impostato
rollback:
rollback_element: Annullando %s0
tool:
tool_inspect: Strumento di ispezione associato a %s0.
tool_inspect_info: '%s0 ha modificato %s1 a %s2 %s3 fa'
tool_inspect_info_footer: 'Totale: %s0 modifiche'
tool_none: Strumento disassociato dal tuo oggetto corrente.
tool_info: Strumento di informazioni associato a %s0.
tool_tree: Strumento di generazione di alberi associato a %s0.
tool_tree_error: Il tipo di albero %s0 è sconosciuto.
tool_repl: Strumento di sostituzione blocchi associato a %s0.
tool_cycler: Strumento per ciclare i dati dei blocchi associato a %s0.
tool_flood_fill: Strumento per riempire di blocchi associato a %s0.
tool_range_error: 'Raggio massimo: %s0.'
tool_radius_error: 'Massimo raggio del pennello consentito: %s0.'
tool_deltree: Strumento di rimozione alberi volanti associato a %s0.
tool_farwand: Strumento bacchetta a distanza associato a %s0.
tool_lrbuild_bound: Strumento di costruzione a lungo raggio associato a %s0.
tool_lrbuild_info: Click-sinistro per impostare a %s0; click-destro per impostare a %s1.
superpickaxe_enabled: Super Piccone abilitato.
superpickaxe_disabled: Super Piccone disabilitato.
superpickaxe_area_enabled: Modalità cambiata. Click sinistro con un piccone. // per disabilitare.
snapshot:
snapshot_loaded: Snapshot '%s0' caricato; ora ripristinando...
snapshot_set: 'Snapshot impostato a: %s0'
snapshot_newest: Ora usando lo snapshot più recente.
snapshot_list_header: 'Snapshot per il mondo (%s0):'
snapshot_list_footer: Usa /snap use [snapshot] o /snap use latest.
biome:
biome_list_header: 'Biomi (pagina %s0/%s1):'
biome_changed: I biomi sono stati cambiati in %s0 colonne.
utility:
kill_success: Uccise %s0 entità in un raggio di %s1.
nothing_confirmed: Non hai azioni in attesa di conferma.
page_footer: Usa %s0 per andare alla pagina successiva
schematic:
schematic_format: 'Formati disponibili (Nome: Nomi di ricerca)'
schematic_loaded: '%s0 caricato. Incollalo con //paste'
schematic_saved: '%s0 salvato.'
schematic_page: La pagina deve essere %s
schematic_none: Nessun file trovato.
schematic_list: 'File disponibili (Nome file: Formato) [%s0/%s1]:'
schematic_list_elem: ' - %s0 - %s1'
clipboard:
clipboard_uri_not_found: Non hai %s0 caricato
clipboard_cleared: Appunti cancellati
clipboard_invalid_format: 'Formato di appunti sconosciuto: %s0'
visitor:
visitor_block: '%s0 blocchi interessati'
visitor_entity: '%s0 entità interessate'
visitor_flat: '%s0 colonne interessate'
selector:
selector_fuzzy_pos1: Regione impostata ed espansa da %s0 %s1.
selector_fuzzy_pos2: Aggiunta espansione di %s0 %s1.
selector_pos: pos%s0 impostata a %s1 (%s2).
selector_center: Centro impostato a %s0 (%s1).
selector_radius: Raggio impostato a %s0 (%s1).
selector_expanded: Regione espansa a %s0 (%s1)
selector_invalid_coordinates: Coordinate %s0 non valide
selector_already_set: Posizione già impostata.
selector_set_default: Il tuo selettore di regioni predefinito è ora %s0.
timezone:
timezone_set: 'Fuso orario impostato per questa sessione a: %s0'
timezone_display: 'L''ora corrente in quel fuso orario è: %s0'
command:
command_invalid_syntax: Il comando non è stato usato correttamente (nessun altro aiuto disponibile).
help:
command_clarifying_bracket: 'Aggiunta una parentesi di chiarimento per %s0'
help_suggest: 'Non è stato possibile trovare %s0. Forse provane uno di %s1 ?'
help_header_categories: Tipi di Comando
help_header_subcommands: Sottocomandi
help_header_command: 'Aiuto per: %s0'
help_item_allowed: '%s0 - %s1'
help_item_denied: '%s0 - %s1'
help_header: 'Aiuto: pagina %s0/%s1'
help_footer: 'Wiki: https://git.io/vSKE5'
progress:
progress_message: '%s1/%s0 (%s2%) @%s3cps %s4s rimanenti'
progress_finished: '[ Fatto! ]'
cancel:
worldedit_cancel_count: 'Cancellate %s0 modifiche.'
worldedit_cancel_reason_confirm: 'La tua selezione è grande (%s0 -> %s1). Usa //confirm per eseguire %s2'
worldedit_cancel_reason: 'La tua azione WorldEdit è stata cancellata: %s0.'
worldedit_cancel_reason_manual: Cancellazione manuale
worldedit_cancel_reason_low_memory: Poca memoria
worldedit_cancel_reason_max_changes: Troppi blocchi cambiati
worldedit_cancel_reason_max_checks: Troppi controlli di blocchi
worldedit_cancel_reason_max_tiles: Troppi stati di blocchi
worldedit_cancel_reason_max_entities: Troppe entità
worldedit_cancel_reason_max_iterations: Iterazioni massime
worldedit_cancel_reason_max_fails: Fuori dalla regione consentita (bypassa con /wea, o disabilita `region-restrictions` in config.yml)
worldedit_cancel_reason_no_region: Nessuna regione consentita (bypassa con /wea, o disabilita `region-restrictions` in config.yml)
worldedit_failed_load_chunk: 'Saltato il caricamento del chunk: %s0;%s1. Prova aumentando chunk-wait.'
navigation:
ascend_fail: Nessun posto libero trovato sopra di te.
ascended_plural: Asceso di %s0 livelli.
ascended_singular: Asceso di un livello.
unstuck: Ci si va!
descend_fail: Nessun posto libero trovato sotto di te.
descend_plural: Disceso di %s0 livelli.
descend_singular: Disceso di un livello.
whoosh: Whoosh!
poof: Poof!
thru_fail: Nessun punto libero trovato davanti a te.
no_block: Nessun blocco in vista! (o troppo lontano)
up_fail: Colpiresti qualcosa sopra di te.
selection:
sel_cuboid: 'Cuboide: click sinistro per il punto 1, click destro per il punto 2'
sel_cuboid_extend: 'Cuboide: click sinistro per un punto di partenza, click destro per estendere'
sel_2d_polygon: 'Selettore poligono 2D: Click sinistro/destro per aggiungere un punto.'
sel_ellipsiod: 'Selettore ellissoide: Click sinistro=centro, click destro per estendere'
sel_sphere: 'Selettore sfere: Click sinistro=centro, click destro per impostare il raggio'
sel_cylindrical: 'Selettore cilindrico: Click sinistro=centro, click destro per estendere.'
sel_max: '%s0 punti al massimo.'
sel_fuzzy: 'Selettore sfocato: Click sinistro per selezionare tutti i blocchi contingenti, click destro per aggiungere. Per selezionare una cavità d''aria, usa //pos1.'
sel_convex_polyhedral: 'Selettore poliedrico convesso: Click sinistro=Primo vertice, click destro per aggiungerne altri.'
sel_list: 'Per una lista di tipi di selezione usa: //sel list'
sel_modes: 'Seleziona una delle modalità qui sotto:'
tips:
tip_sel_list: 'Consiglio: Vedi le diverse modalità di selezione con //sel list'
tip_select_connected: 'Consiglio: Seleziona tutti i blocchi collegati con //sel fuzzy'
tip_set_pos1: 'Consiglio: Usa pos1 come un pattern con //set pos1'
tip_farwand: 'Consiglio: Seleziona i punti distanti con //farwand'
tip_lazycut: 'Consiglio: È più sicuro usare //lazycut'
tip_fast: 'Consiglio: Imposta velocemente e senza l''annullamento usando //fast'
tip_cancel: 'Consiglio: Puoi cancellare con //cancel una modifica in corso'
tip_mask: 'Consiglio: Imposta una maschera di destinazione globale con /gmask'
tip_mask_angle: 'Consiglio: Sostituire le pendenze verso l''alto di 3-20 blocchi usando //replace /[-20][-3] bedrock'
tip_set_linear: 'Consiglio: Imposta i blocchi linearmente con //set #l3d[wood,bedrock]'
tip_surface_spread: 'Consiglio: Propaga una superficie piana con //set #surfacespread[5][0][5][#existing]'
tip_set_hand: 'Consiglio: Usa la tua mano attuale con //set hand'
tip_replace_id: 'Consiglio: Sostituisci solo l''id del blocco: //replace woodenstair #id[cobblestair]'
tip_replace_light: 'Consiglio: Rimuovi le sorgenti di luce con //replace #brightness[1][15] 0'
tip_tab_complete: 'Consiglio: Il comando replace supporta il completamento del tabulatore'
tip_flip: 'Consiglio: Specchia con //flip'
tip_deform: 'Consiglio: Rimodella con //deform'
tip_transform: 'Consiglio: Imposta una trasformazione con //gtransform'
tip_copypaste: 'Consiglio: Incolla al click con //br copypaste'
tip_source_mask: 'Consiglio: Imposta una maschera sorgente con /gsmask <maschera>'
tip_replace_marker: 'Consiglio: Sostituisci un blocco con i tuoi appunti completi usando //replace wool #fullcopy'
tip_paste: 'Consiglio: Colloca con //paste'
tip_lazycopy: 'Consiglio: lazycopy è più veloce'
tip_download: 'Consiglio: Prova //download'
tip_rotate: 'Consiglio: Orienta con //rotate'
tip_copy_pattern: 'Consiglio: Per usarlo come un pattern prova #copy'
tip_regen_0: 'Consiglio: Usa un bioma con /regen [biome]'
tip_regen_1: 'Consiglio: Usa un seme con /regen [biome] [seed]'
tip_biome_pattern: 'Consiglio: Il pattern #biome[forest] può essere usato in qualsiasi comando'
tip_biome_mask: 'Consiglio: Limita a un bioma con la maschera `$jungle`'

View File

@ -1,366 +0,0 @@
# Translated and updated by RainbowGodDouwe
info:
prefix: '(FAWE)'
file_deleted: '%s0 Is verwijderd.'
schematic_pasting: 'Het schematic wordt geplaatst. dit kan niet veranderd worden.'
lighting_propogate_selection: 'Het licht heeft zich verspreid in %s0 chunks. (Note:
om het licht te verwijderen, doe //removelight)'
updated_lighting_selection: 'Lighting is geüpdatet in %s0 chunks. (het kan even
duren voordat de packets worden verstuurd)'
set_region: 'Toegestaande regio geselecteerd'
worldedit_command_limit: 'U kunt weer verder gaan wanneer uw vorige actie voltooid
is'
worldedit_delayed: 'U kunt weer verder gaan wanneer wij uw FAWE action voltooien...'
worldedit_run: 'Sorry voor het ongemak. huidige uitvoerende actie: %s'
worldedit_complete: 'Verandering voldaan.'
require_selection_in_mask: '%s Van je selectie is niet binnen je mask. Je kan
alleen veranderingen uitvoeren in de toegestaande regio.'
worldedit_volume: 'Je kan niet een volume van %current% toepassen. Het maximum
volume dat je kan toepassen is %max%.'
worldedit_iterations: 'Je kan %current% niet zoveel keer herhalen. het maximale
wat toegestaan is, is %max%.'
worldedit_unsafe: 'Toegang tot deze command is geblokkeerd'
worldedit_dangerous_worldedit: 'Nnveilige edits zijn verwerkt op %s0 by %s1'
worldedit_toggle_tips_on: 'Disabled FAWE tips.'
worldedit_toggle_tips_off: 'De FAWE tips staan nu aan.'
worldedit_bypassed: 'De restrictie of FAWE wordt nu overscheiden.'
worldedit_unmasked: 'Je FAWE edits hebben nu geen restrictie meer.'
worldedit_restricted: 'Je FAWE edits hebben nu een restrictie.'
worldedit_oom_admin: |-
Mogelijke opties:
- //fast
- Voer kleinere bewerkingen uit
- Wijs meer geheugen toe
- Disable `max-memory-percent`
compressed: Geschiedenis gecomprimeerd. Saved ~ %s0b (%s1x kleiner)
action_complete: Uitvoering is over %s0 voltooid.
error:
worldedit_extend: 'je edit is waarschijnlijk buiten het toegestaande gebied gekomen.'
web_unauthorized: 'alleen links van de configureerde webhost zijn toegestaan: %s0'
command_syntax: 'Gebruik: %s0'
no_perm: 'je hebt hier geen permission node voor: %s0'
setting_disable: 'Setting ontbreekt: %s0'
brush_not_found: 'Bruikbare brushes: %s0'
brush_incompatible: 'Deze brush kan niet in deze versie gebruikt worden'
schematic_not_found: 'Schematic niet gevonden: %s0'
no_region: 'Je hebt momenteel geen toegestaand gebied'
no_mask: 'Je hebt momenteel geen brush geselecteerd'
not_player: 'Je moet een speler zijn om dit te doen!'
player_not_found: 'Speler niet gevonden: %s0'
oom: |-
[Critical] Gedetecteerd laag geheugen i.e. < 1%. We zullen de volgende acties ondernemen:
- Verwijder de huidige WE blok plaatsing
- Clear WE history
- Unload non essential chunks
- Dood de entities
- Onnodige data collecteren
Negeer dit als je de server wilt laten crashen.
Note: Een laag opslagvermogen kan door WE veroorzaakt worden (dit hoeft niet)
worldedit_some_fails: '%s0 Blokken zijn niet geplaats omdat ze uit je toegestaande
gebied werden geplaatst.'
worldedit_some_fails_blockbag: 'oOntbrekende blokken: %s0'
block_not_allowed: Het is niet toegestaan om dit te gebruiken
web:
generating_link: Uploading %s, even geduld A.U.B...
generating_link_failed: 'De donwload link kon niet worden gemaakt!'
download_link: '%s'
worldedit:
general:
mask_disabled: Global mask uitgeschakeld
mask: Global mask is gezet
texture_disabled: Texturing reset
texture_set: Texturing tot %s1 gezet
source_mask_disabled: Global source mask uitgeschakeld
source_mask: Global source mask geszet
transform_disabled: Global transform uitgeschakeld
transform: Global transform gezet
fast_enabled: Fast mode aangezet. History en edit restrictions zullen worden negeerd.
fast_disabled: Fast mode uitgeschakeld
place_enabled: 'Wordt nu geplaats op locatie #1.'
place_disabled: Het wordt nu geplaatst op het blok waar je op staat.
copy:
command_copy: '%s0 blokken zijn gekopieerd.'
cut:
command_cut_slow: '%s0 Blocks were cut.'
command_cut_lazy: '%s0 Blokken zullen verwijderd worden bij plaatsing'
paste:
command_paste: Het klipbord is geplaatst op %s0
rotate:
command_rotate: Het klipbord is omgedraaid
flip:
command_flipped: Het klipbord is omgedraaid
regen:
command_regen_0: Regio gegenereerd.
command_regen_1: Regio gegenereerd.
command_regen_2: Regio gegenereerd.
tree:
command_tree: '%s0 Bomen gecreëerd.'
command_pumpkin: '%s0 Pompoenen gecreëerd.'
flora:
command_flora: '%s0 Flora gecreëerd.'
history:
command_history_clear: Geschiedenis verwijderd
command_redo_error: Er is niks om te ontdaan. (See also `/inspect` and `/frb`)
command_history_other_error: We kunnen geen sessie voor %s0 vinden.
command_redo_success: Herdaan succesvol.
command_undo_error: Er is niet om te ontdaan. (See also `/inspect` and `/frb`)
command_undo_success: Herdaan succesvol.
command_undo_disabled: 'Undo disabled, use: //fast'
operation:
operation: Operaties die in de wacht staan (%s0)
selection:
selection_wand: 'Links klikken: selecteer pos #1; Rechts klikken: selecteer pos
#2'
selection_wand_disable: Edit wand uitgeschakeld.
selection_wand_enable: Edit wand ingeschakeld.
selection_chunk: Chunk geselecteerd (%s0)
selection_chunks: Chunks geselecteerd (%s0) - (%s1)
selection_contract: Region contracted %s0 blokken.
selection_count: '%s0 Blokken geteld.'
selection_distr: '# Totaal aantal blokken: %s0'
selection_expand: Regio vergroot met %s0 blokken.
selection_expand_vert: Regio vergroot met %s0 blokken (van boven naar beneden)
selection_inset: Region inset
selection_outset: Region outset
selection_shift: Region verzet
selection_cleared: Selectie verwijderd
navigation:
navigation_wand_error: 'Nergens om door heen te gaan'
anvil:
world_is_loaded: de wereld zou niet in gebruik moeten zijn wanneer er een uitvoering
wordt gedaan. onlaad de wereld, of gebruik -f om het te overschrijden (save
first)
brush:
brush_reset: Reset je brush. (SHIFT + Click)
brush_none: Je houdt hebt geen brush vast!
brush_scroll_action_set: Scroll action gezet naar %s0
brush_scroll_action_unset: Scroll action uitgeschakeld.
brush_visual_mode_set: Visuele mode gezet naar %s0
brush_target_mode_set: Target mode gezet naar %s0
brush_target_mask_set: Target mode gezet naar %s0
brush_target_offset_set: Uitschietting van de target gezet tot %s0
brush_equipped: Brush in gebruik %s0
brush_try_other: |-
Er zijn betere brushes hier voor te gebruiken e.g.
- //br height [radius=5] [#clipboard|file=null] [rotation=0] [yscale=1.00]
brush_copy: Links klik de fundering van de constructie om te kopieëren, rechts
klik om te plakken. Verhoog de brush Settings als dat mogelijk is.
brush_height_invalid: Onvalide hoogte map file (%s0)
brush_smooth: Gebruik de blend brush om caves en hangende dingen glad te krijgen.'
brush_spline: Klik Om een bevestigingspunt te zetten, klik hetzelfde punt om het
af te ronden.
brush_line_primary: Punt %s0 toegevoegt, klik op een andere locatie om de lijn
te creëeren.
brush_catenary_direction: Punt %s0 toegevoegt, klik naar de directie waar je krommen
wilt.
brush_line_secondary: Kromme lijn gecreëerd
brush_spline_primary_2: Positie toegevoegt, klik hetzelfde punt om mee te doen!
brush_spline_secondary_error: Niet genoeg posities gezet!
brush_spline_secondary: Kromme lijn gecreërd
brush_size: Brush grootte gezet
brush_range: Brush bereik gezet
brush_mask_disabled: Brush mask disabled
brush_mask: Brush mask gezet
brush_source_mask_disabled: Brush source mask uitgeschakeld
brush_source_mask: Brush source mask gezet
brush_transform_disabled: Brush transform uitgeschakeld
brush_transform: Brush transform gezet
brush_material: Brush material gezet
rollback:
rollback_element: Aan %s0 het ontdaan maken.
tool:
tool_inspect: Inspect tool gebonden aan %s0.
tool_inspect_info: '%s0 veranderd %s1 to %s2 %s3 geleden'
tool_inspect_info_footer: 'Totaal: %s0 veranderingen'
tool_none: De tool is niet meer gebonden aan je item.
tool_info: Info tool gebonden aan %s0.
tool_tree: Tree tool gebonden aan %s0.
tool_tree_error: Tree type %s0 is niet gevonden.
tool_repl: Block replacer tool gebonden aan %s0.
tool_cycler: Block data cycler tool gebonden aan %s0.
tool_flood_fill: Block flood fill tool gebonden aan %s0.
tool_range_error: 'Maximale bereik: %s0.'
tool_radius_error: 'Maximum toegestaande brush radius: %s0.'
tool_deltree: Floating tree remover tool gebonden aan %s0.
tool_farwand: Far wand tool gebonden aan %s0.
tool_lrbuild_bound: Long-range building tool gebonden aan %s0.
tool_lrbuild_info: links-klik gebonden aan %s0; rechts-klik gebonden aan %s1.
superpickaxe_enabled: Super Pickaxe ingeschakeld.
superpickaxe_disabled: Super Pickaxe uitgeschakeld.
superpickaxe_area_enabled: Mode veranderd. Links klik met een pickaxe. // om uit
te schakelen.
tool_tree_error_block: Daar kan je geen boom plaatsen.
tool_deltree_error: Dat is geen boom.
tool_deltree_floating_error: Dat is niet een vliegende boom.
snapshot:
snapshot_loaded: Snapshot '%s0' geladen; nu aan het herstellen...
snapshot_set: 'Snapshot gezet tot: %s0'
snapshot_newest: Je gebruikt de nieuwste snapshot.
snapshot_list_header: 'Snapshots voor wereld (%s0):'
snapshot_list_footer: Gebruik /snap use [snapshot] of /snap use latest.
snapshot_not_configured: Snapshot/backup restoratie is niet geconfigureerd.
snapshot_not_available: Er zijn geen snapshots gevonden, zie de console voor meer informatie.
snapshot_not_found_world: Er zijn geen snapshots gevonden van deze wereld.
snapshot_not_found: Er zijn geen snapshots gevonden.
snapshot_invalid_index: Geen geldende context, deze moest hoger of gelijk aan 1 zijn.
snapshot_error_date: Kon de data input niet vinden.
snapshot_error_restore: Storingen zorgden ervoor dat de blokken niet konden worden teruggeplaatst.
snapshot_error_restore_chunks: Er konden geen chunks geladen worden.
biome:
biome_list_header: 'Biomes (page %s0/%s1):'
biome_changed: Biotopen zijn veranderd in %s0 columns.
utility:
kill_success: entities %s0 zijn vermoord in een radius van %s1.
nothing_confirmed: Je hebt geen acties die bevestigt moeten worden.
page_footer: Gebruik %s0 om naar de volgende pagina te gaan
schematic:
schematic_prompt_clear: 'we raden je aan %s0 te gebruiken om je klipbord
te verwijderen first'
schematic_show: |-
scematics %s0 aan het wergeven %s1:
- Links klik a het gebouw om er een klipbord van de maken
- Rechts klik a om een gebouw toe te voegen aan je multi-klipbord
- Gebruik %s2 om terug naar de wereld te gaan
schematic_format: 'Beschikbare formats (Name: Lookup names)'
schematic_move_exists: '%s0 bestaat al'
schematic_move_success: '%s0 -> %s1'
schematic_move_failed: '%s0 aantal verplaatst: %s1'
schematic_loaded: '%s0 gelanden. plak met //paste'
schematic_saved: '%s0 opgeslagen.'
schematic_page: Pagina moet %s zijn
schematic_none: Niks gevonden.
schematic_list: 'Beschikbare files (Filename: Format) [%s0/%s1]:'
schematic_list_elem: ' - %s0 - %s1'
clipboard:
clipboard_uri_not_found: Je hebt %s0 niet geladen
clipboard_cleared: Jlikbord verwijderd
clipboard_invalid_format: 'Niet bestaand clipboard format: %s0'
visitor:
visitor_block: '%s0 blocks aangetast'
visitor_entity: '%s0 entities aangetast'
visitor_flat: '%s0 columns aangetast'
selector:
selector_fuzzy_pos1: Regio gezet en verwijd van/naar %s0 %s1.
selector_fuzzy_pos2: Verwijding van %s0 %s1 toegevoegt.
selector_pos: pos%s0 gezet naar %s1 (%s2).
selector_center: Center gezet naar %s0 (%s1).
selector_radius: Radius gezet naar %s0 (%s1).
selector_expanded: Regio uitgebreid naar %s0 (%s1)
selector_invalid_coordinates: non-valid coördinaten %s0
selector_already_set: Positie al gezet.
selector_set_default: Your normale regio selector is nu %s0.
timezone:
timezone_set: 'Timezone gezet voor deze sessie naar: %s0'
timezone_display: 'De actuele tijd in die tijdzone is: %s0'
command:
command_invalid_syntax: De command was niet goed gebruikt (no more help available).
help:
command_clarifying_bracket: ' clarifying bracket toegevoegt aan %s0'
help_suggest: 'kon %s0 niet binden. misschien één van deze proberen %s1 ?'
help_header_categories: Command Types
help_header_subcommands: Subcommands
help_header_command: 'Help voor: %s0'
help_item_allowed: '%s0 - %s1'
help_item_denied: '%s0 - %s1'
help_header: 'Help: pagina %s0/%s1'
help_footer: 'Wiki: https://git.io/vSKE5'
cycler:
block_cycler_cannot_cycle: De blok data kan niet worden veranderd.
block_cycler_limit: Maximale veranderingen in blokken bereikt.
block_cycler_no_perm: 'Het is niet toegestaan om deze blok data te veranderen.'
scripting:
scripting_no_perm: 'Je hebt onvoldoende rechten om deze craft scriptie uit te voeren. '
scripting_cs: Gebruik eerst /cs met een scriptie naam.
scripting_error: Er waren problemen onstaan bij het uitvoeren van de craft scriptie.
progress:
progress_message: '%s1/%s0 (%s2%) @%s3cps %s4s left'
progress_finished: '[ Klaar! ]'
cancel:
worldedit_cancel_count: 'zoveel edits: %s0 ontdaan.'
worldedit_cancel_reason_confirm: 'Het geselecteerde gebied is groot (%s0 ->
%s1, containing %s3 blocks). Gebruik //confirm om te bevestigen %s2'
worldedit_cancel_reason: 'Your WorldEdit actie was opgeheven: %s0.'
worldedit_cancel_reason_manual: manuele opheffing
worldedit_cancel_reason_low_memory: Lage memory
worldedit_cancel_reason_max_changes: Teveel blokken verandered
worldedit_cancel_reason_max_checks: Teveel block checks
worldedit_cancel_reason_max_tiles: Teveel blockstates
worldedit_cancel_reason_max_entities: Teveel entities
worldedit_cancel_reason_max_iterations: Maximum herhaling
worldedit_cancel_reason_outside_level: Buiten de bebouwde kom
worldedit_cancel_reason_outside_region: Buiten het toegestaande gebied (bypass with
/wea, or disable `region-restrictions` in config.yml)
worldedit_cancel_reason_no_region: geen toegestaand gebied (bypass with /wea, or
disable `region-restrictions` in config.yml)
worldedit_failed_load_chunk: 'Chunks laden overgeslaan: %s0;%s1. probeer het
chunk-wait op te krikken.'
navigation:
ascend_fail: Geen vrije plekken boven je gesignaleerd.
ascended_plural: levels %s0 verlaagt.
ascended_singular: Ascended a level.
unstuck: There you go!
descend_fail: geen vrije plekken onder je gesignaleerd.
descend_plural: levels %s0 gedaald.
descend_singular: Een level gedaald.
whoosh: Whoosh!
poof: Poof!
thru_fail: Geen vrije plekken voor je.
no_block: Geen blokken in zicht! (of te ver)
up_fail: Er hangt helaas iets boven je.
selection:
sel_cuboid: 'Cuboid: links klik voor punt 1, rechts klik voor punt 2'
sel_cuboid_extend: 'Cuboid: links klik voor een begin punt, rechts klik om te verbreden'
sel_2d_polygon: '2D polygon selector: links/rechts klik om een punt toe te voegen.'
sel_ellipsiod: 'Ellipsoid selector: links klik=center, rechts klik om te verbreden'
sel_sphere: 'Sphere selector: Links klik=center, rechts klik om de radius te zetten'
sel_cylindrical: 'Cylindrical selector: links klik+center, right click to extend.'
sel_max: '%s0 points maximum.'
sel_fuzzy: 'Fuzzy selector: links klik om alle bestaande blokken te plaatsen, rechts
klik om toe te voegen. om een lucht holte te selecteren, doe //pos1.'
sel_convex_polyhedral: 'Convex polyhedral selector: Links klik=First vertex, rechts
klik om meer toe te voegen.'
sel_list: 'Voor een lijst met selecties doe: //sel list'
sel_modes: 'Selecteer één van de modes hier:'
tips:
tip_sel_list: 'Tip: Zie de verschillende selectie modes met //sel list'
tip_select_connected: 'Tip: Selecteer alle verbonden blokken met //sel fuzzy'
tip_set_pos1: 'Tip: Gebruik pos1 als een punt met //set pos1'
tip_farwand: 'Tip: Selecteer punten van ver weg met //farwand'
tip_lazycut: 'Tip: Het is veiliger om //lazycut te gebruiken'
tip_fast: 'Tip: Set fast and without undo using //fast'
tip_cancel: 'Tip: gebruik //cancel om een edit stop te zetten'
tip_mask: 'Tip: Zet een globale bestemmings mask met /gmask'
tip_mask_angle: 'Tip: Vervang opwaartse hellingen van 3-20 blocks met //replace
/[-20][-3] bedrock'
tip_set_linear: 'Tip: Zet een blok lineaire met //set #l3d[wood,bedrock]'
tip_surface_spread: 'Tip: Verpsreid een oppervlakte met //set #surfacespread[5][0][5][#existing]'
tip_set_hand: 'Tip: Gebruik je huide hand met //set hand'
tip_replace_regex: 'Tip: Vervang door regex: //replace .*_log <pattern>'
tip_replace_regex_2: 'Tip: Vervang door regex: //replace .*stairs[facing=(north|south)]
<pattern>'
tip_replace_regex_3: 'Tip: Vervang door operators: //replace water[level>2]
sand'
tip_replace_regex_4: 'Tip: Vervang door operators: //replace true *[waterlogged=false]'
tip_replace_regex_5: 'Tip: Vervang door operators: //replace true *[level-=1]'
tip_replace_id: 'Tip: Vervang alleen het blok id://replace woodenstair #id[cobblestair]'
tip_replace_light: 'Tip: Verwijder licht met with//replace #brightness[1][15]'
tip_tab_complete: 'Tip: The replace command supports tab completion'
tip_flip: 'Tip: Mirror met //flip'
tip_deform: 'Tip: Verander het van vorm met //deform'
tip_transform: 'Tip: Zet een transform met //gtransform'
tip_copypaste: 'Tip: Plaats bij klikken met //br copypaste'
tip_source_mask: 'Tip: Zet een source mask met /gsmask <mask>'
tip_replace_marker: 'Tip: verander een blok in je volle klipbord met //replace
wool #fullcopy'
tip_paste: 'Tip: Plaats met //paste'
tip_lazycopy: 'Tip: Lazycopy is sneller'
tip_download: 'Tip: Probeer //download'
tip_rotate: 'Tip: Orïenteer met //rotate'
tip_copy_pattern: 'Tip: Om een pattern te gebruiken, probeer #copy'
tip_regen_0: 'Tip: Gebruik een biome met /regen [biome]'
tip_regen_1: 'Tip: Gebruik een seed met /regen [biome] [seed]'
tip_biome_pattern: 'Tip: Dee #biome[forest] pattern kan ik elke opdracht gebruikt
worden'
tip_biome_mask: 'Tip: Er wordt een restrictie geplaatst op de biome met `$jungle`
mask'
tip_discord: Heb je hulp nodig bij FAWE? https://discord.gg/KxkjDVg

File diff suppressed because it is too large Load Diff

View File

@ -1,329 +0,0 @@
info:
prefix: '(FAWE)'
file_deleted: '%s0 был удален.'
schematic_pasting: 'Вставка схематического файла. Это не может быть отменено.'
lighting_propogate_selection: 'Освещение было распространено в %s0 чанках. (Примечание:
Для удаления освещения используйте //removelight)'
updated_lighting_selection: 'Освещение было обновлено в %s0 чанках. (Это может
занять секунду для отправки пакетов)'
set_region: 'Выделение установлено в вашем текущем регионе WorldEdit'
worldedit_command_limit: 'Пожалуйста, подождите, пока ваше текущее действие завершится'
worldedit_delayed: 'Пожалуйста, подождите, пока мы обрабатываем ваши действия
WorldEdit...'
worldedit_run: 'Простите за задержку. Выполнение: %s'
worldedit_complete: 'Действие WorldEdit выполнено.'
require_selection_in_mask: '%s вашего выделения не находится в пределах вашей
маски. Вы можете только вносить изменения в пределах разрешенных регионов.'
worldedit_volume: 'Вы не можете выбрать значение %current%. Максимальное значение,
которое вы можете изменить - %max%.'
worldedit_iterations: 'Вы не можете выполнить интерацию %current% раз. Максимальное
число допустимых итераций - %max%.'
worldedit_unsafe: 'Доступ к этой команде был заблокирован!'
worldedit_dangerous_worldedit: 'FAWE обрабатывает небезопасный WorldEdit в %s0
на %s1'
worldedit_toggle_tips_on: 'Советы WorldEdit включены.'
worldedit_toggle_tips_off: 'Советы WorldEdit включены.'
worldedit_bypassed: 'Обход ограничений WorldEdit включен.'
worldedit_unmasked: 'Ваш WorldEdit теперь неограниченный.'
worldedit_restricted: 'Обход ограничений WorldEdit выключен.'
worldedit_oom_admin: |-
Возможные варианты:
- //fast
- Сделать небольшие изменения
- Выделить больше памяти
- Отключить `max-memory-percent`
compressed: История сжата. Сохранено ~ %s0b (%s1x меньше)
action_complete: Действие выполенено за %s0 секунд
error:
worldedit_extend: 'Ваше выделение WorldEdit может быть расширено за пределами
разрешенного региона.'
command_syntax: 'Использование: %s0'
no_perm: 'У вас нет разрешения: %s0'
setting_disable: 'Отсутствует параметр: %s0'
schematic_not_found: 'Схематический файл не найден: %s0'
no_region: 'У вас нет текущего региона WorldEdit'
no_mask: 'У вас нет текущей установленой маски'
not_player: 'Вы должны быть игроком, чтобы выполнить это действие!'
player_not_found: 'Игрок не найден: %s0'
oom: |-
[Опасно] Обнаружено мало память, т.е. < 1%. FAWE предпримет следующие действия:
- Прекратить размещение блоков WE
- Очистить историю WE
- Выгрузить не необходимые чанки
- Убить энтити
- Собрать мусор
Игнорирование этого может призвести к крашу сервера.
Примечание: Нехватка памяти скорее всего (но не обязательно) вызванно WE
worldedit_some_fails: '%s0 блок(ов) не были размещены, потому что они были за
пределами вашего региона.'
worldedit_some_fails_blockbag: 'Недостающие блоки: %s0'
web_unauthorized: 'Разрешены только ссылки с настроенного веб-хостинга: %s0'
brush_not_found: 'Доступные кисти: %s0'
brush_incompatible: 'Кисть не совместима с этой версией'
web:
generating_link: Загрузка %s, пожалуйста подождите...
generating_link_failed: 'Не удалось создать ссылку!'
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: Теперь размещение в блоке, на котором вы стоите.
texture_disabled: Сброс текстуры
texture_set: Установите текстурирование на %s1
copy:
command_copy: '%s0 блок(ов) скопировано.'
cut:
command_cut_slow: |-
%s0 блок(ов) вырезано.
Совет: lazycut безопаснее
command_cut_lazy: '%s0 блок(ов) будут удалены при вставке'
paste:
command_paste: |-
Буфер обмена был вставлен в %s0
Совет: Вставка по клику - //br copypaste
rotate:
command_rotate: Буфер обмена был повернут
flip:
command_flipped: Буфер обмена было перевернут
regen:
command_regen_0: |-
Регион регенерирован.
Tip: Используйте биом - /regen [biome]
command_regen_1: |-
Регион регенерирован.
Совет: Используйте сид - /regen [biome] [seed]
command_regen_2: Регион регенерирован.
tree:
command_tree: '%s0 деревьев создано.'
command_pumpkin: '%s0 тыкв создано.'
flora:
command_flora: '%s0 флор создано.'
history:
command_history_clear: История очищена
command_redo_error: Ничего не осталось для возврата. (Смотрите также `/inspect` и `/frb`)
command_redo_success: Успешно возвращено.
command_undo_error: Ничего не осталось для отмены. (Смотрите также `/inspect` и `/frb`)
command_undo_success: Успешно отменено.
command_history_other_error: Не удалось найти сессию %s0.
operation:
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_expand: Регион расширен на %s0 блоков
selection_expand_vert: Регион расширен на %s0 блоков (сверху вниз)
selection_inset: Region inset
selection_outset: Region outset
selection_shift: Регион сдвинут
selection_cleared: Выделение очищено
brush:
brush_none: Вы не держите кисть!
brush_try_other: |-
FAWE добавляет другие, более подходящие кисти, например,
- //br height [radius=5] [#clipboard|file=null] [rotation=0] [yscale=1.00]
brush_copy: Кисть копирования сформирована (%s0). ПКМ по обьекту для копирования,
ПКМ для вставки. При необходимости увеличьте радиус кисти.
brush_height_invalid: Неверная высота файла карты (%s0)
brush_smooth: Кисть сглаживания сформирована (%s0 x %s1 используя %s2).
brush_spline: Форма кисти линий сформирована (%s0). ПКМ по концу, чтобы добавить форму
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: Материал кисти установлен
brush_scroll_action_set: Установлено действие прокрутки %s0
brush_visual_mode_set: Установлен визуальный режим для %s0
brush_target_mode_set: Установлен целевой режим для %s0
brush_spline_primary_2: Добавлена ​​позиция, Нажмите на том же месте, чтобы присоединиться!
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:
tool_inspect: Инструмент проверки связан с %s0.
tool_inspect_info: '%s0 изменено %s1 на %s2 %s3 назад'
tool_inspect_info_footer: 'Всего: %s0 изменений'
tool_none: Инструмент больше не связан с вашим предметом.
tool_info: Информационный инструмент связан с %s0.
tool_tree: Инструмент Девера связан с %s0.
tool_tree_error: Неизвестный тип дерева %s0.
tool_repl: Инструмент замены блока связан к %s0.
tool_cycler: Block data cycler tool bound to %s0.
tool_flood_fill: Инструмент Заливки блоков связан с %s0.
tool_deltree: Инструмент для удаления летающих деревьев связан с %s0.
tool_farwand: Инструмент дальной полочки связан с %s0.
tool_lrbuild_bound: Строительный инструмент дальнего действия связан с %s0.
tool_lrbuild_info: ЛКМ для установки %s0; ПКМ для установки %s1.
superpickaxe_enabled: Супер Кирка включена.
superpickaxe_disabled: Супер Кирка выключена.
tool_range_error: 'Максимальный диапазон: %s0.'
tool_radius_error: 'Максимально допустимый радиус кисти: %s0.'
superpickaxe_area_enabled: Режим изменен. Щелкните левой кнопкой мыши с киркой. // для отключения.
schematic:
schematic_format: 'Доступные форматы буфера обмена (Имя: Имена поиска)'
schematic_loaded: '%s0 загружен. Вставить его //paste'
schematic_saved: '%s0 сохранен.'
schematic_page: Страница должна быть %s
schematic_none: Схематических фалов не найдено.
schematic_list: 'Доступные схематические файлы (Имя файла: Формат) [%s0/%s1]:'
schematic_prompt_clear: 'Вы можете использовать %s0 очистить свой первый'
schematic_show: |-
Отображение %s0 схемы из %s1:
- Щелчок левой кнопкой мыши структура для настройки вашего буфера обмена
- Щелкните правойt кнопкой мыши добавить структуру в ваш мультибуфер
- использование %s2 вернуться в мир
schematic_move_exists: '%s0 уже существует'
schematic_move_success: '%s0 -> %s1'
schematic_move_failed: '%s0 нет перемещенных: %s1'
schematic_list_elem: ' - %s0 - %s1'
clipboard:
clipboard_cleared: Буфер обмена очищен
clipboard_invalid_format: 'Неизвестный формат буфера обмена: %s0'
clipboard_uri_not_found: У тебя нет %s0 нагруженный
visitor:
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: pos%s0 установлен в %s1 (%s2).
selector_center: Центр установлен на %s0 (%s1).
selector_radius: Радиус, установленный для %s0 (%s1).
selector_expanded: Расширенная область для %s0 (%s1)
command:
command_invalid_syntax: Команда не используется должным образом (нет больше помощи).
snapshot:
snapshot_loaded: Снимок '%s0' загружен; Восстановление...
snapshot_set: 'Снимок установлен: %s0'
snapshot_newest: Теперь с использованием новейших снимков.
snapshot_list_header: 'Снимки для мира (%s0):'
snapshot_list_footer: Используйте /snap use [snapshot] или /snap use latest.
biome:
biome_list_header: 'Биомы (стр. %s0/%s1):'
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: 'Ничто не может пройти'
anvil:
world_is_loaded: Мир не должен использоваться во время исполнения. Выгрузить или использовать -f переопределить (сохранить сначала)
help:
command_clarifying_bracket: 'Added clarifying bracket for %s0'
help_suggest: 'не мог найти %s0. Возможно, попробуйте один из %s1 ?'
help_header_categories: Типы команд
help_header_subcommands: Подкоманды
help_header_command: 'Помогите за: %s0'
help_item_allowed: '%s0 - %s1'
help_item_denied: '%s0 - %s1'
help_header: 'Помогите: страница %s0/%s1'
help_footer: 'Wiki: https://git.io/vSKE5'
progress:
progress_message: '[ Очередь: %s0 | Отправляется: %s1 ]'
progress_finished: '[ Готово! ]'
cancel:
worldedit_cancel_count: 'Отменено %s0 изменений.'
worldedit_cancel_reason: 'Ваше действие WorldEdit было отменено: %s0.'
worldedit_cancel_reason_manual: Ручная отмена
worldedit_cancel_reason_low_memory: Мало памяти
worldedit_cancel_reason_max_changes: Слишком много блоков изменено
worldedit_cancel_reason_max_checks: Слишком много проверок блоков
worldedit_cancel_reason_max_tiles: Слишком много blockstates
worldedit_cancel_reason_max_entities: Слишком много энтити
worldedit_cancel_reason_max_iterations: Максимальное количество итераций
worldedit_cancel_reason_no_region: Нет разрешенного региона (обход, используя /wea, или выключите `region-restrictions` в config.yml)
worldedit_failed_load_chunk: 'Пропущенные загруженные чанки: %s0;%s1. Попробуйте увеличить ожидание чанка.'
worldedit_cancel_reason_confirm: 'Ваш выбор большой (%s0 -> %s1, содержащий %s3 блоки). использование //confirm выполнить %s2'
worldedit_cancel_reason_outside_level: внешний мир
worldedit_cancel_reason_outside_region: Вне допустимой области (обход с /wea, или отключить `region-restrictions` в config.yml)
history: {}
navigation:
ascend_fail: Свободного места над вами не найдено.
ascended_plural: Вы поднялись на %s0 уровень(ней).
ascended_singular: Подняться на уровень.
unstuck: Уииии!
descend_fail: Свободного места под вами не найдено.
descend_plural: Вы спустились на %s0 уровень(ней).
descend_singular: Спуститься на уровень.
whoosh: Уииии!
poof: Бум!
thru_fail: Свободного места впереди вас не найдено.
up_fail: Вы бы ударились об что-то над вами.
no_block: Нету блоков в поле зрения! (или слишком далеко)
selection:
sel_cuboid: 'Кубоид: ЛКМ для точки 1, ПКМ для точки 2'
sel_cuboid_extend: 'Кубоид: ЛКМ для начальной точки, ПКМ для расширения'
sel_2d_polygon: 'Полигональное 2D выделение: ЛКМ/ПКМ для добавления точек.'
sel_ellipsiod: 'Эллипсоидное выделение: ЛКМ - центр, ПКМ для расширения'
sel_sphere: 'Сферическое выделение: ЛКМ - центр, ПКМ для установки радиуса'
sel_cylindrical: 'Цилиндрическое выделение: ЛКМ - центр, ПКМ для расширения'
sel_max: '%s0 максимум точек.'
sel_fuzzy: 'Нечеткое выделение: ЛКМ, чтобы выбрать все условные блоки, ПКМ, чтобы добавить'
sel_convex_polyhedral: 'Выпуклое многогранное выделение: ЛКМ - первая вершина, ПКМ для добавления больше.'
sel_list: Для получения списка типов выделения используйте: //sel list
sel_modes: 'Выберите один из перечисленных режимов ниже:'
tips:
tip_sel_list: 'Совет: Смотрите различные режимы выделения - //sel list'
tip_select_connected: 'Совет: Выберите все подключенные блоки - //sel fuzzy'
tip_set_pos1: 'Совет: Используйте Pos1 как шаблон - //set pos1'
tip_farwand: 'Совет: Выберите удаленные точки - //farwand'
tip_fast: 'Совет: Установить быстро и без отмены, используя //fast'
tip_cancel: 'Совет: Вы можете //cancel от изменений в процессе'
tip_mask: 'Совет: Задайте маску глобального назначения - /gmask'
tip_mask_angle: 'Совет: Заменить верхний слой 3-20 блоков - //replace /-20:-3 bedrock'
tip_set_linear: 'Совет: Установка блоков - //set #l3d:wood,bedrock'
tip_surface_spread: 'Совет: Распространение плоской поверхности - //set #surfacespread:5:0:5:#existing'
tip_set_hand: 'Совет: Используйте свою текущую руку - //set hand'
tip_replace_id: 'Совет: Заменить только ID блока - //replace woodenstair #id:cobblestair'
tip_replace_light: 'Совет: Удалить источники света - //replace #brightness:1:15 0'
tip_tab_complete: 'Совет: Команда replace поддерживает автозаполение'
tip_flip: 'Совет: Отобразить - //flip'
tip_deform: 'Совет: Изменить - //deform'
tip_transform: 'Совет: Установка преобразования - //gtransform'
tip_copypaste: 'Совет: Вставка по клику - //br copypaste'
tip_source_mask: 'Совет: Установить маску источника - /gsmask <mask>'
tip_replace_marker: 'Совет: Замените блок с помощью полного буфера обмена - //replace wool #fullcopy'
tip_paste: 'Совет: Вставить - //paste'
tip_lazycopy: 'Совет: lazycopy быстрее'
tip_download: 'Совет: Попробовать - //download'
tip_rotate: 'Совет: Ориентация - //rotate'
tip_copy_pattern: 'Совет: Для использования шаблона используйте #copy'
tip_lazycut: 'Совет: Это безопаснее использовать //lazycut'
tip_regen_0: 'Совет: Используйте биом - /regen [biome]'
tip_regen_1: 'Совет: Используйте сид - /regen [biome] [seed]'
tip_biome_pattern: 'Tip: The #biome[forest] pattern can be used in any command'
tip_biome_mask: 'Tip: Restrict to a biome with the `$jungle` mask'

View File

@ -1,298 +0,0 @@
ınfo:
prefıx: "&lS&lO >"
fıle_deleted: "%s0 Başarıyla Silindi."
schematıc_pastıng: "Schematic Yapıştırılıyor. Geri Alınamaz."
lıghtıng_propogate_selectıon: "Aydınlatma %s0 Parçaya Ayrılmıştır. (Not: Aydınlatmayı Kaldırmak İçin: //removelight)"
updated_lıghtıng_selectıon: "Aydınlatma %s0 Chunk Olarak Güncellendi. (Paketlerin Gönderilmesi Zaman Alabilir)"
set_regıon: "Seçim, İzin Verilen Bölgenize Ayarlandı"
worldedıt_command_limit: "Lütfen Mevcut İşleminiz Tamamlanıncaya Kadar Bekleyin"
worldedıt_delayed: "FAWE İşleminizi Gerçekleştirirken Lütfen Bekleyin..."
worldedıt_run: "Şuan Yürütülüyor: %s"
worldedıt_complete: "Düzenleme Tamamlandı."
requıre_selectıon_ın_mask: "Seçiminizden %s Tanesi Maskenizin İçinde Değil. Yalnızca İzin Verilen Bölgelerde Düzenlemeler Yapabilirsiniz."
worldedıt_volume: "Hacim %current% Olamaz. Maksimum Hacim: %max%."
worldedıt_ıteratıons: "%current% Kere Tekrar Edemezsin. Maksimum %max% Defa Tekrar Edebilirsin."
worldedıt_unsafe: "Bu Komuta Erişim Engellendi"
worldedıt_dangerous_worldedıt: "İşlenmiş Güvensiz Düzenleme: %s0 %s1 Tarafından"
worldedıt_toggle_tıps_on: "FAWE İpuçları Devre Dışı Bırakıldı."
worldedıt_toggle_tıps_off: "FAWE İpuçları Aktif Edildi."
worldedıt_bypassed: "Şuanda FAWE Kısıtlamasını Atlıyor."
worldedıt_unmasked: "FAWE Düzenlemeleriniz Artık Sınırsız."
worldedıt_restrıcted: "FAWE Düzenlemeleriniz Artık Sınırlandırıldı."
worldedıt_oom_admın: |-
Mümkün Ayarlar:
- //fast
- Daha Küçük Düzenlemeler Yapın
- Daha Fazla Bellek Ayırın
- `max-memory-percent` Ayarını Kapatın
compressed: "Geçmiş Sıkıştırldı. %s0b Kaydedildi. (%s1x Daha Küçük)"
actıon_complete: "İşlem %s0 Saniyede Tamamlandı"
error:
worldedıt_extend: "Düzenlemeniz İzin Verilen Bölgenizin Dışına Çıkmış Olabilir."
web_unauthorızed: "Sadece Yapılandırılmış Siteden Gelen Bağlantılara İzin Verilir: %s0"
command_syntax: "Kullanımı: %s0"
no_perm: "Bunun İçin Yetkin YOK: %s0"
settıng_dısable: "Eksik Ayar: %s0"
brush_not_found: "Kullanılabilir Fırçalar: %s0"
brush_ıncompatıble: "Fırçalar Bu Sürüm İle Uyumlu Değil"
schematıc_not_found: "Schematic Bulunamadı: %s0"
no_regıon: "İzin Verilen Bölge YOK"
no_mask: "Henüz Maske Ayarlamamışsın"
not_player: "Dostum Bunun Icin Oyuncu Olmalisin!"
player_not_found: "Oyuncu Bulunamadı: %s0"
oom: |-
[Kritik] Düşük Bellek Algılandı < 1%. Aşağıdaki İşlemleri Yapmalısınız:
- WorldEdit Blok Yerleştirmesini Sonlandır
- WorldEdit Geçmişini Temizle
- Gereksiz Chunkları Sil
- Yaratıkları Ãldür
- Çöpleri Topla
Not: Düşük Belleğin Sebebi WorldEdit Olabilir !!
worldedıt_some_faıls: "İzin Verilen Bölgenizin Dışında Olduğu İçin %s0 Blok Yerleştirilemedi."
worldedıt_some_faıls_blockbag: "Eksik Bloklar: %s0"
web:
generatıng_lınk: "Yükleniyor: %s, Lütfen Bekleyin..."
generatıng_lınk_faıled: "İndirme Linki Oluşturulurken Hata Oldu!"
download_lınk: "%s"
worldedıt:
general:
mask_dısabled: "Genel Maske Devre Dışı Bırakıldı"
mask: "Genel Maske Ayarlandı"
source_mask_dısabled: "Genel Kaynak Maskesi Devre Dışı Bırakıldı"
source_mask: "Genel Kaynak Maskesi Ayarlandı"
transform_dısabled: "Genel Dönüştürücü Devre Dışı Bırakıldı"
transform: "Genel Dönüştürücü Ayarlandı"
fast_enabled: "Hızlı Mod Aktifleştirildi. Geçmiş ve Düzenleme Kısıtlamaları Atlanacak."
fast_dısabled: "Hızlı Mod Devre Dışı Bırakıldı"
place_enabled: "Pozisyon 1'e YerleÅŸtirildi."
place_dısabled: "Durduğun Bloğa Yerleştiriliyor."
copy:
command_copy: "%s0 Blok Kopyalandı."
cut:
command_cut_slow: "%s0 Blok Kesildi."
command_cut_lazy: "Yapıştırılandan %s0 Blok Kaldırılacak"
paste:
command_paste: "Pano Yapıştırıldı: %s0"
rotate:
command_rotate: "Pano Döndürüldü"
flip:
command_flıpped: "Pano Çevirildi."
regen:
command_regen_0: "Bölge Yeniden Oluşturuldu."
command_regen_1: "Bölge Yeniden Oluşturuldu."
command_regen_2: "Bölge Yeniden Oluşturuldu."
tree:
command_tree: "%s0 Ağacı Oluşturuldu."
command_pumpkın: "%s0 Kabak Yamaları Oluşturuldu."
flora:
command_flora: "%s0 Bitki Ãrtüsü OluÅŸturuldu."
history:
command_hıstory_clear: "Geçiş Temizlendi"
command_redo_error: "Geriye Alma Eylemi Bulunamadı."
command_hıstory_other_error: "%s0 Oturumu Bulunamadı."
command_redo_success: "Geri Almayı Geri Alma Başarılı."
command_undo_error: "Geri Alınacak Bir İşlem Bulunamadı."
command_undo_success: "Geri Alma Başarılı."
operation:
operatıon: "İşlem Sıraya Alındı: (%s0)"
selection:
selectıon_wand: "Sol_Tıklama: 1. Pozisyonu Ayarlar; Sağ_Tıklama: 2. Pozisyonu Ayarlar"
selectıon_wand_dısable: "Wand Devre Dışı Bırakıldı."
selectıon_wand_enable: "Wand Aktifleştirildi."
selectıon_chunk: "Chunk Seçildi: (%s0)"
selectıon_chunks: "Chunk Seçildi: (%s0) - (%s1)"
selectıon_contract: "Bölge %s0 Blok Taahhüt Edildi."
selectıon_count: "%s0 Blok Sayıldı."
selectıon_dıstr: "Toplam Blok: %s0"
selectıon_expand: "Bölge %s0 Blok Genişletildi"
selectıon_expand_vert: "Bölge %s0 Blok Genişletildi (Yukarıdan Aşağıya)"
selectıon_ınset: "Bölge Girişi"
selectıon_outset: "Bölge Başlangıcı"
selectıon_shıft: "Bölge Kaydırıldı"
selectıon_cleared: "Seçimler Temizlendi"
navigation:
navıgatıon_wand_error: "Dostum Gidecek Bir Yer YOK"
anvil:
world_ıs_loaded: "Dünya Yürütülürken Kullanılmamlıdır. Dünya Kaydını Sil, ya da Geçersiz Kılmak İçin -f Kullanın (Ãnce Kaydedin)"
brush:
brush_reset: "Fırçanı Sıfırla."
brush_none: "Dostum Fırça Tutmuyorsun!"
brush_scroll_action_set: "Kaydırma Eylemini %s0 Olarak Ayarla"
brush_scroll_action_unset: "Kaydırma Eylemini Kaldır"
brush_vısual_mode_set: "Görsel Modu %s0 Olarak Ayarla"
brush_target_mode_set: "Hedef Modu %s0 Olarak Ayarla"
brush_target_mask_set: "Hedef Maskesini %s0 Olarak Ayarla"
brush_target_offset_set: "Hedef Ofsetini %s0 Olarak Ayarla"
brush_equıpped: "Donatılmış Fırça: %s0"
brush_try_other: |-
Belki Daha Uygun Başka Fırçalar Vardır:
- //br height [radius=5] [#clipboard|file=null] [rotation=0] [yscale=1.00]
brush_copy: "Kopyalamak İçin Bir Nesnenin Tabanına Sol_Tıklayın, Yapıştırmak İçin Sağ_Tıklayın. Gerekirse Fırça Yarıçapını Arttırın."
brush_heıght_ınvalıd: "Geçersiz Yükseklik Haritası Dosyası: (%s0)"
brush_smooth: "Not: Çıkıntıları veya Mağaraları Yumuşatmak İstiyorsanız Harman Fırçasını Kullanın."
brush_splıne: "Nokta Eklemek İçin Tıklayın, Bitirmek İçin Aynı Noktaya Tıklayın"
brush_lıne_prımary: "%s0 Noktası Eklendi, Satırı Oluşturmak İçin Başka Bir Konuma Tıklayın"
brush_lıne_secondary: "Delik Oluşturuldu"
brush_splıne_prımary_2: "Pozisyon Eklendi, Katılmak İçin Aynı Noktaya Tıklayın!"
brush_splıne_secondary_error: "Yeterince Pozisyon Ayarlanmadı!"
brush_splıne_secondary: "Delik Oluşturuldu"
brush_sıze: "Fırça Boyutu Ayarlandı"
brush_range: "Fırça Menzili Ayarlandı"
brush_mask_dısabled: "Fırça Maskesi Devre Dışı Bırakıldı"
brush_mask: "Fırça Maskesi Ayarlandı"
brush_source_mask_dısabled: "Fırça Kaynak Maskesi Devre Dışı Bırakıldı"
brush_source_mask: "Fırça Kaynak Maskesi Ayarlandı"
brush_transform_dısabled: "Fırça Dönüştürücü Devre Dışı Bırakıldı"
brush_transform: "Fırça Dönüştürücü Ayarlandı"
brush_materıal: "Fırça Malzemesi Ayarlandı"
rollback:
rollback_element: "Tamamlanmadı: %s0"
tool:
tool_ınspect: "%s0 Bağlı Aleti Kontrol Edin."
tool_ınspect_ınfo: "%s0 DeÄŸiÅŸtirildi: %s1'den %s2 %s3 Ãnce"
tool_ınspect_ınfo_footer: "Toplam: %s0 Değiştirildi."
tool_none: "Elindeki EÅŸyaya Hiçbir Ãzellik BaÄŸlı DeÄŸil."
tool_ınfo: "Bilgi Aracı Bağlı: %s0."
tool_tree: "Ağaç Aracı Bağlı: %s0."
tool_tree_error: "%s0 Tipinde Ağaç Bulunamadı."
tool_repl: "Blok Değiştirici Bağlı: %s0."
tool_cycler: "Blok Verisi Değiştirici Bağlı: %s0."
tool_flood_fıll: "Blok Dolgu Aleti Bağlı: %s0."
tool_range_error: "Maksimum Mesafe: %s0."
tool_radıus_error: "İzin Verilen Maksimum Mesafe: %s0."
tool_deltree: "Ağaç Kaldırıcı Bağlı: %s0."
tool_farwand: "FarWant Bağlı: %s0."
tool_lrbuıld_bound: "Uzun Menzilli Yapı Aracı %s0 Bağlı."
tool_lrbuıld_ınfo: "%s0 Ayarlamak İçin Sol_Tıklayın; %s1 Ayarlamak İçin Sağ_Tıklayın."
superpıckaxe_enabled: "Süper Kazma Açıldı."
superpıckaxe_dısabled: "Süper Kazma Kapatıldı."
superpıckaxe_area_enabled: "Mod Değiştirildi. Bir Kazmaya Sol_Tıklayın. Kapatmak İçin: //"
snapshot:
snapshot_loaded: "%s0 Bellek Kopyası Yüklendi; Şuan Kuruluyor..."
snapshot_set: "Bellek Kopyası Ayarlandı: %s0"
snapshot_newest: "En Son Yayınlanan Bellek Kopyasını Kullanıyorsunuz."
snapshot_lıst_header: "(%s0) Dünyası İçin Bellek Kopyaları:"
snapshot_lıst_footer: "/snap use <SnapShot> ya da /snap use latest Komutlarını Kullanarak Bellek Kopyasını Değiştirebilirsin."
biome:
bıome_lıst_header: "Biyomlar (Sayfa: %s0/%s1):"
bıome_changed: "Biyomlar %s0 Sütunda Değiştirildi."
utility:
kıll_success: "%s1 Yarıçapında %s0 Yaratık Ãldürüldü."
nothıng_confırmed: "Onay Bekleyen Hiçbir İşlemin YOK."
page_footer: "Bir Sonraki Sayfa İçin: %s0"
schematic:
schematıc_format: "Kullanılabilir Formatlar: (İsim: Arama_İsmi)"
schematıc_loaded: "%s0 Başarıyla Yüklendi. Yapıştırmak İçin: //paste"
schematıc_saved: "%s0 Başarıyla Kaydedildi."
schematıc_page: "Sayfa %s Olmak Zorunda"
schematıc_none: "Böyle Bir Schematic Bulunamadı."
schematıc_lıst: "Kullanılabilir Dosyalar (Dosya_Adı: Format) [%s0/%s1]:"
schematıc_lıst_elem: " - %s0 - %s1"
clipboard:
clıpboard_urı_not_found: "%s0 Yüklü Değilsin"
clıpboard_cleared: "Pano Temizlendi"
clıpboard_ınvalıd_format: "Belirsiz Pano Formatı: %s0"
visitor:
vısıtor_block: "%s0 Blok Etkilendi"
vısıtor_entıty: "%s0 Yaratık Etkilendi"
vısıtor_flat: "%s0 Sütun Etkilendi"
selector:
selector_fuzzy_pos1: "Bölge Belirlendi ve Genişletildi: %s0 %s1"
selector_fuzzy_pos2: "GeniÅŸletme Eklendi: %s0 %s1"
selector_pos: "%s0 Konumu Artık: %s1 (%s2)"
selector_center: "Merkez Ayarlandı: %s0 (%s1)"
selector_radıus: "Yarıçap Ayarlandı: %s0 (%s1)"
selector_expanded: "Bölge Genişletildi: %s0 (%s1)"
selector_ınvalıd_coordınates: "Bilinmeyen Koordinatlar: %s0"
selector_already_set: "Pozisyon Zaten Ayarlandı."
selector_set_default: "Varsayılan Bölge Seçiciniz: %s0"
timezone:
tımezone_set: "Bu Oturum İçin Belirlenen Saat Dilimi: %s0"
tımezone_dısplay: "Bu Saat Dilimindeki Geçerli Saat: %s0"
command:
command_ınvalıd_syntax: "Komut Düzgün Kullanılmadı."
help:
command_clarıfyıng_bracket: "%s0 İçin Açıklama Ekini Belirlendi"
help_suggest: "%s0 Bulunamadı. Belki Bunlardan Biri İşe Yarar: %s1 ?"
help_header_categorıes: "Komut Türleri"
help_header_subcommands: "Alt Komutlar"
help_header_command: "Yardım: %s0"
help_ıtem_allowed: "%s0 - %s1"
help_ıtem_denıed: "%s0 - %s1"
help_header: "Yardım: Sayfa %s0/%s1"
help_footer: "Wiki: https://git.io/vSKE5"
progress:
progress_message: "%s1/%s0 (%s2%) @%s3cps %s4s Kaldı"
progress_fınıshed: "[ TAMAMLANDI! ]"
cancel:
worldedıt_cancel_count: "%s0 Düzenleme İptal Edildi."
worldedıt_cancel_reason_confırm: "Seçiminiz Çok Büyük (%s0 -> %s1). //confirm Kullanarak %s2 İşlemini Onaylayabilirsiniz"
worldedıt_cancel_reason: "WorldEdit İşleminiz İptal Edildi: %s0."
worldedıt_cancel_reason_manual: "Elle İptal Edildi"
worldedıt_cancel_reason_low_memory: "Düşük Bellek"
worldedıt_cancel_reason_max_changes: "Çok Fazla Blok Değiştirildi"
worldedıt_cancel_reason_max_checks: "Çok Fazla Blok Denemesi Var"
worldedıt_cancel_reason_max_tıles: "Çok Fazla Blok Durumu Var"
worldedıt_cancel_reason_max_entıtıes: "Çok Fazla Yaratık Var"
worldedıt_cancel_reason_max_ıteratıons: "Maksimum Yenileme"
worldedıt_cancel_reason_outsıde_regıon: "İzin Verilen Bölge Dışında. (Esgeçmek İçin: /wea, ya da `region-restrictions` Bölümünü config.yml'den Kapatın)"
worldedıt_cancel_reason_no_regıon: "İzin Verilen Bölge YOK. (Esgeçmek İçin: /wea, ya da `region-restrictions` Bölümünü config.yml'den Kapatın)"
worldedıt_faıled_load_chunk: "Bazı Chunkların Yüklemesi Atlandı: %s0;%s1 chunk-wait Süresini Arttırmayı Deneyin."
outside world:
worldedıt_cancel_reason_outsıde_world: Cancel
navigation:
ascend_faıl: "Yukarıda Boş Nokta YOK."
ascended_plural: "Yükseltilen Seviye: %s0"
ascended_sıngular: "Bir Seviyeye Yükseltildi."
unstuck: "HOP Buradayım!"
descend_faıl: "Altında Serbest Nokta YOK."
descend_plural: "Ä°ndirilen Seviye: %s0"
descend_sıngular: "Bir Seviyeye İndirildi."
whoosh: "Amaniiinnn!"
poof: "Amaniiinnn!"
thru_faıl: "Dostum Ãnünde Serbest Nokta YOK."
no_block: "Görünürde ya da Uzaklarda Blok Yok!"
up_faıl: "Dostum Galiba Tepende Bir Blok Var."
selection:
sel_cuboıd: "Küboid: 1. Nokta İçin Sol_Tıklayın, 2. Nokta İçin Sağ_Tıklayın"
sel_cuboıd_extend: "Küboid: Başlangıç Noktası İçin Sol_Tıklayın, Uzatmak İçin Sağ_Tıklayın"
sel_2d_polygon: "2D Çokgen Seçici: Nokta Eklemek İçin Sağ ya da Sol_Tıklayın."
sel_ellıpsıod: "Elipsoit Seçici: Sol_Tıklama=Merkez, Uzatmak İçin Sağ_Tıklayın"
sel_sphere: "Küre Seçici: Sol_Tıklama=Merkez&/, Yarıçapı Ayarlamak İçin Sağ_Tıklayın"
sel_cylındrıcal: "Silindirik Seçici: Sol_Tıklama=Merkez, Uzatmak İçin Sağ Tıklayın."
sel_max: "Maksimum Puan: %s0."
sel_fuzzy: "Bulanık Seçici: Şarta Bağlı Tüm Blokları Seçmek İçin Sol_Tıklayın, Eklemek İçin Sağ_Tıklayın. Hava Boşluğunu Seçmek İçin: //pos1."
sel_convex_polyhedral: "Konveks Çokyüzlü Seçici: Sok_Tıklama=İlk_Vertex, Daha Fazlası İçin Sağ Tıklayın."
sel_lıst: "Seçim Türlerinin Listesi İçin: //sel list"
sel_modes: "Aşağıdaki Modlardan Birini Seçin:"
tips:
tıp_sel_lıst: "Hatırlatma: Farklı Seçim Modlarını Görmek İçin: //sel list"
tıp_select_connected: "Hatırlatma: Bağlı Tüm Blokları Seçmek İçin: //sel fuzzy"
tıp_set_pos1: "Hatırlatma: 1. Pozisyonu Desen Olarak Ayarlamak İçin: //set pos1"
tıp_farwand: "Hatırlatma: Uzak Noktaları Seçmek İçin: //farwand"
tıp_lazycut: "Hatırlatma: Bu Komutu Kullanmak Daha Güvenli: //lazycut"
tıp_fast: "Hatırlatma: Hızlıca Geri Almak İçin: //fast"
tıp_cancel: "Hatırlatma: Devam Eden Düzenlemeyi İptal Etmek İçin: //cancel"
tıp_mask: "Hatırlatma: Genel Hedef Maskesi Ayarlamak İçin: /gmask"
tıp_mask_angle: "Hatırlatma: 3-20 Bloktan Yukarısını Değiştirmek İçin: //replace /[-20][-3] bedrock"
tıp_set_lınear: "Hatırlatma: Blokları Doğrusal Olarak Ayarlamak İçin: //set #l3d[wood,bedrock]"
tıp_surface_spread: "Hatırlatma: Düz Yüzeye Yaymak İçin: //set #surfacespread[5][0][5][#existing]"
tıp_set_hand: "Hatırlatma: Şuanki Elini Kullanmak İçin: //set hand"
tıp_replace_ıd: "Hatırlatma: Blok ID'sini Değiştirmek İçin: //replace woodenstair #id[cobblestair]"
tıp_replace_lıght: "Hatırlatma: Işık Kaynaklarını Kaldırmak İçin: //replace #brightness[1][15] 0"
tıp_tab_complete: "Hatırlatma: Replace Komutu Sekme Tamamlamayı Destekler"
tıp_flıp: "Hatırlatma: Ayna İçin: //flip"
tıp_deform: "Hatırlatma: Yeniden Şekillendirmek İçin: //deform"
tıp_transform: "Hatırlatma: Dönüşüm Yapmak İçin: //gtransform"
tıp_copypaste: "Hatırlatma: Tıklayarak Yapıştırmak İçin: //br copypaste"
tıp_source_mask: "Hatırlatma: Kaynak Maskesi Ayarlamak İçin: /gsmask <mask>"
tıp_replace_marker: "Hatırlatma: Tamamen Yerleştirmek İçin: //replace wool #fullcopy"
tıp_paste: "Hatırlatma: Yapıştırmak İçin: //paste"
tıp_lazycopy: "Hatırlatma: &lLazyCopy Daha Hızlıdır"
tıp_download: "Hatırlatma: İndirmek İçin: //download"
tıp_rotate: "Hatırlatma: Yönlendirmek İçin: //rotate"
tıp_copy_pattern: "Hatırlatma: Desen Olarak Kullanmak İçin: #copy"
tıp_regen_0: "Hatırlatma: Biyomları Kullanmak İçin: /regen <Biyom>"
tıp_regen_1: "Hatırlatma: Biyom Değeri İçin: /regen <Biyom> <Değer>"
tıp_bıome_pattern: "Hatırlatma: #biome[forest] Deseni Herhangi Bir Komutta Kullanılabilir"
tıp_bıome_mask: "Hatırlatma: `$jungle` Maskesini Bir Biyoma Kısıtla"

View File

@ -5,6 +5,7 @@ applyPlatformAndCoreConfiguration()
applyShadowConfiguration() applyShadowConfiguration()
apply(plugin = "fabric-loom") apply(plugin = "fabric-loom")
apply(plugin = "java-library")
val minecraftVersion = "1.15.2" val minecraftVersion = "1.15.2"
val yarnMappings = "1.15.2+build.14:v2" val yarnMappings = "1.15.2+build.14:v2"

View File

@ -1,19 +1,23 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import net.minecraftforge.gradle.common.util.RunConfig import net.minecraftforge.gradle.common.util.RunConfig
import net.minecraftforge.gradle.userdev.UserDevExtension
import net.minecraftforge.gradle.mcp.task.GenerateSRG import net.minecraftforge.gradle.mcp.task.GenerateSRG
import net.minecraftforge.gradle.userdev.UserDevExtension
import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace
plugins { plugins {
id("net.minecraftforge.gradle") id("net.minecraftforge.gradle")
`java-library`
} }
applyPlatformAndCoreConfiguration() applyPlatformAndCoreConfiguration()
applyShadowConfiguration() applyShadowConfiguration()
val minecraftVersion = "1.14.4" val minecraftVersion = "1.16.1"
val mappingsMinecraftVersion = "1.14.3" val nextMajorMinecraftVersion: String = minecraftVersion.split('.').let { (useless, major) ->
val forgeVersion = "28.1.0" "$useless.${major.toInt() + 1}"
}
val mappingsMinecraftVersion = "1.16"
val forgeVersion = "32.0.92"
configurations.all { configurations.all {
resolutionStrategy { resolutionStrategy {
@ -22,8 +26,8 @@ configurations.all {
} }
dependencies { dependencies {
"compile"(project(":worldedit-core")) "api"(project(":worldedit-core"))
"compile"("org.apache.logging.log4j:log4j-slf4j-impl:2.11.2") "implementation"("org.apache.logging.log4j:log4j-slf4j-impl:2.11.2")
"minecraft"("net.minecraftforge:forge:$minecraftVersion-$forgeVersion") "minecraft"("net.minecraftforge:forge:$minecraftVersion-$forgeVersion")
} }
@ -31,7 +35,7 @@ dependencies {
configure<UserDevExtension> { configure<UserDevExtension> {
mappings(mapOf( mappings(mapOf(
"channel" to "snapshot", "channel" to "snapshot",
"version" to "20190913-$mappingsMinecraftVersion" "version" to "20200514-$mappingsMinecraftVersion"
)) ))
accessTransformer(file("src/main/resources/META-INF/accesstransformer.cfg")) accessTransformer(file("src/main/resources/META-INF/accesstransformer.cfg"))
@ -57,40 +61,44 @@ configure<BasePluginConvention> {
tasks.named<Copy>("processResources") { tasks.named<Copy>("processResources") {
// this will ensure that this task is redone when the versions change. // this will ensure that this task is redone when the versions change.
inputs.property("version", project.ext["internalVersion"]) val properties = mapOf(
inputs.property("forgeVersion", forgeVersion) "version" to project.ext["internalVersion"],
"forgeVersion" to forgeVersion,
"minecraftVersion" to minecraftVersion,
"nextMajorMinecraftVersion" to nextMajorMinecraftVersion
)
properties.forEach { (key, value) ->
inputs.property(key, value)
}
// replace stuff in mcmod.info, nothing else // replace stuff in mcmod.info, nothing else
from(sourceSets["main"].resources.srcDirs) { from(sourceSets["main"].resources.srcDirs) {
include("META-INF/mods.toml") include("META-INF/mods.toml")
// replace version and mcversion // replace version and mcversion
expand( expand(properties)
"version" to project.ext["internalVersion"],
"forgeVersion" to forgeVersion
)
} }
// copy everything else except the mcmod.info // copy everything else except the mcmod.info
from(sourceSets["main"].resources.srcDirs) { from(sourceSets["main"].resources.srcDirs) {
exclude("META-INF/mods.toml") exclude("META-INF/mods.toml")
} }
// copy from -core resources as well
from(project(":worldedit-core").tasks.named("processResources"))
} }
tasks.named<Jar>("jar") { addJarManifest(includeClasspath = false)
manifest {
attributes("Class-Path" to CLASSPATH,
"WorldEdit-Version" to project.version)
}
}
tasks.named<ShadowJar>("shadowJar") { tasks.named<ShadowJar>("shadowJar") {
dependencies { dependencies {
relocate("org.slf4j", "com.sk89q.worldedit.slf4j") relocate("org.slf4j", "com.sk89q.worldedit.slf4j")
relocate("org.apache.logging.slf4j", "com.sk89q.worldedit.log4jbridge") relocate("org.apache.logging.slf4j", "com.sk89q.worldedit.log4jbridge")
relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4")
include(dependency("org.slf4j:slf4j-api")) include(dependency("org.slf4j:slf4j-api"))
include(dependency("org.apache.logging.log4j:log4j-slf4j-impl")) include(dependency("org.apache.logging.log4j:log4j-slf4j-impl"))
include(dependency("org.antlr:antlr4-runtime"))
include(dependency("de.schlichtherle:truezip")) include(dependency("de.schlichtherle:truezip"))
include(dependency("net.java.truevfs:truevfs-profile-default_2.13")) include(dependency("net.java.truevfs:truevfs-profile-default_2.13"))
include(dependency("org.mozilla:rhino-runtime")) include(dependency("org.mozilla:rhino-runtime"))

View File

@ -1,4 +1,5 @@
applyLibrariesConfiguration() applyLibrariesConfiguration()
constrainDependenciesToLibsCore()
repositories { repositories {
maven { maven {
@ -6,6 +7,7 @@ repositories {
url = uri("https://hub.spigotmc.org/nexus/content/repositories/snapshots/") url = uri("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
} }
} }
dependencies { dependencies {
"shade"("net.kyori:text-adapter-bukkit:${Versions.TEXT_EXTRAS}") "shade"("net.kyori:text-adapter-bukkit:${Versions.TEXT_EXTRAS}")
} }

View File

@ -1,4 +1,5 @@
applyLibrariesConfiguration() applyLibrariesConfiguration()
constrainDependenciesToLibsCore()
repositories { repositories {
maven { maven {
@ -8,4 +9,4 @@ repositories {
} }
dependencies { dependencies {
"shade"("net.kyori:text-adapter-spongeapi:${Versions.TEXT_EXTRAS}") "shade"("net.kyori:text-adapter-spongeapi:${Versions.TEXT_EXTRAS}")
} }