diff --git a/build.gradle b/build.gradle
index 94767f4c1..fe1ca5d0b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,332 +1,332 @@
-/*
- * Iris is a World Generator for Minecraft Bukkit Servers
- * Copyright (c) 2021 Arcane Arts (Volmit Software)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-plugins {
- id 'java'
- id 'java-library'
- id "io.freefair.lombok" version "6.3.0"
- id "com.github.johnrengelman.shadow" version "7.1.2"
- id "de.undercouch.download" version "5.0.1"
-}
-
-version '2.6.1-1.19.4'
-def nmsVersion = "1.19.4" //[NMS]
-def apiVersion = '1.19'
-def specialSourceVersion = '1.11.0' //[NMS]
-def spigotJarVersion = '1.19.4-R0.1-SNAPSHOT' //[NMS]
-def name = getRootProject().getName() // Defined in settings.gradle
-def main = 'com.volmit.iris.Iris'
-
-// ADD YOURSELF AS A NEW LINE IF YOU WANT YOUR OWN BUILD TASK GENERATED
-// ======================== WINDOWS =============================
-registerCustomOutputTask('Cyberpwn', 'C://Users/cyberpwn/Documents/development/server/plugins')
-registerCustomOutputTask('Psycho', 'C://Dan/MinecraftDevelopment/Server/plugins')
-registerCustomOutputTask('ArcaneArts', 'C://Users/arcane/Documents/development/server/plugins')
-registerCustomOutputTask('Coco', 'D://mcsm/plugins')
-registerCustomOutputTask('Strange', 'D://Servers/1.17 Test Server/plugins')
-registerCustomOutputTask('Vatuu', 'D://Minecraft/Servers/1.19.4/plugins')
-// ========================== UNIX ==============================
-registerCustomOutputTaskUnix('CyberpwnLT', '/Users/danielmills/development/server/plugins')
-registerCustomOutputTaskUnix('PsychoLT', '/Users/brianfopiano/Desktop/REMOTES/RemoteMinecraft/plugins')
-// ==============================================================
-
-/**
- * Gradle is weird sometimes, we need to delete the plugin yml from the build folder to actually filter properly.
- */
-file(jar.archiveFile.get().getAsFile().getParentFile().getParentFile().getParentFile().getAbsolutePath() + '/build/resources/main/plugin.yml').delete()
-
-/**
- * Expand properties into plugin yml
- */
-processResources {
- filesMatching('**/plugin.yml') {
- expand(
- 'name': name.toString(),
- 'version': version.toString(),
- 'main': main.toString(),
- 'apiversion': apiVersion.toString()
- )
- }
-}
-
-/**
- * Unified repo
- */
-repositories {
- mavenLocal {
- content {
- includeGroup("org.bukkit")
- includeGroup("org.spigotmc")
- }
- }
- mavenCentral()
- maven { url "https://arcanearts.jfrog.io/artifactory/archives" }
- maven { url "https://mvn.lumine.io/repository/maven-public/" }
- maven { url "https://jitpack.io"}
-
- maven { url "https://s01.oss.sonatype.org/content/repositories/snapshots" }
- maven { url "https://mvn.lumine.io/repository/maven/" }
- maven { url "https://repo.triumphteam.dev/snapshots" }
- maven { url "https://repo.mineinabyss.com/releases" }
-}
-
-/**
- * We need parameter meta for the decree command system
- */
-compileJava {
- options.compilerArgs << '-parameters'
-}
-
-/**
- * Configure Iris for shading
- */
-shadowJar {
- //minimize()
- append("plugin.yml")
- relocate 'com.dfsek.paralithic', 'com.volmit.iris.util.paralithic'
- relocate 'io.papermc.lib', 'com.volmit.iris.util.paper'
- relocate 'net.kyori', 'com.volmit.iris.util.kyori'
- dependencies {
- include(dependency('io.papermc:paperlib'))
- include(dependency('com.dfsek:Paralithic'))
- include(dependency('net.kyori:'))
- }
-}
-
-configurations.all {
- resolutionStrategy.cacheChangingModulesFor 60, 'minutes'
- resolutionStrategy.cacheDynamicVersionsFor 60, 'minutes'
-}
-
-/**
- * Dependencies.
- *
- * Provided or classpath dependencies are not shaded and are available on the runtime classpath
- *
- * Shaded dependencies are not available at runtime, nor are they available on mvn central so they
- * need to be shaded into the jar (increasing binary size)
- *
- * Dynamically loaded dependencies are defined in the plugin.yml (updating these must be updated in the
- * plugin.yml also, otherwise they wont be available). These do not increase binary size). Only declare
- * these dependencies if they are available on mvn central.
- */
-dependencies {
- // Provided or Classpath
- compileOnly 'org.projectlombok:lombok:1.18.24'
- annotationProcessor 'org.projectlombok:lombok:1.18.24'
- implementation 'org.spigotmc:spigot-api:1.19.4-R0.1-SNAPSHOT'
- implementation 'org.bukkit:craftbukkit:1.19.4-R0.1-SNAPSHOT:remapped-mojang' //[NMS]
-
- // Third Party Integrations
- implementation 'com.github.oraxen:oraxen:1.152.5'
- implementation 'com.github.LoneDev6:api-itemsadder:3.2.5'
- implementation 'me.clip:placeholderapi:2.11.3'
- //implementation files('libs/CustomItems.jar')
-
- // Shaded
- implementation 'com.dfsek:Paralithic:0.4.0'
- implementation 'io.papermc:paperlib:1.0.5'
- implementation "net.kyori:adventure-text-minimessage:4.13.1"
- implementation 'net.kyori:adventure-platform-bukkit:4.3.0'
- implementation 'net.kyori:adventure-api:4.13.1'
- implementation 'io.lumine:Mythic-Dist:5.2.1'
-
- // Dynamically Loaded
- implementation 'io.timeandspace:smoothie-map:2.0.2'
- implementation 'it.unimi.dsi:fastutil:8.5.8'
- implementation 'com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2'
- implementation 'org.zeroturnaround:zt-zip:1.14'
- implementation 'com.google.code.gson:gson:2.9.0'
- implementation 'org.ow2.asm:asm:9.2'
- implementation 'com.google.guava:guava:31.1-jre'
- implementation 'bsf:bsf:2.4.0'
- implementation 'rhino:js:1.7R2'
- implementation 'com.github.ben-manes.caffeine:caffeine:3.0.6'
- implementation 'org.apache.commons:commons-lang3:3.12.0'
-}
-
-if (JavaVersion.current().toString() != "17") {
- System.err.println()
- System.err.println("=========================================================================================================")
- System.err.println("You must run gradle on Java 17. You are using " + JavaVersion.current())
- System.err.println()
- System.err.println("=== For IDEs ===")
- System.err.println("1. Configure the project for Java 17")
- System.err.println("2. Configure the bundled gradle to use Java 17 in settings")
- System.err.println()
- System.err.println("=== For Command Line (gradlew) ===")
- System.err.println("1. Install JDK 17 from https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html")
- System.err.println("2. Set JAVA_HOME environment variable to the new jdk installation folder such as C:\\Program Files\\Java\\jdk-17.0.1")
- System.err.println("3. Open a new command prompt window to get the new environment variables if need be.")
- System.err.println("=========================================================================================================")
- System.err.println()
- System.exit(69);
-}
-
-def buildToolsJar = new File(buildDir, "buildtools/BuildTools.jar");
-def specialSourceJar = new File(buildDir, "specialsource/SpecialSource.jar");
-def buildToolsFolder = new File(buildDir, "buildtools");
-def specialSourceFolder = new File(buildDir, "specialsource");
-def buildToolsHint = new File(buildDir, "buildtools/craftbukkit-" + nmsVersion + ".jar");
-def outputShadeJar = new File(buildDir, "libs/Iris-" + version + "-all.jar");
-def ssiJar = new File(buildDir, "specialsource/Iris-" + version + "-all.jar");
-def ssobfJar = new File(buildDir, "specialsource/Iris-" + version + "-rmo.jar");
-def ssJar = new File(buildDir, "specialsource/Iris-" + version + "-rma.jar");
-def homePath = System.properties['user.home']
-def m2 = new File(homePath + "/.m2/repository")
-def m2s = m2.getAbsolutePath();
-
-// ======================== Building Mapped Jars =============================
-task downloadBuildtools(type: Download) {
- group "remapping"
- src 'https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar'
- dest buildToolsJar
- onlyIf {
- !buildToolsJar.exists()
- }
-}
-
-task downloadSpecialSource(type: Download) {
- group "remapping"
- src 'https://repo.maven.apache.org/maven2/net/md-5/SpecialSource/' + specialSourceVersion + '/SpecialSource-'+specialSourceVersion+'-shaded.jar'
- dest specialSourceJar
- onlyIf {
- !specialSourceJar.exists()
- }
-}
-
-task executeBuildTools(dependsOn: downloadBuildtools, type: JavaExec)
-{
- group "remapping"
- classpath = files(buildToolsJar)
- workingDir = buildToolsFolder
- args = [
- "--rev",
- nmsVersion,
- "--compile",
- "craftbukkit",
- "--remap"
- ]
- onlyIf {
- !buildToolsHint.exists()
- }
-}
-
-task copyBuildToSpecialSource(type: Copy)
-{
- group "remapping"
- from outputShadeJar
- into specialSourceFolder
- dependsOn(downloadSpecialSource, shadowJar)
-}
-
-task specialSourceRemapObfuscate(type: JavaExec)
-{
- group "remapping"
- dependsOn(copyBuildToSpecialSource, downloadSpecialSource, shadowJar)
- workingDir = specialSourceFolder
- classpath = files(specialSourceJar,
- new File(m2s + "/org/spigotmc/spigot/" + spigotJarVersion + "/spigot-" + spigotJarVersion + "-remapped-mojang.jar"))
- mainClass = "net.md_5.specialsource.SpecialSource"
- args = [
- "--live",
- "-i",
- ssiJar.getName(),
- "-o",
- ssobfJar.getName(),
- "-m",
- m2s + "/org/spigotmc/minecraft-server/" + spigotJarVersion + "/minecraft-server-" + spigotJarVersion + "-maps-mojang.txt",
- "--reverse",
- ]
-}
-
-task specialSourceRemap(type: JavaExec)
-{
- group "remapping"
- dependsOn(specialSourceRemapObfuscate)
- workingDir = specialSourceFolder
- classpath = files(specialSourceJar,
- new File(m2s + "/org/spigotmc/spigot/" + spigotJarVersion + "/spigot-" + spigotJarVersion + "-remapped-obf.jar"))
- mainClass = "net.md_5.specialsource.SpecialSource"
- args = [
- "--live",
- "-i",
- ssobfJar.getName(),
- "-o",
- ssJar.getName(),
- "-m",
- m2s + "/org/spigotmc/minecraft-server/" + spigotJarVersion + "/minecraft-server-" + spigotJarVersion + "-maps-spigot.csrg"
- ]
-}
-
-tasks.compileJava.dependsOn(executeBuildTools)
-
-compileJava {
- options.encoding = "UTF-8"
-}
-
-task setup()
-{
- group("iris")
- dependsOn(clean, executeBuildTools)
-}
-
-task iris(type: Copy)
-{
- group "iris"
- from ssJar
- into buildDir
- rename { String fileName ->
- fileName.replace('Iris-' + version + '-rma.jar', "Iris-" + version + ".jar")
- }
- dependsOn(specialSourceRemap)
-}
-
-def registerCustomOutputTask(name, path) {
- if (!System.properties['os.name'].toLowerCase().contains('windows')) {
- return;
- }
-
- tasks.register('build' + name, Copy) {
- group('development')
- outputs.upToDateWhen { false }
- dependsOn(iris)
- from(new File(buildDir, "Iris-" + version + ".jar"))
- into(file(path))
- rename { String fileName ->
- fileName.replace("Iris-" + version + ".jar", "Iris.jar")
- }
- }
-}
-
-def registerCustomOutputTaskUnix(name, path) {
- if (System.properties['os.name'].toLowerCase().contains('windows')) {
- return;
- }
-
- tasks.register('build' + name, Copy) {
- group('development')
- outputs.upToDateWhen { false }
- dependsOn(iris)
- from(new File(buildDir, "Iris-" + version + ".jar"))
- into(file(path))
- rename { String fileName ->
- fileName.replace("Iris-" + version + ".jar", "Iris.jar")
- }
- }
-}
+/*
+ * Iris is a World Generator for Minecraft Bukkit Servers
+ * Copyright (c) 2021 Arcane Arts (Volmit Software)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+plugins {
+ id 'java'
+ id 'java-library'
+ id "io.freefair.lombok" version "6.3.0"
+ id "com.github.johnrengelman.shadow" version "7.1.2"
+ id "de.undercouch.download" version "5.0.1"
+}
+
+version '2.6.2-1.19.4'
+def nmsVersion = "1.19.4" //[NMS]
+def apiVersion = '1.19'
+def specialSourceVersion = '1.11.0' //[NMS]
+def spigotJarVersion = '1.19.4-R0.1-SNAPSHOT' //[NMS]
+def name = getRootProject().getName() // Defined in settings.gradle
+def main = 'com.volmit.iris.Iris'
+
+// ADD YOURSELF AS A NEW LINE IF YOU WANT YOUR OWN BUILD TASK GENERATED
+// ======================== WINDOWS =============================
+registerCustomOutputTask('Cyberpwn', 'C://Users/cyberpwn/Documents/development/server/plugins')
+registerCustomOutputTask('Psycho', 'C://Dan/MinecraftDevelopment/Server/plugins')
+registerCustomOutputTask('ArcaneArts', 'C://Users/arcane/Documents/development/server/plugins')
+registerCustomOutputTask('Coco', 'D://mcsm/plugins')
+registerCustomOutputTask('Strange', 'D://Servers/1.17 Test Server/plugins')
+registerCustomOutputTask('Vatuu', 'D://Minecraft/Servers/1.19.4/plugins')
+// ========================== UNIX ==============================
+registerCustomOutputTaskUnix('CyberpwnLT', '/Users/danielmills/development/server/plugins')
+registerCustomOutputTaskUnix('PsychoLT', '/Users/brianfopiano/Desktop/REMOTES/RemoteMinecraft/plugins')
+// ==============================================================
+
+/**
+ * Gradle is weird sometimes, we need to delete the plugin yml from the build folder to actually filter properly.
+ */
+file(jar.archiveFile.get().getAsFile().getParentFile().getParentFile().getParentFile().getAbsolutePath() + '/build/resources/main/plugin.yml').delete()
+
+/**
+ * Expand properties into plugin yml
+ */
+processResources {
+ filesMatching('**/plugin.yml') {
+ expand(
+ 'name': name.toString(),
+ 'version': version.toString(),
+ 'main': main.toString(),
+ 'apiversion': apiVersion.toString()
+ )
+ }
+}
+
+/**
+ * Unified repo
+ */
+repositories {
+ mavenLocal {
+ content {
+ includeGroup("org.bukkit")
+ includeGroup("org.spigotmc")
+ }
+ }
+ mavenCentral()
+ maven { url "https://arcanearts.jfrog.io/artifactory/archives" }
+ maven { url "https://mvn.lumine.io/repository/maven-public/" }
+ maven { url "https://jitpack.io"}
+
+ maven { url "https://s01.oss.sonatype.org/content/repositories/snapshots" }
+ maven { url "https://mvn.lumine.io/repository/maven/" }
+ maven { url "https://repo.triumphteam.dev/snapshots" }
+ maven { url "https://repo.mineinabyss.com/releases" }
+}
+
+/**
+ * We need parameter meta for the decree command system
+ */
+compileJava {
+ options.compilerArgs << '-parameters'
+}
+
+/**
+ * Configure Iris for shading
+ */
+shadowJar {
+ //minimize()
+ append("plugin.yml")
+ relocate 'com.dfsek.paralithic', 'com.volmit.iris.util.paralithic'
+ relocate 'io.papermc.lib', 'com.volmit.iris.util.paper'
+ relocate 'net.kyori', 'com.volmit.iris.util.kyori'
+ dependencies {
+ include(dependency('io.papermc:paperlib'))
+ include(dependency('com.dfsek:Paralithic'))
+ include(dependency('net.kyori:'))
+ }
+}
+
+configurations.all {
+ resolutionStrategy.cacheChangingModulesFor 60, 'minutes'
+ resolutionStrategy.cacheDynamicVersionsFor 60, 'minutes'
+}
+
+/**
+ * Dependencies.
+ *
+ * Provided or classpath dependencies are not shaded and are available on the runtime classpath
+ *
+ * Shaded dependencies are not available at runtime, nor are they available on mvn central so they
+ * need to be shaded into the jar (increasing binary size)
+ *
+ * Dynamically loaded dependencies are defined in the plugin.yml (updating these must be updated in the
+ * plugin.yml also, otherwise they wont be available). These do not increase binary size). Only declare
+ * these dependencies if they are available on mvn central.
+ */
+dependencies {
+ // Provided or Classpath
+ compileOnly 'org.projectlombok:lombok:1.18.24'
+ annotationProcessor 'org.projectlombok:lombok:1.18.24'
+ implementation 'org.spigotmc:spigot-api:1.19.4-R0.1-SNAPSHOT'
+ implementation 'org.bukkit:craftbukkit:1.19.4-R0.1-SNAPSHOT:remapped-mojang' //[NMS]
+
+ // Third Party Integrations
+ implementation 'com.github.oraxen:oraxen:1.152.5'
+ implementation 'com.github.LoneDev6:api-itemsadder:3.4.1-r4'
+ implementation 'me.clip:placeholderapi:2.11.3'
+ //implementation files('libs/CustomItems.jar')
+
+ // Shaded
+ implementation 'com.dfsek:Paralithic:0.4.0'
+ implementation 'io.papermc:paperlib:1.0.5'
+ implementation "net.kyori:adventure-text-minimessage:4.13.1"
+ implementation 'net.kyori:adventure-platform-bukkit:4.3.0'
+ implementation 'net.kyori:adventure-api:4.13.1'
+ implementation 'io.lumine:Mythic-Dist:5.2.1'
+
+ // Dynamically Loaded
+ implementation 'io.timeandspace:smoothie-map:2.0.2'
+ implementation 'it.unimi.dsi:fastutil:8.5.8'
+ implementation 'com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2'
+ implementation 'org.zeroturnaround:zt-zip:1.14'
+ implementation 'com.google.code.gson:gson:2.9.0'
+ implementation 'org.ow2.asm:asm:9.2'
+ implementation 'com.google.guava:guava:31.1-jre'
+ implementation 'bsf:bsf:2.4.0'
+ implementation 'rhino:js:1.7R2'
+ implementation 'com.github.ben-manes.caffeine:caffeine:3.0.6'
+ implementation 'org.apache.commons:commons-lang3:3.12.0'
+}
+
+if (JavaVersion.current().toString() != "17") {
+ System.err.println()
+ System.err.println("=========================================================================================================")
+ System.err.println("You must run gradle on Java 17. You are using " + JavaVersion.current())
+ System.err.println()
+ System.err.println("=== For IDEs ===")
+ System.err.println("1. Configure the project for Java 17")
+ System.err.println("2. Configure the bundled gradle to use Java 17 in settings")
+ System.err.println()
+ System.err.println("=== For Command Line (gradlew) ===")
+ System.err.println("1. Install JDK 17 from https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html")
+ System.err.println("2. Set JAVA_HOME environment variable to the new jdk installation folder such as C:\\Program Files\\Java\\jdk-17.0.1")
+ System.err.println("3. Open a new command prompt window to get the new environment variables if need be.")
+ System.err.println("=========================================================================================================")
+ System.err.println()
+ System.exit(69);
+}
+
+def buildToolsJar = new File(buildDir, "buildtools/BuildTools.jar");
+def specialSourceJar = new File(buildDir, "specialsource/SpecialSource.jar");
+def buildToolsFolder = new File(buildDir, "buildtools");
+def specialSourceFolder = new File(buildDir, "specialsource");
+def buildToolsHint = new File(buildDir, "buildtools/craftbukkit-" + nmsVersion + ".jar");
+def outputShadeJar = new File(buildDir, "libs/Iris-" + version + "-all.jar");
+def ssiJar = new File(buildDir, "specialsource/Iris-" + version + "-all.jar");
+def ssobfJar = new File(buildDir, "specialsource/Iris-" + version + "-rmo.jar");
+def ssJar = new File(buildDir, "specialsource/Iris-" + version + "-rma.jar");
+def homePath = System.properties['user.home']
+def m2 = new File(homePath + "/.m2/repository")
+def m2s = m2.getAbsolutePath();
+
+// ======================== Building Mapped Jars =============================
+task downloadBuildtools(type: Download) {
+ group "remapping"
+ src 'https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar'
+ dest buildToolsJar
+ onlyIf {
+ !buildToolsJar.exists()
+ }
+}
+
+task downloadSpecialSource(type: Download) {
+ group "remapping"
+ src 'https://repo.maven.apache.org/maven2/net/md-5/SpecialSource/' + specialSourceVersion + '/SpecialSource-'+specialSourceVersion+'-shaded.jar'
+ dest specialSourceJar
+ onlyIf {
+ !specialSourceJar.exists()
+ }
+}
+
+task executeBuildTools(dependsOn: downloadBuildtools, type: JavaExec)
+{
+ group "remapping"
+ classpath = files(buildToolsJar)
+ workingDir = buildToolsFolder
+ args = [
+ "--rev",
+ nmsVersion,
+ "--compile",
+ "craftbukkit",
+ "--remap"
+ ]
+ onlyIf {
+ !buildToolsHint.exists()
+ }
+}
+
+task copyBuildToSpecialSource(type: Copy)
+{
+ group "remapping"
+ from outputShadeJar
+ into specialSourceFolder
+ dependsOn(downloadSpecialSource, shadowJar)
+}
+
+task specialSourceRemapObfuscate(type: JavaExec)
+{
+ group "remapping"
+ dependsOn(copyBuildToSpecialSource, downloadSpecialSource, shadowJar)
+ workingDir = specialSourceFolder
+ classpath = files(specialSourceJar,
+ new File(m2s + "/org/spigotmc/spigot/" + spigotJarVersion + "/spigot-" + spigotJarVersion + "-remapped-mojang.jar"))
+ mainClass = "net.md_5.specialsource.SpecialSource"
+ args = [
+ "--live",
+ "-i",
+ ssiJar.getName(),
+ "-o",
+ ssobfJar.getName(),
+ "-m",
+ m2s + "/org/spigotmc/minecraft-server/" + spigotJarVersion + "/minecraft-server-" + spigotJarVersion + "-maps-mojang.txt",
+ "--reverse",
+ ]
+}
+
+task specialSourceRemap(type: JavaExec)
+{
+ group "remapping"
+ dependsOn(specialSourceRemapObfuscate)
+ workingDir = specialSourceFolder
+ classpath = files(specialSourceJar,
+ new File(m2s + "/org/spigotmc/spigot/" + spigotJarVersion + "/spigot-" + spigotJarVersion + "-remapped-obf.jar"))
+ mainClass = "net.md_5.specialsource.SpecialSource"
+ args = [
+ "--live",
+ "-i",
+ ssobfJar.getName(),
+ "-o",
+ ssJar.getName(),
+ "-m",
+ m2s + "/org/spigotmc/minecraft-server/" + spigotJarVersion + "/minecraft-server-" + spigotJarVersion + "-maps-spigot.csrg"
+ ]
+}
+
+tasks.compileJava.dependsOn(executeBuildTools)
+
+compileJava {
+ options.encoding = "UTF-8"
+}
+
+task setup()
+{
+ group("iris")
+ dependsOn(clean, executeBuildTools)
+}
+
+task iris(type: Copy)
+{
+ group "iris"
+ from ssJar
+ into buildDir
+ rename { String fileName ->
+ fileName.replace('Iris-' + version + '-rma.jar', "Iris-" + version + ".jar")
+ }
+ dependsOn(specialSourceRemap)
+}
+
+def registerCustomOutputTask(name, path) {
+ if (!System.properties['os.name'].toLowerCase().contains('windows')) {
+ return;
+ }
+
+ tasks.register('build' + name, Copy) {
+ group('development')
+ outputs.upToDateWhen { false }
+ dependsOn(iris)
+ from(new File(buildDir, "Iris-" + version + ".jar"))
+ into(file(path))
+ rename { String fileName ->
+ fileName.replace("Iris-" + version + ".jar", "Iris.jar")
+ }
+ }
+}
+
+def registerCustomOutputTaskUnix(name, path) {
+ if (System.properties['os.name'].toLowerCase().contains('windows')) {
+ return;
+ }
+
+ tasks.register('build' + name, Copy) {
+ group('development')
+ outputs.upToDateWhen { false }
+ dependsOn(iris)
+ from(new File(buildDir, "Iris-" + version + ".jar"))
+ into(file(path))
+ rename { String fileName ->
+ fileName.replace("Iris-" + version + ".jar", "Iris.jar")
+ }
+ }
+}
diff --git a/src/main/java/com/volmit/iris/Iris.java b/src/main/java/com/volmit/iris/Iris.java
index 33ba6e23a..f494c91ea 100644
--- a/src/main/java/com/volmit/iris/Iris.java
+++ b/src/main/java/com/volmit/iris/Iris.java
@@ -1,768 +1,771 @@
-/*
- * Iris is a World Generator for Minecraft Bukkit Servers
- * Copyright (c) 2022 Arcane Arts (Volmit Software)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package com.volmit.iris;
-
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParseException;
-import com.google.gson.JsonParser;
-import com.volmit.iris.core.IrisSettings;
-import com.volmit.iris.core.ServerConfigurator;
-import com.volmit.iris.core.link.IrisPapiExpansion;
-import com.volmit.iris.core.link.MultiverseCoreLink;
-import com.volmit.iris.core.link.MythicMobsLink;
-import com.volmit.iris.core.loader.IrisData;
-import com.volmit.iris.core.nms.INMS;
-import com.volmit.iris.core.nms.v19_4.NMSBinding19_4;
-import com.volmit.iris.core.pregenerator.LazyPregenerator;
-import com.volmit.iris.core.service.StudioSVC;
-import com.volmit.iris.core.tools.IrisToolbelt;
-import com.volmit.iris.engine.EnginePanic;
-import com.volmit.iris.engine.object.IrisCompat;
-import com.volmit.iris.engine.object.IrisDimension;
-import com.volmit.iris.engine.object.IrisWorld;
-import com.volmit.iris.engine.platform.BukkitChunkGenerator;
-import com.volmit.iris.engine.platform.DummyChunkGenerator;
-import com.volmit.iris.util.collection.KList;
-import com.volmit.iris.util.collection.KMap;
-import com.volmit.iris.util.exceptions.IrisException;
-import com.volmit.iris.util.format.C;
-import com.volmit.iris.util.format.Form;
-import com.volmit.iris.util.function.NastyRunnable;
-import com.volmit.iris.util.io.FileWatcher;
-import com.volmit.iris.util.io.IO;
-import com.volmit.iris.util.io.InstanceState;
-import com.volmit.iris.util.io.JarScanner;
-import com.volmit.iris.util.math.M;
-import com.volmit.iris.util.math.RNG;
-import com.volmit.iris.util.parallel.MultiBurst;
-import com.volmit.iris.util.plugin.IrisService;
-import com.volmit.iris.util.plugin.Metrics;
-import com.volmit.iris.util.plugin.VolmitPlugin;
-import com.volmit.iris.util.plugin.VolmitSender;
-import com.volmit.iris.util.reflect.ShadeFix;
-import com.volmit.iris.util.scheduling.J;
-import com.volmit.iris.util.scheduling.Queue;
-import com.volmit.iris.util.scheduling.ShurikenQueue;
-import io.papermc.lib.PaperLib;
-import net.kyori.adventure.platform.bukkit.BukkitAudiences;
-import net.kyori.adventure.text.serializer.ComponentSerializer;
-import org.bukkit.*;
-import org.bukkit.block.data.BlockData;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandSender;
-import org.bukkit.configuration.ConfigurationSection;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.configuration.file.YamlConfiguration;
-import org.bukkit.entity.Player;
-import org.bukkit.event.Event;
-import org.bukkit.event.HandlerList;
-import org.bukkit.event.Listener;
-import org.bukkit.generator.BiomeProvider;
-import org.bukkit.generator.ChunkGenerator;
-import org.bukkit.plugin.IllegalPluginAccessException;
-import org.bukkit.plugin.Plugin;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.io.*;
-import java.lang.annotation.Annotation;
-import java.net.URL;
-import java.util.Date;
-import java.util.Map;
-
-@SuppressWarnings("CanBeFinal")
-public class Iris extends VolmitPlugin implements Listener {
- public static final String OVERWORLD_TAG = "3002";
-
- private static final Queue syncJobs = new ShurikenQueue<>();
-
- public static Iris instance;
- public static BukkitAudiences audiences;
- public static MultiverseCoreLink linkMultiverseCore;
- public static MythicMobsLink linkMythicMobs;
- public static IrisCompat compat;
- public static FileWatcher configWatcher;
- private static VolmitSender sender;
-
- static {
- try {
- fixShading();
- InstanceState.updateInstanceId();
- } catch (Throwable ignored) {
-
- }
- }
-
- private final KList postShutdown = new KList<>();
- private KMap, IrisService> services;
-
- public static VolmitSender getSender() {
- return sender;
- }
-
- @SuppressWarnings("unchecked")
- public static T service(Class c) {
- return (T) instance.services.get(c);
- }
-
- public static void callEvent(Event e) {
- if (!e.isAsynchronous()) {
- J.s(() -> Bukkit.getPluginManager().callEvent(e));
- } else {
- Bukkit.getPluginManager().callEvent(e);
- }
- }
-
- public static KList