geforkt von Mirrors/FastAsyncWorldEdit
Merge pull request #503 from EngineHub/feature/kotlin-dsl-gradle-scripts
Kotlin DSL Gradle Scripts
Dieser Commit ist enthalten in:
Commit
bcea78c701
159
build.gradle
159
build.gradle
@ -1,159 +0,0 @@
|
|||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
mavenCentral()
|
|
||||||
maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" }
|
|
||||||
jcenter()
|
|
||||||
}
|
|
||||||
|
|
||||||
configurations.all {
|
|
||||||
resolutionStrategy {
|
|
||||||
force 'commons-io:commons-io:2.4'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.4'
|
|
||||||
classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.8.1'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
id 'net.minecrell.licenser' version '0.4.1' apply false
|
|
||||||
id "org.ajoberstar.grgit" version "2.3.0"
|
|
||||||
}
|
|
||||||
|
|
||||||
println """
|
|
||||||
*******************************************
|
|
||||||
You are building WorldEdit!
|
|
||||||
|
|
||||||
If you encounter trouble:
|
|
||||||
1) Read COMPILING.md if you haven't yet
|
|
||||||
2) Try running 'build' in a separate Gradle run
|
|
||||||
3) Use gradlew and not gradle
|
|
||||||
4) If you still need help, ask on Discord! https://discord.gg/enginehub
|
|
||||||
|
|
||||||
Output files will be in [subproject]/build/libs
|
|
||||||
*******************************************
|
|
||||||
"""
|
|
||||||
|
|
||||||
allprojects {
|
|
||||||
group = 'com.sk89q.worldedit'
|
|
||||||
version = '7.0.1-SNAPSHOT'
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!project.hasProperty("artifactory_contextUrl")) ext.artifactory_contextUrl = "http://localhost"
|
|
||||||
if (!project.hasProperty("artifactory_user")) ext.artifactory_user = "guest"
|
|
||||||
if (!project.hasProperty("artifactory_password")) ext.artifactory_password = ""
|
|
||||||
|
|
||||||
if (!project.hasProperty("gitCommitHash") && !JavaVersion.current().isJava6()) {
|
|
||||||
try {
|
|
||||||
def repo = grgit.open()
|
|
||||||
ext.gitCommitHash = repo.head().abbreviatedId
|
|
||||||
} catch (Exception e) {
|
|
||||||
println "Error getting commit hash: " + e.getMessage()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!project.hasProperty("gitCommitHash")) {
|
|
||||||
ext.gitCommitHash = "no_git_id"
|
|
||||||
}
|
|
||||||
|
|
||||||
apply plugin: 'com.jfrog.artifactory'
|
|
||||||
artifactory {
|
|
||||||
contextUrl = "${artifactory_contextUrl}"
|
|
||||||
publish {
|
|
||||||
repository {
|
|
||||||
repoKey = project.version.contains("SNAPSHOT") ? 'libs-snapshot-local' : 'libs-release-local'
|
|
||||||
username = "${artifactory_user}"
|
|
||||||
password = "${artifactory_password}"
|
|
||||||
maven = true
|
|
||||||
ivy = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
artifactoryPublish.skip = true
|
|
||||||
|
|
||||||
subprojects {
|
|
||||||
repositories {
|
|
||||||
mavenCentral()
|
|
||||||
maven { url "http://maven.sk89q.com/repo/" }
|
|
||||||
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
|
||||||
}
|
|
||||||
configurations.all {
|
|
||||||
resolutionStrategy {
|
|
||||||
cacheChangingModulesFor 5, 'minutes'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
configure(['core', 'bukkit', 'forge', 'sponge', 'fabric'].collect { project(":worldedit-$it") }) {
|
|
||||||
apply plugin: 'java'
|
|
||||||
apply plugin: 'maven'
|
|
||||||
apply plugin: 'checkstyle'
|
|
||||||
apply plugin: 'com.github.johnrengelman.shadow'
|
|
||||||
apply plugin: 'com.jfrog.artifactory'
|
|
||||||
apply plugin: 'net.minecrell.licenser'
|
|
||||||
|
|
||||||
ext.internalVersion = version + ";" + gitCommitHash
|
|
||||||
|
|
||||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
||||||
targetCompatibility = JavaVersion.VERSION_1_8
|
|
||||||
|
|
||||||
checkstyle.configFile = new File(rootProject.projectDir, "config/checkstyle/checkstyle.xml")
|
|
||||||
checkstyle.toolVersion = '7.6.1'
|
|
||||||
|
|
||||||
if (JavaVersion.current().isJava8Compatible()) {
|
|
||||||
// Java 8 turns on doclint which we fail
|
|
||||||
tasks.withType(Javadoc) {
|
|
||||||
options.addStringOption('Xdoclint:none', '-quiet')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
task javadocJar(type: Jar, dependsOn: javadoc) {
|
|
||||||
classifier = 'javadoc'
|
|
||||||
from javadoc.destinationDir
|
|
||||||
}
|
|
||||||
|
|
||||||
artifacts {
|
|
||||||
archives jar
|
|
||||||
archives javadocJar
|
|
||||||
}
|
|
||||||
|
|
||||||
if (name == "worldedit-core" || name == "worldedit-bukkit") {
|
|
||||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
|
||||||
classifier = 'sources'
|
|
||||||
from sourceSets.main.allSource
|
|
||||||
}
|
|
||||||
|
|
||||||
artifacts {
|
|
||||||
archives sourcesJar
|
|
||||||
}
|
|
||||||
build.dependsOn(sourcesJar)
|
|
||||||
}
|
|
||||||
|
|
||||||
build.dependsOn(checkstyleMain)
|
|
||||||
build.dependsOn(checkstyleTest)
|
|
||||||
build.dependsOn(javadocJar)
|
|
||||||
|
|
||||||
artifactoryPublish {
|
|
||||||
publishConfigs('archives')
|
|
||||||
}
|
|
||||||
|
|
||||||
license {
|
|
||||||
header = rootProject.file("HEADER.txt")
|
|
||||||
include '**/*.java'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
configure(['bukkit', 'forge', 'sponge', 'fabric'].collect { project(":worldedit-$it") }) {
|
|
||||||
shadowJar {
|
|
||||||
classifier 'dist'
|
|
||||||
dependencies {
|
|
||||||
include(project(":worldedit-libs:core"))
|
|
||||||
include(project(":worldedit-libs:${project.name.replace("worldedit-", "")}"))
|
|
||||||
include(project(":worldedit-core"))
|
|
||||||
}
|
|
||||||
exclude 'GradleStart**'
|
|
||||||
exclude '.cache'
|
|
||||||
exclude 'LICENSE*'
|
|
||||||
}
|
|
||||||
}
|
|
28
build.gradle.kts
Normale Datei
28
build.gradle.kts
Normale Datei
@ -0,0 +1,28 @@
|
|||||||
|
import org.ajoberstar.grgit.Grgit
|
||||||
|
|
||||||
|
logger.lifecycle("""
|
||||||
|
*******************************************
|
||||||
|
You are building WorldEdit!
|
||||||
|
|
||||||
|
If you encounter trouble:
|
||||||
|
1) Read COMPILING.md if you haven't yet
|
||||||
|
2) Try running 'build' in a separate Gradle run
|
||||||
|
3) Use gradlew and not gradle
|
||||||
|
4) If you still need help, ask on Discord! https://discord.gg/enginehub
|
||||||
|
|
||||||
|
Output files will be in [subproject]/build/libs
|
||||||
|
*******************************************
|
||||||
|
""")
|
||||||
|
|
||||||
|
applyRootArtifactoryConfig()
|
||||||
|
|
||||||
|
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"
|
||||||
|
}
|
||||||
|
}
|
36
buildSrc/build.gradle.kts
Normale Datei
36
buildSrc/build.gradle.kts
Normale Datei
@ -0,0 +1,36 @@
|
|||||||
|
plugins {
|
||||||
|
`kotlin-dsl`
|
||||||
|
kotlin("jvm") version embeddedKotlinVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
jcenter()
|
||||||
|
gradlePluginPortal()
|
||||||
|
maven {
|
||||||
|
name = "Forge Maven"
|
||||||
|
url = uri("https://files.minecraftforge.net/maven")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
configurations.all {
|
||||||
|
resolutionStrategy {
|
||||||
|
// Fabric needs this.
|
||||||
|
force(
|
||||||
|
"commons-io:commons-io:2.5",
|
||||||
|
"org.ow2.asm:asm:7.1",
|
||||||
|
"org.ow2.asm:asm-commons:7.1"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(gradleApi())
|
||||||
|
implementation("gradle.plugin.net.minecrell:licenser:0.4.1")
|
||||||
|
implementation("org.ajoberstar.grgit:grgit-gradle:3.1.1")
|
||||||
|
implementation("com.github.jengelman.gradle.plugins:shadow:5.1.0")
|
||||||
|
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("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.130")
|
||||||
|
}
|
40
buildSrc/src/main/kotlin/ArtifactoryConfig.kt
Normale Datei
40
buildSrc/src/main/kotlin/ArtifactoryConfig.kt
Normale Datei
@ -0,0 +1,40 @@
|
|||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.apply
|
||||||
|
import org.gradle.kotlin.dsl.configure
|
||||||
|
import org.gradle.kotlin.dsl.named
|
||||||
|
import org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention
|
||||||
|
import org.jfrog.gradle.plugin.artifactory.task.ArtifactoryTask
|
||||||
|
|
||||||
|
private const val ARTIFACTORY_CONTEXT_URL = "artifactory_contextUrl"
|
||||||
|
private const val ARTIFACTORY_USER = "artifactory_user"
|
||||||
|
private const val ARTIFACTORY_PASSWORD = "artifactory_password"
|
||||||
|
|
||||||
|
fun Project.applyRootArtifactoryConfig() {
|
||||||
|
if (!project.hasProperty(ARTIFACTORY_CONTEXT_URL)) ext[ARTIFACTORY_CONTEXT_URL] = "http://localhost"
|
||||||
|
if (!project.hasProperty(ARTIFACTORY_USER)) ext[ARTIFACTORY_USER] = "guest"
|
||||||
|
if (!project.hasProperty(ARTIFACTORY_PASSWORD)) ext[ARTIFACTORY_PASSWORD] = ""
|
||||||
|
|
||||||
|
apply(plugin = "com.jfrog.artifactory")
|
||||||
|
configure<ArtifactoryPluginConvention> {
|
||||||
|
setContextUrl("${project.property(ARTIFACTORY_CONTEXT_URL)}")
|
||||||
|
clientConfig.publisher.run {
|
||||||
|
repoKey = when {
|
||||||
|
"${project.version}".contains("SNAPSHOT") -> "libs-snapshot-local"
|
||||||
|
else -> "libs-release-local"
|
||||||
|
}
|
||||||
|
username = "${project.property(ARTIFACTORY_USER)}"
|
||||||
|
password = "${project.property(ARTIFACTORY_PASSWORD)}"
|
||||||
|
isMaven = true
|
||||||
|
isIvy = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tasks.named<ArtifactoryTask>("artifactoryPublish") {
|
||||||
|
isSkip = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Project.applyCommonArtifactoryConfig() {
|
||||||
|
tasks.named<ArtifactoryTask>("artifactoryPublish") {
|
||||||
|
publishConfigs("archives")
|
||||||
|
}
|
||||||
|
}
|
18
buildSrc/src/main/kotlin/CommonConfig.kt
Normale Datei
18
buildSrc/src/main/kotlin/CommonConfig.kt
Normale Datei
@ -0,0 +1,18 @@
|
|||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.repositories
|
||||||
|
|
||||||
|
fun Project.applyCommonConfiguration() {
|
||||||
|
group = rootProject.group
|
||||||
|
version = rootProject.version
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven { url = uri("https://maven.sk89q.com/repo/") }
|
||||||
|
maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") }
|
||||||
|
}
|
||||||
|
configurations.all {
|
||||||
|
resolutionStrategy {
|
||||||
|
cacheChangingModulesFor(5, "minutes")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
12
buildSrc/src/main/kotlin/GradleExtras.kt
Normale Datei
12
buildSrc/src/main/kotlin/GradleExtras.kt
Normale Datei
@ -0,0 +1,12 @@
|
|||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.plugins.ExtraPropertiesExtension
|
||||||
|
import org.gradle.api.plugins.JavaPluginConvention
|
||||||
|
import org.gradle.api.tasks.SourceSetContainer
|
||||||
|
import org.gradle.kotlin.dsl.getByType
|
||||||
|
import org.gradle.kotlin.dsl.the
|
||||||
|
|
||||||
|
val Project.ext: ExtraPropertiesExtension
|
||||||
|
get() = extensions.getByType()
|
||||||
|
|
||||||
|
val Project.sourceSets: SourceSetContainer
|
||||||
|
get() = the<JavaPluginConvention>().sourceSets
|
98
buildSrc/src/main/kotlin/LibsConfig.kt
Normale Datei
98
buildSrc/src/main/kotlin/LibsConfig.kt
Normale Datei
@ -0,0 +1,98 @@
|
|||||||
|
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.artifacts.ModuleDependency
|
||||||
|
import org.gradle.api.internal.HasConvention
|
||||||
|
import org.gradle.api.plugins.MavenRepositoryHandlerConvention
|
||||||
|
import org.gradle.api.tasks.Upload
|
||||||
|
import org.gradle.api.tasks.bundling.Jar
|
||||||
|
import org.gradle.kotlin.dsl.apply
|
||||||
|
import org.gradle.kotlin.dsl.get
|
||||||
|
import org.gradle.kotlin.dsl.getPlugin
|
||||||
|
import org.gradle.kotlin.dsl.invoke
|
||||||
|
import org.gradle.kotlin.dsl.register
|
||||||
|
|
||||||
|
fun Project.applyLibrariesConfiguration() {
|
||||||
|
applyCommonConfiguration()
|
||||||
|
apply(plugin = "java-base")
|
||||||
|
apply(plugin = "maven")
|
||||||
|
apply(plugin = "com.github.johnrengelman.shadow")
|
||||||
|
apply(plugin = "com.jfrog.artifactory")
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
create("shade")
|
||||||
|
getByName("archives").extendsFrom(getByName("default"))
|
||||||
|
}
|
||||||
|
|
||||||
|
group = "${rootProject.group}.worldedit-libs"
|
||||||
|
|
||||||
|
tasks.register<ShadowJar>("jar") {
|
||||||
|
configurations = listOf(project.configurations["shade"])
|
||||||
|
archiveClassifier.set("")
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
exclude(dependency("com.google.guava:guava"))
|
||||||
|
exclude(dependency("com.google.code.gson:gson"))
|
||||||
|
exclude(dependency("org.checkerframework:checker-qual"))
|
||||||
|
}
|
||||||
|
|
||||||
|
relocate("net.kyori.text", "com.sk89q.worldedit.util.formatting.text")
|
||||||
|
}
|
||||||
|
val altConfigFiles = { artifactType: String ->
|
||||||
|
val deps = configurations["shade"].incoming.dependencies
|
||||||
|
.filterIsInstance<ModuleDependency>()
|
||||||
|
.map { it.copy() }
|
||||||
|
.map { dependency ->
|
||||||
|
dependency.artifact {
|
||||||
|
name = dependency.name
|
||||||
|
type = artifactType
|
||||||
|
extension = "jar"
|
||||||
|
classifier = artifactType
|
||||||
|
}
|
||||||
|
dependency
|
||||||
|
}
|
||||||
|
|
||||||
|
files(configurations.detachedConfiguration(*deps.toTypedArray())
|
||||||
|
.resolvedConfiguration.lenientConfiguration.artifacts
|
||||||
|
.filter { it.classifier == artifactType }
|
||||||
|
.map { zipTree(it.file) })
|
||||||
|
}
|
||||||
|
tasks.register<Jar>("sourcesJar") {
|
||||||
|
from({
|
||||||
|
altConfigFiles("sources")
|
||||||
|
})
|
||||||
|
val filePattern = Regex("(.*)net/kyori/text((?:/|$).*)")
|
||||||
|
val textPattern = Regex("net\\.kyori\\.text")
|
||||||
|
eachFile {
|
||||||
|
filter {
|
||||||
|
it.replaceFirst(textPattern, "com.sk89q.worldedit.util.formatting.text")
|
||||||
|
}
|
||||||
|
path = path.replaceFirst(filePattern, "$1com/sk89q/worldedit/util/formatting/text$2")
|
||||||
|
}
|
||||||
|
archiveClassifier.set("sources")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("assemble").configure {
|
||||||
|
dependsOn("jar", "sourcesJar")
|
||||||
|
}
|
||||||
|
|
||||||
|
artifacts {
|
||||||
|
val jar = tasks.named("jar")
|
||||||
|
add("default", jar) {
|
||||||
|
builtBy(jar)
|
||||||
|
}
|
||||||
|
val sourcesJar = tasks.named("sourcesJar")
|
||||||
|
add("archives", sourcesJar) {
|
||||||
|
builtBy(sourcesJar)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register<Upload>("install") {
|
||||||
|
configuration = configurations["archives"]
|
||||||
|
(repositories as HasConvention).convention.getPlugin<MavenRepositoryHandlerConvention>().mavenInstaller {
|
||||||
|
pom.version = project.version.toString()
|
||||||
|
pom.artifactId = project.name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
applyCommonArtifactoryConfig()
|
||||||
|
}
|
101
buildSrc/src/main/kotlin/PlatformConfig.kt
Normale Datei
101
buildSrc/src/main/kotlin/PlatformConfig.kt
Normale Datei
@ -0,0 +1,101 @@
|
|||||||
|
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||||
|
import net.minecrell.gradle.licenser.LicenseExtension
|
||||||
|
import org.gradle.api.JavaVersion
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.plugins.JavaPluginConvention
|
||||||
|
import org.gradle.api.plugins.quality.CheckstyleExtension
|
||||||
|
import org.gradle.api.tasks.bundling.Jar
|
||||||
|
import org.gradle.api.tasks.javadoc.Javadoc
|
||||||
|
import org.gradle.external.javadoc.CoreJavadocOptions
|
||||||
|
import org.gradle.kotlin.dsl.apply
|
||||||
|
import org.gradle.kotlin.dsl.configure
|
||||||
|
import org.gradle.kotlin.dsl.get
|
||||||
|
import org.gradle.kotlin.dsl.getByName
|
||||||
|
import org.gradle.kotlin.dsl.named
|
||||||
|
import org.gradle.kotlin.dsl.register
|
||||||
|
import org.gradle.kotlin.dsl.withType
|
||||||
|
|
||||||
|
fun Project.applyPlatformAndCoreConfiguration() {
|
||||||
|
applyCommonConfiguration()
|
||||||
|
apply(plugin = "java")
|
||||||
|
apply(plugin = "eclipse")
|
||||||
|
apply(plugin = "idea")
|
||||||
|
apply(plugin = "maven")
|
||||||
|
apply(plugin = "checkstyle")
|
||||||
|
apply(plugin = "com.github.johnrengelman.shadow")
|
||||||
|
apply(plugin = "com.jfrog.artifactory")
|
||||||
|
apply(plugin = "net.minecrell.licenser")
|
||||||
|
|
||||||
|
ext["internalVersion"] = "$version;${rootProject.ext["gitCommitHash"]}"
|
||||||
|
|
||||||
|
configure<JavaPluginConvention> {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
}
|
||||||
|
|
||||||
|
configure<CheckstyleExtension> {
|
||||||
|
configFile = rootProject.file("config/checkstyle/checkstyle.xml")
|
||||||
|
toolVersion = "7.6.1"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Java 8 turns on doclint which we fail
|
||||||
|
tasks.withType<Javadoc>().configureEach {
|
||||||
|
(options as CoreJavadocOptions).addStringOption("Xdoclint:none", "-quiet")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register<Jar>("javadocJar") {
|
||||||
|
dependsOn("javadoc")
|
||||||
|
archiveClassifier.set("javadoc")
|
||||||
|
from(tasks.getByName<Javadoc>("javadoc").destinationDir)
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("assemble").configure {
|
||||||
|
dependsOn("javadocJar")
|
||||||
|
}
|
||||||
|
|
||||||
|
artifacts {
|
||||||
|
add("archives", tasks.named("jar"))
|
||||||
|
add("archives", tasks.named("javadocJar"))
|
||||||
|
}
|
||||||
|
|
||||||
|
if (name == "worldedit-core" || name == "worldedit-bukkit") {
|
||||||
|
tasks.register<Jar>("sourcesJar") {
|
||||||
|
dependsOn("classes")
|
||||||
|
archiveClassifier.set("sources")
|
||||||
|
from(sourceSets["main"].allSource)
|
||||||
|
}
|
||||||
|
|
||||||
|
artifacts {
|
||||||
|
add("archives", tasks.named("sourcesJar"))
|
||||||
|
}
|
||||||
|
tasks.named("assemble").configure {
|
||||||
|
dependsOn("sourcesJar")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("check").configure {
|
||||||
|
dependsOn("checkstyleMain", "checkstyleTest")
|
||||||
|
}
|
||||||
|
|
||||||
|
applyCommonArtifactoryConfig()
|
||||||
|
|
||||||
|
configure<LicenseExtension> {
|
||||||
|
header = rootProject.file("HEADER.txt")
|
||||||
|
include("**/*.java")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Project.applyShadowConfiguration() {
|
||||||
|
tasks.named<ShadowJar>("shadowJar") {
|
||||||
|
archiveClassifier.set("dist")
|
||||||
|
dependencies {
|
||||||
|
include(project(":worldedit-libs:core"))
|
||||||
|
include(project(":worldedit-libs:${project.name.replace("worldedit-", "")}"))
|
||||||
|
include(project(":worldedit-core"))
|
||||||
|
}
|
||||||
|
exclude("GradleStart**")
|
||||||
|
exclude(".cache")
|
||||||
|
exclude("LICENSE*")
|
||||||
|
minimize()
|
||||||
|
}
|
||||||
|
}
|
6
buildSrc/src/main/kotlin/Versions.kt
Normale Datei
6
buildSrc/src/main/kotlin/Versions.kt
Normale Datei
@ -0,0 +1,6 @@
|
|||||||
|
object Versions {
|
||||||
|
const val TEXT = "3.0.1"
|
||||||
|
const val TEXT_EXTRAS = "3.0.2"
|
||||||
|
const val PISTON = "0.4.2"
|
||||||
|
const val AUTO_VALUE = "1.6.5"
|
||||||
|
}
|
@ -1 +1,4 @@
|
|||||||
|
group=com.sk89q.worldedit
|
||||||
|
version=7.0.1-SNAPSHOT
|
||||||
|
|
||||||
org.gradle.jvmargs=-Xmx1G
|
org.gradle.jvmargs=-Xmx1G
|
||||||
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-all.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
rootProject.name = 'worldedit'
|
|
||||||
|
|
||||||
include 'worldedit-libs'
|
|
||||||
|
|
||||||
['bukkit', 'core', 'forge', 'sponge', 'fabric'].forEach {
|
|
||||||
include "worldedit-libs:$it"
|
|
||||||
include "worldedit-$it"
|
|
||||||
}
|
|
||||||
include "worldedit-libs:core:ap"
|
|
||||||
|
|
||||||
include "worldedit-core:doctools"
|
|
11
settings.gradle.kts
Normale Datei
11
settings.gradle.kts
Normale Datei
@ -0,0 +1,11 @@
|
|||||||
|
rootProject.name = "worldedit"
|
||||||
|
|
||||||
|
include("worldedit-libs")
|
||||||
|
|
||||||
|
listOf("bukkit", "core", "forge", "sponge", "fabric").forEach {
|
||||||
|
include("worldedit-libs:$it")
|
||||||
|
include("worldedit-$it")
|
||||||
|
}
|
||||||
|
include("worldedit-libs:core:ap")
|
||||||
|
|
||||||
|
include("worldedit-core:doctools")
|
@ -1,63 +0,0 @@
|
|||||||
apply plugin: 'eclipse'
|
|
||||||
apply plugin: 'idea'
|
|
||||||
apply plugin: 'maven'
|
|
||||||
apply plugin: 'java-library'
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
maven { url "https://hub.spigotmc.org/nexus/content/groups/public" }
|
|
||||||
maven { url "https://repo.codemc.org/repository/maven-public" }
|
|
||||||
maven { url "https://papermc.io/repo/repository/maven-public/" }
|
|
||||||
}
|
|
||||||
|
|
||||||
configurations.all { Configuration it ->
|
|
||||||
it.resolutionStrategy { ResolutionStrategy rs ->
|
|
||||||
rs.force("com.google.guava:guava:21.0")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
api project(':worldedit-core')
|
|
||||||
api project(':worldedit-libs:bukkit')
|
|
||||||
api 'org.bukkit:bukkit:1.13.2-R0.1-SNAPSHOT' // zzz
|
|
||||||
compileOnly 'com.destroystokyo.paper:paper-api:1.13.2-R0.1-SNAPSHOT'
|
|
||||||
implementation 'io.papermc:paperlib:1.0.2'
|
|
||||||
compileOnly 'com.sk89q:dummypermscompat:1.10'
|
|
||||||
implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.8.1'
|
|
||||||
implementation 'org.bstats:bstats-bukkit:1.5'
|
|
||||||
testCompile 'org.mockito:mockito-core:1.9.0-rc1'
|
|
||||||
}
|
|
||||||
|
|
||||||
processResources {
|
|
||||||
filesMatching('plugin.yml') {
|
|
||||||
expand 'internalVersion': project.internalVersion
|
|
||||||
}
|
|
||||||
from (zipTree('src/main/resources/worldedit-adapters.jar').matching {
|
|
||||||
exclude 'META-INF/'
|
|
||||||
})
|
|
||||||
exclude '**/worldedit-adapters.jar'
|
|
||||||
}
|
|
||||||
|
|
||||||
jar {
|
|
||||||
manifest {
|
|
||||||
attributes("Class-Path": "truezip.jar WorldEdit/truezip.jar js.jar WorldEdit/js.jar",
|
|
||||||
"WorldEdit-Version": version)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
shadowJar {
|
|
||||||
dependencies {
|
|
||||||
relocate "org.slf4j", "com.sk89q.worldedit.slf4j"
|
|
||||||
relocate "org.apache.logging.slf4j", "com.sk89q.worldedit.log4jbridge"
|
|
||||||
include(dependency(':worldedit-core'))
|
|
||||||
include(dependency('org.slf4j:slf4j-api'))
|
|
||||||
include(dependency("org.apache.logging.log4j:log4j-slf4j-impl"))
|
|
||||||
relocate ("org.bstats", "com.sk89q.worldedit.bukkit.bstats") {
|
|
||||||
include(dependency("org.bstats:bstats-bukkit:1.5"))
|
|
||||||
}
|
|
||||||
relocate ("io.papermc.lib", "com.sk89q.worldedit.bukkit.paperlib") {
|
|
||||||
include(dependency("io.papermc:paperlib:1.0.2"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
build.dependsOn(shadowJar)
|
|
69
worldedit-bukkit/build.gradle.kts
Normale Datei
69
worldedit-bukkit/build.gradle.kts
Normale Datei
@ -0,0 +1,69 @@
|
|||||||
|
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
`java-library`
|
||||||
|
}
|
||||||
|
|
||||||
|
applyPlatformAndCoreConfiguration()
|
||||||
|
applyShadowConfiguration()
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
maven { url = uri("https://hub.spigotmc.org/nexus/content/groups/public") }
|
||||||
|
maven { url = uri("https://repo.codemc.org/repository/maven-public") }
|
||||||
|
maven { url = uri("https://papermc.io/repo/repository/maven-public/") }
|
||||||
|
}
|
||||||
|
|
||||||
|
configurations.all {
|
||||||
|
resolutionStrategy {
|
||||||
|
force("com.google.guava:guava:21.0")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
"api"(project(":worldedit-core"))
|
||||||
|
"api"(project(":worldedit-libs:bukkit"))
|
||||||
|
"api"("org.bukkit:bukkit:1.13.2-R0.1-SNAPSHOT")
|
||||||
|
"compileOnly"("com.destroystokyo.paper:paper-api:1.13.2-R0.1-SNAPSHOT")
|
||||||
|
"implementation"("io.papermc:paperlib:1.0.2")
|
||||||
|
"compileOnly"("com.sk89q:dummypermscompat:1.10")
|
||||||
|
"implementation"("org.apache.logging.log4j:log4j-slf4j-impl:2.8.1")
|
||||||
|
"implementation"("org.bstats:bstats-bukkit:1.5")
|
||||||
|
"testCompile"("org.mockito:mockito-core:1.9.0-rc1")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named<Copy>("processResources") {
|
||||||
|
filesMatching("plugin.yml") {
|
||||||
|
expand("internalVersion" to project.ext["internalVersion"])
|
||||||
|
}
|
||||||
|
from(zipTree("src/main/resources/worldedit-adapters.jar").matching {
|
||||||
|
exclude("META-INF/")
|
||||||
|
})
|
||||||
|
exclude("**/worldedit-adapters.jar")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named<Jar>("jar") {
|
||||||
|
manifest {
|
||||||
|
attributes("Class-Path" to "truezip.jar WorldEdit/truezip.jar js.jar WorldEdit/js.jar",
|
||||||
|
"WorldEdit-Version" to project.version)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named<ShadowJar>("shadowJar") {
|
||||||
|
dependencies {
|
||||||
|
relocate("org.slf4j", "com.sk89q.worldedit.slf4j")
|
||||||
|
relocate("org.apache.logging.slf4j", "com.sk89q.worldedit.log4jbridge")
|
||||||
|
include(dependency(":worldedit-core"))
|
||||||
|
include(dependency("org.slf4j:slf4j-api"))
|
||||||
|
include(dependency("org.apache.logging.log4j:log4j-slf4j-impl"))
|
||||||
|
relocate("org.bstats", "com.sk89q.worldedit.bukkit.bstats") {
|
||||||
|
include(dependency("org.bstats:bstats-bukkit:1.5"))
|
||||||
|
}
|
||||||
|
relocate("io.papermc.lib", "com.sk89q.worldedit.bukkit.paperlib") {
|
||||||
|
include(dependency("io.papermc:paperlib:1.0.2"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("assemble").configure {
|
||||||
|
dependsOn("shadowJar")
|
||||||
|
}
|
@ -1,53 +0,0 @@
|
|||||||
plugins {
|
|
||||||
id("net.ltgt.apt") version "0.21" apply false
|
|
||||||
}
|
|
||||||
|
|
||||||
apply plugin: 'java-library'
|
|
||||||
apply plugin: 'eclipse'
|
|
||||||
apply plugin: 'idea'
|
|
||||||
apply plugin: 'net.ltgt.apt-eclipse'
|
|
||||||
apply plugin: 'net.ltgt.apt-idea'
|
|
||||||
|
|
||||||
configurations.all { Configuration it ->
|
|
||||||
it.resolutionStrategy { ResolutionStrategy rs ->
|
|
||||||
rs.force("com.google.guava:guava:21.0")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
compile project(':worldedit-libs:core')
|
|
||||||
compile 'de.schlichtherle:truezip:6.8.3'
|
|
||||||
compile 'org.mozilla:rhino:1.7R5'
|
|
||||||
compile 'org.yaml:snakeyaml:1.9'
|
|
||||||
compile 'com.google.guava:guava:21.0'
|
|
||||||
compile 'com.google.code.findbugs:jsr305:1.3.9'
|
|
||||||
compile 'com.google.code.gson:gson:2.8.0'
|
|
||||||
compile 'com.googlecode.json-simple:json-simple:1.1.1'
|
|
||||||
compile 'org.slf4j:slf4j-api:1.7.26'
|
|
||||||
|
|
||||||
compileOnly project(':worldedit-libs:core:ap')
|
|
||||||
annotationProcessor project(':worldedit-libs:core:ap')
|
|
||||||
annotationProcessor "com.google.guava:guava:21.0"
|
|
||||||
def avVersion = "1.6.5"
|
|
||||||
compileOnly "com.google.auto.value:auto-value-annotations:$avVersion"
|
|
||||||
annotationProcessor "com.google.auto.value:auto-value:$avVersion"
|
|
||||||
//compile 'net.sf.trove4j:trove4j:3.0.3'
|
|
||||||
testCompile 'org.mockito:mockito-core:1.9.0-rc1'
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.withType(JavaCompile).configureEach {
|
|
||||||
dependsOn(":worldedit-libs:build")
|
|
||||||
it.options.compilerArgs.add("-Aarg.name.key.prefix=")
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceSets {
|
|
||||||
main {
|
|
||||||
java {
|
|
||||||
srcDir 'src/main/java'
|
|
||||||
srcDir 'src/legacy/java'
|
|
||||||
}
|
|
||||||
resources {
|
|
||||||
srcDir 'src/main/resources'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
50
worldedit-core/build.gradle.kts
Normale Datei
50
worldedit-core/build.gradle.kts
Normale Datei
@ -0,0 +1,50 @@
|
|||||||
|
plugins {
|
||||||
|
id("java-library")
|
||||||
|
id("net.ltgt.apt-eclipse")
|
||||||
|
id("net.ltgt.apt-idea")
|
||||||
|
}
|
||||||
|
|
||||||
|
applyPlatformAndCoreConfiguration()
|
||||||
|
|
||||||
|
configurations.all {
|
||||||
|
resolutionStrategy {
|
||||||
|
force("com.google.guava:guava:21.0")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
"compile"(project(":worldedit-libs:core"))
|
||||||
|
"compile"("de.schlichtherle:truezip:6.8.3")
|
||||||
|
"compile"("org.mozilla:rhino:1.7.11")
|
||||||
|
"compile"("org.yaml:snakeyaml:1.9")
|
||||||
|
"compile"("com.google.guava:guava:21.0")
|
||||||
|
"compile"("com.google.code.findbugs:jsr305:1.3.9")
|
||||||
|
"compile"("com.google.code.gson:gson:2.8.0")
|
||||||
|
"compile"("com.googlecode.json-simple:json-simple:1.1.1")
|
||||||
|
"compile"("org.slf4j:slf4j-api:1.7.26")
|
||||||
|
|
||||||
|
"compileOnly"(project(":worldedit-libs:core:ap"))
|
||||||
|
"annotationProcessor"(project(":worldedit-libs:core:ap"))
|
||||||
|
// ensure this is on the classpath for the AP
|
||||||
|
"annotationProcessor"("com.google.guava:guava:21.0")
|
||||||
|
"compileOnly"("com.google.auto.value:auto-value-annotations:${Versions.AUTO_VALUE}")
|
||||||
|
"annotationProcessor"("com.google.auto.value:auto-value:${Versions.AUTO_VALUE}")
|
||||||
|
"testCompile"("org.mockito:mockito-core:1.9.0-rc1")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.withType<JavaCompile>().configureEach {
|
||||||
|
dependsOn(":worldedit-libs:build")
|
||||||
|
options.compilerArgs.add("-Aarg.name.key.prefix=")
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
main {
|
||||||
|
java {
|
||||||
|
srcDir("src/main/java")
|
||||||
|
srcDir("src/legacy/java")
|
||||||
|
}
|
||||||
|
resources {
|
||||||
|
srcDir("src/main/resources")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,17 +1,15 @@
|
|||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
kotlin("jvm") version "1.3.31"
|
kotlin("jvm") version "1.3.41"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
applyCommonConfiguration()
|
||||||
|
|
||||||
tasks.withType<KotlinCompile> {
|
tasks.withType<KotlinCompile> {
|
||||||
kotlinOptions.jvmTarget = "1.8"
|
kotlinOptions.jvmTarget = "1.8"
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
|
||||||
jcenter()
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
"implementation"(project(":worldedit-libs:core:ap"))
|
"implementation"(project(":worldedit-libs:core:ap"))
|
||||||
"implementation"(project(":worldedit-core"))
|
"implementation"(project(":worldedit-core"))
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* WorldEdit, a Minecraft world manipulation toolkit
|
||||||
|
* Copyright (C) sk89q <http://www.sk89q.com>
|
||||||
|
* Copyright (C) WorldEdit team and contributors
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU Lesser General Public License as published by the
|
||||||
|
* Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.sk89q.worldedit.scripting;
|
||||||
|
|
||||||
|
import org.mozilla.javascript.ClassShutter;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hides Minecraft's obfuscated & de-obfuscated names from scripts.
|
||||||
|
*/
|
||||||
|
class MinecraftHidingClassShutter implements ClassShutter {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(MinecraftHidingClassShutter.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean visibleToScripts(String fullClassName) {
|
||||||
|
if (!fullClassName.contains(".")) {
|
||||||
|
// Default package -- probably Minecraft
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return !fullClassName.startsWith("net.minecraft");
|
||||||
|
}
|
||||||
|
}
|
@ -50,6 +50,7 @@ public class RhinoCraftScriptEngine implements CraftScriptEngine {
|
|||||||
throws ScriptException, Throwable {
|
throws ScriptException, Throwable {
|
||||||
RhinoContextFactory factory = new RhinoContextFactory(timeLimit);
|
RhinoContextFactory factory = new RhinoContextFactory(timeLimit);
|
||||||
Context cx = factory.enterContext();
|
Context cx = factory.enterContext();
|
||||||
|
cx.setClassShutter(new MinecraftHidingClassShutter());
|
||||||
ScriptableObject scriptable = new ImporterTopLevel(cx);
|
ScriptableObject scriptable = new ImporterTopLevel(cx);
|
||||||
Scriptable scope = cx.initStandardObjects(scriptable);
|
Scriptable scope = cx.initStandardObjects(scriptable);
|
||||||
|
|
||||||
|
@ -1,134 +0,0 @@
|
|||||||
/*
|
|
||||||
* WorldEdit, a Minecraft world manipulation toolkit
|
|
||||||
* Copyright (C) sk89q <http://www.sk89q.com>
|
|
||||||
* Copyright (C) WorldEdit team and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU Lesser General Public License as published by the
|
|
||||||
* Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
|
||||||
* for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.sk89q.worldedit.scripting.java;
|
|
||||||
|
|
||||||
import com.sk89q.worldedit.scripting.RhinoContextFactory;
|
|
||||||
import org.mozilla.javascript.Context;
|
|
||||||
import org.mozilla.javascript.ImporterTopLevel;
|
|
||||||
import org.mozilla.javascript.JavaScriptException;
|
|
||||||
import org.mozilla.javascript.RhinoException;
|
|
||||||
import org.mozilla.javascript.Scriptable;
|
|
||||||
import org.mozilla.javascript.ScriptableObject;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.Reader;
|
|
||||||
|
|
||||||
import javax.script.AbstractScriptEngine;
|
|
||||||
import javax.script.Bindings;
|
|
||||||
import javax.script.ScriptContext;
|
|
||||||
import javax.script.ScriptEngine;
|
|
||||||
import javax.script.ScriptEngineFactory;
|
|
||||||
import javax.script.ScriptException;
|
|
||||||
import javax.script.SimpleBindings;
|
|
||||||
|
|
||||||
public class RhinoScriptEngine extends AbstractScriptEngine {
|
|
||||||
private ScriptEngineFactory factory;
|
|
||||||
private Context cx;
|
|
||||||
|
|
||||||
public RhinoScriptEngine() {
|
|
||||||
RhinoContextFactory factory = new RhinoContextFactory(3000);
|
|
||||||
factory.enterContext();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Bindings createBindings() {
|
|
||||||
return new SimpleBindings();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object eval(String script, ScriptContext context)
|
|
||||||
throws ScriptException {
|
|
||||||
|
|
||||||
Scriptable scope = setupScope(cx, context);
|
|
||||||
|
|
||||||
String filename = (filename = (String) get(ScriptEngine.FILENAME)) == null
|
|
||||||
? "<unknown>" : filename;
|
|
||||||
|
|
||||||
try {
|
|
||||||
return cx.evaluateString(scope, script, filename, 1, null);
|
|
||||||
} catch (RhinoException e) {
|
|
||||||
String msg;
|
|
||||||
int line = (line = e.lineNumber()) == 0 ? -1 : line;
|
|
||||||
|
|
||||||
if (e instanceof JavaScriptException) {
|
|
||||||
msg = String.valueOf(((JavaScriptException) e).getValue());
|
|
||||||
} else {
|
|
||||||
msg = e.getMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
ScriptException scriptException =
|
|
||||||
new ScriptException(msg, e.sourceName(), line);
|
|
||||||
scriptException.initCause(e);
|
|
||||||
|
|
||||||
throw scriptException;
|
|
||||||
} finally {
|
|
||||||
Context.exit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object eval(Reader reader, ScriptContext context)
|
|
||||||
throws ScriptException {
|
|
||||||
|
|
||||||
Scriptable scope = setupScope(cx, context);
|
|
||||||
|
|
||||||
String filename = (filename = (String) get(ScriptEngine.FILENAME)) == null
|
|
||||||
? "<unknown>" : filename;
|
|
||||||
|
|
||||||
try {
|
|
||||||
return cx.evaluateReader(scope, reader, filename, 1, null);
|
|
||||||
} catch (RhinoException e) {
|
|
||||||
String msg;
|
|
||||||
int line = (line = e.lineNumber()) == 0 ? -1 : line;
|
|
||||||
|
|
||||||
if (e instanceof JavaScriptException) {
|
|
||||||
msg = String.valueOf(((JavaScriptException) e).getValue());
|
|
||||||
} else {
|
|
||||||
msg = e.getMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
ScriptException scriptException =
|
|
||||||
new ScriptException(msg, e.sourceName(), line);
|
|
||||||
scriptException.initCause(e);
|
|
||||||
|
|
||||||
throw scriptException;
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new ScriptException(e);
|
|
||||||
} finally {
|
|
||||||
Context.exit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ScriptEngineFactory getFactory() {
|
|
||||||
if (factory != null) {
|
|
||||||
return factory;
|
|
||||||
} else {
|
|
||||||
return new RhinoScriptEngineFactory();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Scriptable setupScope(Context cx, ScriptContext context) {
|
|
||||||
ScriptableObject scriptable = new ImporterTopLevel(cx);
|
|
||||||
Scriptable scope = cx.initStandardObjects(scriptable);
|
|
||||||
//ScriptableObject.putProperty(scope, "argv", Context.javaToJS(args, scope));
|
|
||||||
return scope;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,153 +0,0 @@
|
|||||||
/*
|
|
||||||
* WorldEdit, a Minecraft world manipulation toolkit
|
|
||||||
* Copyright (C) sk89q <http://www.sk89q.com>
|
|
||||||
* Copyright (C) WorldEdit team and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU Lesser General Public License as published by the
|
|
||||||
* Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
|
||||||
* for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.sk89q.worldedit.scripting.java;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.script.ScriptEngine;
|
|
||||||
import javax.script.ScriptEngineFactory;
|
|
||||||
|
|
||||||
public class RhinoScriptEngineFactory implements ScriptEngineFactory {
|
|
||||||
private static List<String> names;
|
|
||||||
private static List<String> mimeTypes;
|
|
||||||
private static List<String> extensions;
|
|
||||||
|
|
||||||
static {
|
|
||||||
names = new ArrayList<>(5);
|
|
||||||
names.add("ECMAScript");
|
|
||||||
names.add("ecmascript");
|
|
||||||
names.add("JavaScript");
|
|
||||||
names.add("javascript");
|
|
||||||
names.add("js");
|
|
||||||
names = Collections.unmodifiableList(names);
|
|
||||||
|
|
||||||
mimeTypes = new ArrayList<>(4);
|
|
||||||
mimeTypes.add("application/ecmascript");
|
|
||||||
mimeTypes.add("text/ecmascript");
|
|
||||||
mimeTypes.add("application/javascript");
|
|
||||||
mimeTypes.add("text/javascript");
|
|
||||||
mimeTypes = Collections.unmodifiableList(mimeTypes);
|
|
||||||
|
|
||||||
extensions = new ArrayList<>(2);
|
|
||||||
extensions.add("emcascript");
|
|
||||||
extensions.add("js");
|
|
||||||
extensions = Collections.unmodifiableList(extensions);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getEngineName() {
|
|
||||||
return "Rhino JavaScript Engine (SK)";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getEngineVersion() {
|
|
||||||
return "unknown";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<String> getExtensions() {
|
|
||||||
return extensions;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getLanguageName() {
|
|
||||||
return "EMCAScript";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getLanguageVersion() {
|
|
||||||
return "1.8";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getMethodCallSyntax(String obj, String m, String... args) {
|
|
||||||
StringBuilder s = new StringBuilder();
|
|
||||||
s.append(obj);
|
|
||||||
s.append(".");
|
|
||||||
s.append(m);
|
|
||||||
s.append("(");
|
|
||||||
|
|
||||||
for (int i = 0; i < args.length; ++i) {
|
|
||||||
s.append(args[i]);
|
|
||||||
if (i < args.length - 1) {
|
|
||||||
s.append(",");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
s.append(")");
|
|
||||||
|
|
||||||
return s.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<String> getMimeTypes() {
|
|
||||||
return mimeTypes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<String> getNames() {
|
|
||||||
return names;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getOutputStatement(String str) {
|
|
||||||
return "print(" + str.replace("\\", "\\\\")
|
|
||||||
.replace("\"", "\\\\\"")
|
|
||||||
.replace(";", "\\\\;") + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getParameter(String key) {
|
|
||||||
switch (key) {
|
|
||||||
case ScriptEngine.ENGINE:
|
|
||||||
return getEngineName();
|
|
||||||
case ScriptEngine.ENGINE_VERSION:
|
|
||||||
return getEngineVersion();
|
|
||||||
case ScriptEngine.NAME:
|
|
||||||
return getEngineName();
|
|
||||||
case ScriptEngine.LANGUAGE:
|
|
||||||
return getLanguageName();
|
|
||||||
case ScriptEngine.LANGUAGE_VERSION:
|
|
||||||
return getLanguageVersion();
|
|
||||||
case "THREADING":
|
|
||||||
return "MULTITHREADED";
|
|
||||||
default:
|
|
||||||
throw new IllegalArgumentException("Invalid key");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getProgram(String... statements) {
|
|
||||||
StringBuilder s = new StringBuilder();
|
|
||||||
for (String stmt : statements) {
|
|
||||||
s.append(stmt);
|
|
||||||
s.append(";");
|
|
||||||
}
|
|
||||||
return s.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ScriptEngine getScriptEngine() {
|
|
||||||
return new RhinoScriptEngine();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,105 +0,0 @@
|
|||||||
import net.fabricmc.loom.task.RemapJarTask
|
|
||||||
|
|
||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
jcenter()
|
|
||||||
maven {
|
|
||||||
name = 'Fabric'
|
|
||||||
url = 'https://maven.fabricmc.net/'
|
|
||||||
}
|
|
||||||
maven {
|
|
||||||
name = 'sponge'
|
|
||||||
url = 'https://repo.spongepowered.org/maven'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
classpath 'net.fabricmc:fabric-loom:0.2.4-SNAPSHOT'
|
|
||||||
classpath 'org.spongepowered:mixin:0.7.11-SNAPSHOT'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
apply plugin: 'eclipse'
|
|
||||||
apply plugin: 'fabric-loom'
|
|
||||||
|
|
||||||
def minecraftVersion = "1.14.3"
|
|
||||||
def fabricVersion = "0.3.0+build.187"
|
|
||||||
def yarnMappings = "1.14.3+build.1"
|
|
||||||
def loaderVersion = "0.4.8+build.155"
|
|
||||||
|
|
||||||
configurations.all { Configuration it ->
|
|
||||||
it.resolutionStrategy { ResolutionStrategy rs ->
|
|
||||||
rs.force("com.google.guava:guava:21.0")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
compile project(':worldedit-core')
|
|
||||||
compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.8.1'
|
|
||||||
|
|
||||||
minecraft "com.mojang:minecraft:${minecraftVersion}"
|
|
||||||
mappings "net.fabricmc:yarn:${yarnMappings}"
|
|
||||||
modCompile "net.fabricmc:fabric-loader:${loaderVersion}"
|
|
||||||
|
|
||||||
modCompile "net.fabricmc.fabric-api:fabric-api:${fabricVersion}"
|
|
||||||
|
|
||||||
testCompile group: 'org.mockito', name: 'mockito-core', version: '1.9.0-rc1'
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceCompatibility = 1.8
|
|
||||||
targetCompatibility = 1.8
|
|
||||||
|
|
||||||
minecraft {
|
|
||||||
}
|
|
||||||
|
|
||||||
project.archivesBaseName = "${project.archivesBaseName}-mc${minecraftVersion}"
|
|
||||||
|
|
||||||
processResources {
|
|
||||||
// this will ensure that this task is redone when the versions change.
|
|
||||||
inputs.property 'version', project.internalVersion
|
|
||||||
|
|
||||||
from(sourceSets.main.resources.srcDirs) {
|
|
||||||
include "fabric.mod.json"
|
|
||||||
expand "version": project.internalVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
// copy everything else except the mod json
|
|
||||||
from(sourceSets.main.resources.srcDirs) {
|
|
||||||
exclude "fabric.mod.json"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
jar {
|
|
||||||
manifest {
|
|
||||||
attributes("Class-Path": "truezip.jar WorldEdit/truezip.jar js.jar WorldEdit/js.jar",
|
|
||||||
"WorldEdit-Version": version)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
shadowJar {
|
|
||||||
classifier = 'dist-dev'
|
|
||||||
dependencies {
|
|
||||||
relocate "org.slf4j", "com.sk89q.worldedit.slf4j"
|
|
||||||
relocate "org.apache.logging.slf4j", "com.sk89q.worldedit.log4jbridge"
|
|
||||||
|
|
||||||
include(dependency('org.slf4j:slf4j-api'))
|
|
||||||
include(dependency("org.apache.logging.log4j:log4j-slf4j-impl"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
task deobfJar(type: Jar) {
|
|
||||||
from sourceSets.main.output
|
|
||||||
classifier = 'dev'
|
|
||||||
}
|
|
||||||
|
|
||||||
artifacts {
|
|
||||||
archives deobfJar
|
|
||||||
}
|
|
||||||
|
|
||||||
task shadowJarRemap(type: RemapJarTask) {
|
|
||||||
input shadowJar.archivePath
|
|
||||||
output new File(shadowJar.archivePath.getAbsolutePath().replaceFirst('-dev\\.jar$', ".jar"))
|
|
||||||
}
|
|
||||||
|
|
||||||
shadowJarRemap.dependsOn(shadowJar)
|
|
||||||
build.dependsOn(shadowJarRemap)
|
|
113
worldedit-fabric/build.gradle.kts
Normale Datei
113
worldedit-fabric/build.gradle.kts
Normale Datei
@ -0,0 +1,113 @@
|
|||||||
|
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||||
|
import net.fabricmc.loom.task.RemapJarTask
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
|
buildscript {
|
||||||
|
repositories {
|
||||||
|
jcenter()
|
||||||
|
maven {
|
||||||
|
name = "Fabric"
|
||||||
|
url = uri("https://maven.fabricmc.net/")
|
||||||
|
}
|
||||||
|
maven {
|
||||||
|
name = "sponge"
|
||||||
|
url = uri("https://repo.spongepowered.org/maven")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
"classpath"("net.fabricmc:fabric-loom:0.2.3-SNAPSHOT")
|
||||||
|
"classpath"("org.spongepowered:mixin:0.7.11-SNAPSHOT")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
applyPlatformAndCoreConfiguration()
|
||||||
|
applyShadowConfiguration()
|
||||||
|
|
||||||
|
apply(plugin = "fabric-loom")
|
||||||
|
|
||||||
|
val minecraftVersion = "1.14.3"
|
||||||
|
val fabricVersion = "0.3.0+build.187"
|
||||||
|
val yarnMappings = "1.14.3+build.1"
|
||||||
|
val loaderVersion = "0.4.8+build.155"
|
||||||
|
|
||||||
|
configurations.all {
|
||||||
|
resolutionStrategy {
|
||||||
|
force("com.google.guava:guava:21.0")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
"compile"(project(":worldedit-core"))
|
||||||
|
"compile"("org.apache.logging.log4j:log4j-slf4j-impl:2.8.1")
|
||||||
|
|
||||||
|
"minecraft"("com.mojang:minecraft:$minecraftVersion")
|
||||||
|
"mappings"("net.fabricmc:yarn:$yarnMappings")
|
||||||
|
"modCompile"("net.fabricmc:fabric-loader:$loaderVersion")
|
||||||
|
|
||||||
|
"modCompile"("net.fabricmc.fabric-api:fabric-api:$fabricVersion")
|
||||||
|
|
||||||
|
"testCompile"("org.mockito:mockito-core:1.9.0-rc1")
|
||||||
|
}
|
||||||
|
|
||||||
|
configure<BasePluginConvention> {
|
||||||
|
archivesBaseName = "$archivesBaseName-mc$minecraftVersion"
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named<Copy>("processResources") {
|
||||||
|
// this will ensure that this task is redone when the versions change.
|
||||||
|
inputs.property("version", project.ext["internalVersion"])
|
||||||
|
|
||||||
|
from(sourceSets["main"].resources.srcDirs) {
|
||||||
|
include("fabric.mod.json")
|
||||||
|
expand("version" to project.ext["internalVersion"])
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy everything else except the mod json
|
||||||
|
from(sourceSets["main"].resources.srcDirs) {
|
||||||
|
exclude("fabric.mod.json")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named<Jar>("jar") {
|
||||||
|
manifest {
|
||||||
|
attributes("Class-Path" to "truezip.jar WorldEdit/truezip.jar js.jar WorldEdit/js.jar",
|
||||||
|
"WorldEdit-Version" to project.version)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named<ShadowJar>("shadowJar") {
|
||||||
|
archiveClassifier.set("dist-dev")
|
||||||
|
dependencies {
|
||||||
|
relocate("org.slf4j", "com.sk89q.worldedit.slf4j")
|
||||||
|
relocate("org.apache.logging.slf4j", "com.sk89q.worldedit.log4jbridge")
|
||||||
|
|
||||||
|
include(dependency("org.slf4j:slf4j-api"))
|
||||||
|
include(dependency("org.apache.logging.log4j:log4j-slf4j-impl"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register<Jar>("deobfJar") {
|
||||||
|
from(sourceSets["main"].output)
|
||||||
|
archiveClassifier.set("dev")
|
||||||
|
}
|
||||||
|
|
||||||
|
artifacts {
|
||||||
|
add("archives", tasks.named("deobfJar"))
|
||||||
|
}
|
||||||
|
|
||||||
|
// intellij has trouble detecting RemapJarTask as a subclass of Task
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
val remapJarIntellijHack = RemapJarTask::class as KClass<Task>
|
||||||
|
tasks.register("remapShadowJar", remapJarIntellijHack) {
|
||||||
|
(this as RemapJarTask).run {
|
||||||
|
val shadowJar = tasks.getByName<ShadowJar>("shadowJar")
|
||||||
|
dependsOn(shadowJar)
|
||||||
|
setInput(shadowJar.archiveFile)
|
||||||
|
setOutput(shadowJar.archiveFile.get().asFile.absolutePath.replace(Regex("-dev\\.jar$"), ".jar"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("assemble").configure {
|
||||||
|
dependsOn("remapShadowJar")
|
||||||
|
}
|
@ -1,116 +0,0 @@
|
|||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
mavenLocal()
|
|
||||||
mavenCentral()
|
|
||||||
maven { url = "https://files.minecraftforge.net/maven" }
|
|
||||||
jcenter()
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
apply plugin: 'eclipse'
|
|
||||||
apply plugin: 'net.minecraftforge.gradle'
|
|
||||||
|
|
||||||
def minecraftVersion = "1.14.3"
|
|
||||||
def forgeVersion = "27.0.13"
|
|
||||||
|
|
||||||
configurations.all { Configuration it ->
|
|
||||||
it.resolutionStrategy { ResolutionStrategy rs ->
|
|
||||||
rs.force("com.google.guava:guava:21.0")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
compile project(':worldedit-core')
|
|
||||||
compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.11.2'
|
|
||||||
|
|
||||||
minecraft "net.minecraftforge:forge:${minecraftVersion}-${forgeVersion}"
|
|
||||||
|
|
||||||
testCompile group: 'org.mockito', name: 'mockito-core', version: '1.9.0-rc1'
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceCompatibility = 1.8
|
|
||||||
targetCompatibility = 1.8
|
|
||||||
|
|
||||||
minecraft {
|
|
||||||
mappings channel: 'snapshot', version: "20190626-${minecraftVersion}"
|
|
||||||
|
|
||||||
runs {
|
|
||||||
client = {
|
|
||||||
// recommended logging data for a userdev environment
|
|
||||||
properties 'forge.logging.markers': 'SCAN,REGISTRIES,REGISTRYDUMP'
|
|
||||||
// recommended logging level for the console
|
|
||||||
properties 'forge.logging.console.level': 'debug'
|
|
||||||
workingDirectory project.file('run').canonicalPath
|
|
||||||
source sourceSets.main
|
|
||||||
}
|
|
||||||
server = {
|
|
||||||
// recommended logging data for a userdev environment
|
|
||||||
properties 'forge.logging.markers': 'SCAN,REGISTRIES,REGISTRYDUMP'
|
|
||||||
// recommended logging level for the console
|
|
||||||
properties 'forge.logging.console.level': 'debug'
|
|
||||||
workingDirectory project.file('run').canonicalPath
|
|
||||||
source sourceSets.main
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
project.archivesBaseName = "${project.archivesBaseName}-mc${minecraftVersion}"
|
|
||||||
|
|
||||||
processResources {
|
|
||||||
// this will ensure that this task is redone when the versions change.
|
|
||||||
inputs.property 'version', project.internalVersion
|
|
||||||
inputs.property 'forgeVersion', forgeVersion
|
|
||||||
|
|
||||||
// replace stuff in mcmod.info, nothing else
|
|
||||||
from(sourceSets.main.resources.srcDirs) {
|
|
||||||
include 'META-INF/mods.toml'
|
|
||||||
|
|
||||||
// replace version and mcversion
|
|
||||||
expand 'version': project.internalVersion, 'forgeVersion': forgeVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
// copy everything else except the mcmod.info
|
|
||||||
from(sourceSets.main.resources.srcDirs) {
|
|
||||||
exclude 'META-INF/mods.toml'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
jar {
|
|
||||||
manifest {
|
|
||||||
attributes("WorldEdit-Version": version)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
shadowJar {
|
|
||||||
dependencies {
|
|
||||||
relocate "org.slf4j", "com.sk89q.worldedit.slf4j"
|
|
||||||
relocate "org.apache.logging.slf4j", "com.sk89q.worldedit.log4jbridge"
|
|
||||||
|
|
||||||
include(dependency('org.slf4j:slf4j-api'))
|
|
||||||
include(dependency("org.apache.logging.log4j:log4j-slf4j-impl"))
|
|
||||||
include(dependency("de.schlichtherle:truezip"))
|
|
||||||
include(dependency("org.mozilla:rhino"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
afterEvaluate {
|
|
||||||
reobf {
|
|
||||||
shadowJar {
|
|
||||||
mappings = createMcpToSrg.output
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
task deobfJar(type: Jar) {
|
|
||||||
from sourceSets.main.output
|
|
||||||
classifier = 'dev'
|
|
||||||
}
|
|
||||||
|
|
||||||
artifacts {
|
|
||||||
archives deobfJar
|
|
||||||
}
|
|
114
worldedit-forge/build.gradle.kts
Normale Datei
114
worldedit-forge/build.gradle.kts
Normale Datei
@ -0,0 +1,114 @@
|
|||||||
|
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||||
|
import net.minecraftforge.gradle.common.util.RunConfig
|
||||||
|
import net.minecraftforge.gradle.userdev.UserDevExtension
|
||||||
|
import net.minecraftforge.gradle.userdev.tasks.GenerateSRG
|
||||||
|
import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id("net.minecraftforge.gradle")
|
||||||
|
}
|
||||||
|
|
||||||
|
applyPlatformAndCoreConfiguration()
|
||||||
|
applyShadowConfiguration()
|
||||||
|
|
||||||
|
val minecraftVersion = "1.14.3"
|
||||||
|
val forgeVersion = "27.0.13"
|
||||||
|
|
||||||
|
configurations.all {
|
||||||
|
resolutionStrategy {
|
||||||
|
force("com.google.guava:guava:21.0")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
"compile"(project(":worldedit-core"))
|
||||||
|
"compile"("org.apache.logging.log4j:log4j-slf4j-impl:2.11.2")
|
||||||
|
|
||||||
|
"minecraft"("net.minecraftforge:forge:$minecraftVersion-$forgeVersion")
|
||||||
|
|
||||||
|
"testCompile"("org.mockito:mockito-core:1.9.0-rc1")
|
||||||
|
}
|
||||||
|
|
||||||
|
configure<UserDevExtension> {
|
||||||
|
mappings(mapOf(
|
||||||
|
"channel" to "snapshot",
|
||||||
|
"version" to "20190626-$minecraftVersion"
|
||||||
|
))
|
||||||
|
|
||||||
|
runs {
|
||||||
|
val runConfig = Action<RunConfig> {
|
||||||
|
properties(mapOf(
|
||||||
|
"forge.logging.markers" to "SCAN,REGISTRIES,REGISTRYDUMP",
|
||||||
|
"forge.logging.console.level" to "debug"
|
||||||
|
))
|
||||||
|
workingDirectory = project.file("run").canonicalPath
|
||||||
|
source(sourceSets["main"])
|
||||||
|
}
|
||||||
|
create("client", runConfig)
|
||||||
|
create("server", runConfig)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
configure<BasePluginConvention> {
|
||||||
|
archivesBaseName = "$archivesBaseName-mc$minecraftVersion"
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named<Copy>("processResources") {
|
||||||
|
// this will ensure that this task is redone when the versions change.
|
||||||
|
inputs.property("version", project.ext["internalVersion"])
|
||||||
|
inputs.property("forgeVersion", forgeVersion)
|
||||||
|
|
||||||
|
// replace stuff in mcmod.info, nothing else
|
||||||
|
from(sourceSets["main"].resources.srcDirs) {
|
||||||
|
include("META-INF/mods.toml")
|
||||||
|
|
||||||
|
// replace version and mcversion
|
||||||
|
expand(
|
||||||
|
"version" to project.ext["internalVersion"],
|
||||||
|
"forgeVersion" to forgeVersion
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy everything else except the mcmod.info
|
||||||
|
from(sourceSets["main"].resources.srcDirs) {
|
||||||
|
exclude("META-INF/mods.toml")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named<Jar>("jar") {
|
||||||
|
manifest {
|
||||||
|
attributes("WorldEdit-Version" to project.version)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named<ShadowJar>("shadowJar") {
|
||||||
|
dependencies {
|
||||||
|
relocate("org.slf4j", "com.sk89q.worldedit.slf4j")
|
||||||
|
relocate("org.apache.logging.slf4j", "com.sk89q.worldedit.log4jbridge")
|
||||||
|
|
||||||
|
include(dependency("org.slf4j:slf4j-api"))
|
||||||
|
include(dependency("org.apache.logging.log4j:log4j-slf4j-impl"))
|
||||||
|
include(dependency("de.schlichtherle:truezip"))
|
||||||
|
include(dependency("org.mozilla:rhino"))
|
||||||
|
}
|
||||||
|
minimize {
|
||||||
|
exclude(dependency("org.mozilla:rhino"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
afterEvaluate {
|
||||||
|
val reobf = extensions.getByName<NamedDomainObjectContainer<RenameJarInPlace>>("reobf")
|
||||||
|
reobf.maybeCreate("shadowJar").run {
|
||||||
|
mappings = tasks.getByName<GenerateSRG>("createMcpToSrg").output
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register<Jar>("deobfJar") {
|
||||||
|
from(sourceSets["main"].output)
|
||||||
|
archiveClassifier.set("dev")
|
||||||
|
}
|
||||||
|
|
||||||
|
artifacts {
|
||||||
|
add("archives", tasks.named("deobfJar"))
|
||||||
|
}
|
9
worldedit-libs/README.md
Normale Datei
9
worldedit-libs/README.md
Normale Datei
@ -0,0 +1,9 @@
|
|||||||
|
This project shades _API_ libraries, i.e. those libraries
|
||||||
|
whose classes are publicly referenced from `-core` classes.
|
||||||
|
|
||||||
|
This project _does not_ shade implementation libraries, i.e.
|
||||||
|
those libraries whose classes are internally depended on.
|
||||||
|
|
||||||
|
This is because the main reason for shading those libraries is for
|
||||||
|
their internal usage in each platform, not because we need them available to
|
||||||
|
dependents of `-core` to compile and work with WorldEdit's API.
|
@ -1,149 +0,0 @@
|
|||||||
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
|
||||||
/*
|
|
||||||
|
|
||||||
This project shades <em>API</em> libraries, i.e. those libraries
|
|
||||||
whose classes are publicly referenced from `-core` classes.
|
|
||||||
|
|
||||||
This project <em>does not</em> shade implementation libraries, i.e.
|
|
||||||
those libraries whose classes are internally depended on.
|
|
||||||
|
|
||||||
This is because the main reason for shading those libraries is for
|
|
||||||
their internal usage in each platform, not because we need them available to
|
|
||||||
dependents of `-core` to compile and work with WorldEdit's API.
|
|
||||||
|
|
||||||
*/
|
|
||||||
configure(subprojects + project("core:ap")) {
|
|
||||||
apply plugin: 'java'
|
|
||||||
apply plugin: 'maven'
|
|
||||||
apply plugin: 'com.github.johnrengelman.shadow'
|
|
||||||
apply plugin: 'com.jfrog.artifactory'
|
|
||||||
configurations {
|
|
||||||
create("shade")
|
|
||||||
getByName("archives").extendsFrom(getByName("default"))
|
|
||||||
}
|
|
||||||
|
|
||||||
group = rootProject.group + ".worldedit-libs"
|
|
||||||
|
|
||||||
tasks.replace("jar", ShadowJar)
|
|
||||||
tasks.withType(ShadowJar).named("jar").configure {
|
|
||||||
configurations = [project.configurations.shade]
|
|
||||||
classifier = ""
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
exclude(dependency("com.google.guava:guava"))
|
|
||||||
exclude(dependency("com.google.code.gson:gson"))
|
|
||||||
exclude(dependency("org.checkerframework:checker-qual"))
|
|
||||||
}
|
|
||||||
|
|
||||||
relocate('net.kyori.text', 'com.sk89q.worldedit.util.formatting.text')
|
|
||||||
}
|
|
||||||
def altConfigFiles = { String artifactType ->
|
|
||||||
def deps = configurations.shade.incoming.dependencies
|
|
||||||
.collect { it.copy() }
|
|
||||||
.collect { dependency ->
|
|
||||||
dependency.artifact { artifact ->
|
|
||||||
artifact.name = dependency.name
|
|
||||||
artifact.type = artifactType
|
|
||||||
artifact.extension = 'jar'
|
|
||||||
artifact.classifier = artifactType
|
|
||||||
}
|
|
||||||
dependency
|
|
||||||
}
|
|
||||||
|
|
||||||
return files(configurations.detachedConfiguration(deps as Dependency[])
|
|
||||||
.resolvedConfiguration.lenientConfiguration.getArtifacts()
|
|
||||||
.findAll { it.classifier == artifactType }
|
|
||||||
.collect { zipTree(it.file) })
|
|
||||||
}
|
|
||||||
tasks.register("sourcesJar", Jar) {
|
|
||||||
from {
|
|
||||||
altConfigFiles('sources')
|
|
||||||
}
|
|
||||||
def filePattern = ~'(.*)net/kyori/text((?:/|$).*)'
|
|
||||||
def textPattern = ~/net\.kyori\.text/
|
|
||||||
eachFile {
|
|
||||||
it.filter { String line ->
|
|
||||||
line.replaceFirst(textPattern, 'com.sk89q.worldedit.util.formatting.text')
|
|
||||||
}
|
|
||||||
it.path = it.path.replaceFirst(filePattern, '$1com/sk89q/worldedit/util/formatting/text$2')
|
|
||||||
}
|
|
||||||
classifier = "sources"
|
|
||||||
}
|
|
||||||
|
|
||||||
artifacts {
|
|
||||||
add("default", jar) {
|
|
||||||
builtBy(jar)
|
|
||||||
}
|
|
||||||
add("archives", sourcesJar) {
|
|
||||||
builtBy(sourcesJar)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.withType(Upload).named("install").configure {
|
|
||||||
configuration = configurations.archives
|
|
||||||
repositories.mavenInstaller {
|
|
||||||
pom.version = project.version
|
|
||||||
pom.artifactId = project.name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
artifactoryPublish {
|
|
||||||
publishConfigs('default')
|
|
||||||
}
|
|
||||||
|
|
||||||
build.dependsOn(jar, sourcesJar)
|
|
||||||
}
|
|
||||||
|
|
||||||
def textExtrasVersion = "3.0.2"
|
|
||||||
project("core") {
|
|
||||||
def textVersion = "3.0.1"
|
|
||||||
def pistonVersion = '0.4.2'
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
shade "net.kyori:text-api:$textVersion"
|
|
||||||
shade "net.kyori:text-serializer-gson:$textVersion"
|
|
||||||
shade "net.kyori:text-serializer-legacy:$textVersion"
|
|
||||||
shade "net.kyori:text-serializer-plain:$textVersion"
|
|
||||||
shade('com.sk89q:jchronic:0.2.4a') {
|
|
||||||
exclude(group: "junit", module: "junit")
|
|
||||||
}
|
|
||||||
shade 'com.thoughtworks.paranamer:paranamer:2.6'
|
|
||||||
shade 'com.sk89q.lib:jlibnoise:1.0.0'
|
|
||||||
shade "org.enginehub.piston:core:$pistonVersion"
|
|
||||||
shade "org.enginehub.piston.core-ap:runtime:$pistonVersion"
|
|
||||||
shade "org.enginehub.piston:default-impl:$pistonVersion"
|
|
||||||
}
|
|
||||||
|
|
||||||
project("ap") {
|
|
||||||
dependencies {
|
|
||||||
shade "org.enginehub.piston.core-ap:annotations:$pistonVersion"
|
|
||||||
shade "org.enginehub.piston.core-ap:processor:$pistonVersion"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
project("bukkit") {
|
|
||||||
repositories {
|
|
||||||
maven {
|
|
||||||
name = "SpigotMC"
|
|
||||||
url = "https://hub.spigotmc.org/nexus/content/repositories/snapshots/"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dependencies {
|
|
||||||
shade "net.kyori:text-adapter-bukkit:$textExtrasVersion"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
project("sponge") {
|
|
||||||
repositories {
|
|
||||||
maven {
|
|
||||||
name = "Sponge"
|
|
||||||
url = "https://repo.spongepowered.org/maven"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dependencies {
|
|
||||||
shade "net.kyori:text-adapter-spongeapi:$textExtrasVersion"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.register("build") {
|
|
||||||
dependsOn(subprojects.collect { it.tasks.named("build") })
|
|
||||||
}
|
|
3
worldedit-libs/build.gradle.kts
Normale Datei
3
worldedit-libs/build.gradle.kts
Normale Datei
@ -0,0 +1,3 @@
|
|||||||
|
tasks.register("build") {
|
||||||
|
dependsOn(subprojects.map { it.tasks.named("build") })
|
||||||
|
}
|
11
worldedit-libs/bukkit/build.gradle.kts
Normale Datei
11
worldedit-libs/bukkit/build.gradle.kts
Normale Datei
@ -0,0 +1,11 @@
|
|||||||
|
applyLibrariesConfiguration()
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
name = "SpigotMC"
|
||||||
|
url = uri("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
"shade"("net.kyori:text-adapter-bukkit:${Versions.TEXT_EXTRAS}")
|
||||||
|
}
|
6
worldedit-libs/core/ap/build.gradle.kts
Normale Datei
6
worldedit-libs/core/ap/build.gradle.kts
Normale Datei
@ -0,0 +1,6 @@
|
|||||||
|
applyLibrariesConfiguration()
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
"shade"("org.enginehub.piston.core-ap:annotations:${Versions.PISTON}")
|
||||||
|
"shade"("org.enginehub.piston.core-ap:processor:${Versions.PISTON}")
|
||||||
|
}
|
16
worldedit-libs/core/build.gradle.kts
Normale Datei
16
worldedit-libs/core/build.gradle.kts
Normale Datei
@ -0,0 +1,16 @@
|
|||||||
|
applyLibrariesConfiguration()
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
"shade"("net.kyori:text-api:${Versions.TEXT}")
|
||||||
|
"shade"("net.kyori:text-serializer-gson:${Versions.TEXT}")
|
||||||
|
"shade"("net.kyori:text-serializer-legacy:${Versions.TEXT}")
|
||||||
|
"shade"("net.kyori:text-serializer-plain:${Versions.TEXT}")
|
||||||
|
"shade"("com.sk89q:jchronic:0.2.4a") {
|
||||||
|
exclude(group = "junit", module = "junit")
|
||||||
|
}
|
||||||
|
"shade"("com.thoughtworks.paranamer:paranamer:2.6")
|
||||||
|
"shade"("com.sk89q.lib:jlibnoise:1.0.0")
|
||||||
|
"shade"("org.enginehub.piston:core:${Versions.PISTON}")
|
||||||
|
"shade"("org.enginehub.piston.core-ap:runtime:${Versions.PISTON}")
|
||||||
|
"shade"("org.enginehub.piston:default-impl:${Versions.PISTON}")
|
||||||
|
}
|
1
worldedit-libs/fabric/build.gradle.kts
Normale Datei
1
worldedit-libs/fabric/build.gradle.kts
Normale Datei
@ -0,0 +1 @@
|
|||||||
|
applyLibrariesConfiguration()
|
1
worldedit-libs/forge/build.gradle.kts
Normale Datei
1
worldedit-libs/forge/build.gradle.kts
Normale Datei
@ -0,0 +1 @@
|
|||||||
|
applyLibrariesConfiguration()
|
11
worldedit-libs/sponge/build.gradle.kts
Normale Datei
11
worldedit-libs/sponge/build.gradle.kts
Normale Datei
@ -0,0 +1,11 @@
|
|||||||
|
applyLibrariesConfiguration()
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
name = "Sponge"
|
||||||
|
url = uri("https://repo.spongepowered.org/maven")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
"shade"("net.kyori:text-adapter-spongeapi:${Versions.TEXT_EXTRAS}")
|
||||||
|
}
|
@ -1,58 +0,0 @@
|
|||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
mavenCentral()
|
|
||||||
maven { url = "https://files.minecraftforge.net/maven" }
|
|
||||||
maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" }
|
|
||||||
jcenter()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
id 'org.spongepowered.plugin' version '0.9.0'
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
maven { url "https://repo.codemc.org/repository/maven-public" }
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
compile project(':worldedit-core')
|
|
||||||
compile project(':worldedit-libs:sponge')
|
|
||||||
compile 'org.spongepowered:spongeapi:7.1.0'
|
|
||||||
compile 'org.bstats:bstats-sponge:1.5'
|
|
||||||
testCompile group: 'org.mockito', name: 'mockito-core', version:'1.9.0-rc1'
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
||||||
targetCompatibility = JavaVersion.VERSION_1_8
|
|
||||||
|
|
||||||
sponge {
|
|
||||||
plugin {
|
|
||||||
id = 'worldedit'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
jar {
|
|
||||||
manifest {
|
|
||||||
attributes("Class-Path": "truezip.jar WorldEdit/truezip.jar js.jar WorldEdit/js.jar",
|
|
||||||
"WorldEdit-Version": version)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
shadowJar {
|
|
||||||
dependencies {
|
|
||||||
relocate ("org.bstats", "com.sk89q.worldedit.sponge.bstats") {
|
|
||||||
include(dependency('org.bstats:bstats-sponge:1.5'))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (project.hasProperty("signing")) {
|
|
||||||
apply plugin: 'signing'
|
|
||||||
|
|
||||||
signing {
|
|
||||||
sign shadowJar
|
|
||||||
}
|
|
||||||
|
|
||||||
build.dependsOn('signShadowJar')
|
|
||||||
}
|
|
53
worldedit-sponge/build.gradle.kts
Normale Datei
53
worldedit-sponge/build.gradle.kts
Normale Datei
@ -0,0 +1,53 @@
|
|||||||
|
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id("org.spongepowered.plugin")
|
||||||
|
}
|
||||||
|
|
||||||
|
applyPlatformAndCoreConfiguration()
|
||||||
|
applyShadowConfiguration()
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
maven { url = uri("https://repo.codemc.org/repository/maven-public") }
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile(project(":worldedit-core"))
|
||||||
|
compile(project(":worldedit-libs:sponge"))
|
||||||
|
compile("org.spongepowered:spongeapi:7.1.0")
|
||||||
|
compile("org.bstats:bstats-sponge:1.5")
|
||||||
|
testCompile("org.mockito:mockito-core:1.9.0-rc1")
|
||||||
|
}
|
||||||
|
|
||||||
|
sponge {
|
||||||
|
plugin {
|
||||||
|
id = "worldedit"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named<Jar>("jar") {
|
||||||
|
manifest {
|
||||||
|
attributes("Class-Path" to "truezip.jar WorldEdit/truezip.jar js.jar WorldEdit/js.jar",
|
||||||
|
"WorldEdit-Version" to project.version)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named<ShadowJar>("shadowJar") {
|
||||||
|
dependencies {
|
||||||
|
relocate ("org.bstats", "com.sk89q.worldedit.sponge.bstats") {
|
||||||
|
include(dependency("org.bstats:bstats-sponge:1.5"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (project.hasProperty("signing")) {
|
||||||
|
apply(plugin = "signing")
|
||||||
|
|
||||||
|
configure<SigningExtension> {
|
||||||
|
sign("shadowJar")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("build").configure {
|
||||||
|
dependsOn("signShadowJar")
|
||||||
|
}
|
||||||
|
}
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren