Skip to content
Permalink
Browse files
Merge master
  • Loading branch information
octylFractal committed Mar 23, 2020
2 parents 05db204 + 20d630c commit 1c6b1b38481839fdb7d0f437132531067cde8812
Showing 186 changed files with 7,124 additions and 45,480 deletions.
@@ -0,0 +1,25 @@
---
name: Bug report
about: Report a way in which WorldEdit is not working as intended
title: ''
labels: type:bug
assignees: ''

---

**Describe the bug**
<!-- A clear and concise description of what the bug is. -->

**To Reproduce**
<!-- Steps to reproduce the behavior: -->
1. ...
2. ...

**Expected behavior**
<!-- A clear and concise description of what you expected to happen. -->

**Screenshots**
<!-- If applicable, add screenshots to help explain your problem. -->

**Additional context**
<!-- Add any other context about the problem here. -->
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: EngineHub Discord
url: https://discord.gg/EngineHub
about: Please ask and answer questions here.
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for WorldEdit
title: ''
labels: type:feature-request
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->

**Describe the solution you'd like**
<!-- A clear and concise description of what you want to happen. -->

**Describe alternatives you've considered**
<!-- A clear and concise description of any alternative solutions or features you've considered. -->

**Additional context**
<!-- Add any other context or screenshots about the feature request here. -->
@@ -1,3 +1,36 @@
7.1.0
- Improve the expression parser by compiling expressions for performance
- Made ItemMaterial accessible via the API
- Added CommandSender adapters to the BukkitAdapter class
- Added legacy data values to the info tool, and expressions
- Improve messages when running the wrong WorldEdit version for the MC version
- Fixed an issue where other plugins could send bad data to clients using the WorldEdit API
- Significant memory optimisations. Many operations will now require less RAM.
- Added WorldEdit-CLI, a tool to run headless WorldEdit from the commandline (see https://matthewmiller.dev/blog/introducing-worldeditcli/)
- Allowed most WorldEdit commands to be run from the console
- Added //world, to override the world in which WorldEdit is operating (useful for console)
- Added support for WorldEdit in CommandBlocks (on Spigot/Paper). Double slash commands require using /worldedit:/set due to a Minecraft bug.
- Fixed the inbuilt pastebin service
- Added 1.15 support
- Re-add the /tool command, and deprecate old top-level tool commands
- Add /brush none as a shortcut to unbind the brush
- Add //watchdog, to make WorldEdit keep the server running during edits.
- Remove FabricAPI requirement of WorldEdit-Fabric
- Fixed //stack with diagonals
- Rewrite the expression parser with ANTLR for a grammar and easier changes in the future
- Fixed pumpkin patches having decaying leaves
- Fixed /lrbuild not obeying history
- Added -n flag to //paste to select without pasting
- Fixed flipping of chests and stairs
- Improve performance of some API methods on Bukkit by bypassing the Bukkit API
- Fixed legacy import of some blocks Mojang renamed
- Added convex polyhedron support to //line
- Fixed /worldedit: commands on Bukkit
- Added support for translations
- Fixed //regen on 1.14+
- Add a experimental new snapshot API / handling, more consistent for various file types. Test it out by switching on `snapshots.experimental`/`snapshots-experimental` in your config file. This will become the default in WE 8.
- Fixed setting navwand and selwand to none via command not persisting

7.0.1
- Fix source masks using EdiSession instead of clipboard
- Fix bug with spaces in suggestions
@@ -857,3 +857,29 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

----------------------------
text and text-extras License
----------------------------

MIT License

Copyright (c) 2017-2020 KyoriPowered

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -1,5 +1,10 @@
import org.ajoberstar.grgit.Grgit

plugins {
id("org.enginehub.codecov")
jacoco
}

logger.lifecycle("""
*******************************************
You are building WorldEdit!
@@ -14,15 +19,48 @@ logger.lifecycle("""
*******************************************
""")

applyCommonConfiguration()
applyRootArtifactoryConfig()

val totalReport = tasks.register<JacocoReport>("jacocoTotalReport") {
for (proj in subprojects) {
proj.apply(plugin = "jacoco")
proj.plugins.withId("java") {
executionData(
fileTree(proj.buildDir.absolutePath).include("**/jacoco/*.exec")
)
sourceSets(proj.the<JavaPluginConvention>().sourceSets["main"])
reports {
xml.isEnabled = true
xml.destination = rootProject.buildDir.resolve("reports/jacoco/report.xml")
html.isEnabled = true
}
dependsOn(proj.tasks.named("test"))
}
}
}
afterEvaluate {
totalReport.configure {
classDirectories.setFrom(classDirectories.files.map {
fileTree(it).apply {
exclude("**/*AutoValue_*")
exclude("**/*Registration.*")
}
})
}
}

codecov {
reportTask.set(totalReport)
}

if (!project.hasProperty("gitCommitHash")) {
apply(plugin = "org.ajoberstar.grgit")
ext["gitCommitHash"] = try {
(ext["grgit"] as Grgit?)?.head()?.abbreviatedId
} catch (e: Exception) {
logger.warn("Error getting commit hash", e)

"no_git_id"
"no.git.id"
}
}
@@ -20,6 +20,10 @@ repositories {
name = "sponge"
url = uri("https://repo.spongepowered.org/maven")
}
maven {
name = "EngineHub Repository"
url = uri("https://maven.enginehub.org/repo/")
}
}

configurations.all {
@@ -50,8 +54,9 @@ dependencies {
implementation("net.ltgt.apt-idea:net.ltgt.apt-idea.gradle.plugin:0.21")
implementation("org.jfrog.buildinfo:build-info-extractor-gradle:4.9.7")
implementation("gradle.plugin.org.spongepowered:spongegradle:0.9.0")
implementation("net.minecraftforge.gradle:ForgeGradle:3.0.143")
implementation("net.minecraftforge.gradle:ForgeGradle:3.0.159")
implementation("net.fabricmc:fabric-loom:$loomVersion")
implementation("net.fabricmc:sponge-mixin:$mixinVersion")
implementation("gradle.plugin.com.mendhak.gradlecrowdin:plugin:0.1.0")
implementation("org.enginehub.gradle:gradle-codecov-plugin:0.1.0")
}
@@ -28,7 +28,7 @@ fun Project.applyPlatformAndCoreConfiguration() {
apply(plugin = "com.jfrog.artifactory")
apply(plugin = "net.minecrell.licenser")

ext["internalVersion"] = "$version;${rootProject.ext["gitCommitHash"]}"
ext["internalVersion"] = "$version+${rootProject.ext["gitCommitHash"]}"

configure<JavaPluginConvention> {
sourceCompatibility = JavaVersion.VERSION_1_8
@@ -114,3 +114,20 @@ fun Project.applyShadowConfiguration() {
minimize()
}
}

private val CLASSPATH = listOf("truezip", "truevfs", "js")
.map { "$it.jar" }
.flatMap { listOf(it, "WorldEdit/$it") }
.joinToString(separator = " ")

fun Project.addJarManifest(includeClasspath: Boolean = false) {
tasks.named<Jar>("jar") {
val attributes = mutableMapOf(
"WorldEdit-Version" to project(":worldedit-core").version
)
if (includeClasspath) {
attributes["Class-Path"] = CLASSPATH
}
manifest.attributes(attributes)
}
}
@@ -7,6 +7,7 @@ object Versions {
const val AUTO_VALUE = "1.6.5"
const val JUNIT = "5.5.0"
const val MOCKITO = "3.0.0"
const val LOGBACK = "1.2.3"
}

// Properties that need a project reference to resolve:
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
"http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd">
<module name="Checker">
<!-- Tabs are strictly banned -->
<module name="FileTabCharacter"/>
@@ -17,7 +17,7 @@
It is a bit draconian, so update as necessary!
-->
<module name="ImportControl">
<property name="file" value="${basedir}/config/checkstyle/import-control.xml"/>
<property name="file" value="${config_loc}/import-control.xml"/>
</module>

<!-- Code -->
@@ -66,6 +66,6 @@
</module>
<!-- Validate that command annotations are formatted correctly -->
<module name="RegexpMultiline">
<property name="format" value="^( +)@(Arg|Switch|Command)\(.*?\n\1 {5,}"/>
<property name="format" value="^( +)@(Arg|Switch|Command)\(.*?\r?\n\1 {5,}"/>
</module>
</module>
@@ -1,6 +1,6 @@
<!DOCTYPE import-control PUBLIC
"-//Puppy Crawl//DTD Import Control 1.1//EN"
"http://www.puppycrawl.com/dtds/import_control_1_1.dtd">
"http://checkstyle.sourceforge.net/dtds/import_control_1_1.dtd">

<import-control pkg="com.sk89q">
<allow pkg="java"/>
@@ -42,6 +42,10 @@
<allow pkg="com.google.auto"/>
<allow pkg="it.unimi.dsi.fastutil"/>

<subpackage name="util.io.file">
<allow pkg="net.java.truevfs"/>
</subpackage>

<subpackage name="internal.expression">
<allow pkg="org.antlr.v4"/>
</subpackage>
@@ -133,12 +133,12 @@ context.checkArgs(1, 3, "<image> <orientation> <palette>");

var f = context.getSafeOpenFile("drawings", argv[1], "png", ["png", "jpg", "jpeg", "bmp"]);
var sess = context.remember();
var upright = argv[2] === "v";
var upright = argv[2] == "v";
var colors = clothColors;
if(argv[3] === "opt") {
if(argv[3] == "opt") {
colors = clothColorsOpt;
player.print("Using optimized palette");
} else if(argv[3] === "optHD") {
} else if(argv[3] == "optHD") {
colors = clothColorsOptHD;
player.print("Using optimized HD palette");
}
@@ -165,4 +165,4 @@ if (!f.exists()) {
}
}
}
}
}