diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 412eeda7..00000000 --- a/.gitattributes +++ /dev/null @@ -1,22 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Custom for Visual Studio -*.cs diff=csharp -*.sln merge=union -*.csproj merge=union -*.vbproj merge=union -*.fsproj merge=union -*.dbproj merge=union - -# Standard to msysgit -*.doc diff=astextplain -*.DOC diff=astextplain -*.docx diff=astextplain -*.DOCX diff=astextplain -*.dot diff=astextplain -*.DOT diff=astextplain -*.pdf diff=astextplain -*.PDF diff=astextplain -*.rtf diff=astextplain -*.RTF diff=astextplain diff --git a/.github/scripts/test-no-crash-reports.sh b/.github/scripts/test-no-crash-reports.sh new file mode 100644 index 00000000..c67e342c --- /dev/null +++ b/.github/scripts/test-no-crash-reports.sh @@ -0,0 +1,9 @@ +directory="run/crash-reports" +if [ -d $directory ]; then + echo "Crash reports detected:" + cat $directory/* + exit 1 +else + echo "No crash reports detected" + exit 0 +fi diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml new file mode 100644 index 00000000..6c9b3cbc --- /dev/null +++ b/.github/workflows/build-and-test.yml @@ -0,0 +1,45 @@ +# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle + +name: Build and test + +on: + pull_request: + branches: [ master, main ] + push: + branches: [ master, main ] + +jobs: + build-and-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Set up JDK 8 + uses: actions/setup-java@v2 + with: + java-version: '8' + distribution: 'adopt' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Setup the workspace + run: ./gradlew setupCIWorkspace + + - name: Build the mod + run: ./gradlew build + + - name: Run server for 1 minute + run: | + mkdir run + echo "eula=true" > run/eula.txt + timeout 10 ./gradlew runServer || true + + - name: Test no crashes happend + run: | + chmod +x .github/scripts/test-no-crash-reports.sh + .github/scripts/test-no-crash-reports.sh diff --git a/.github/workflows/release-latest.yml b/.github/workflows/release-latest.yml new file mode 100644 index 00000000..5ecccc04 --- /dev/null +++ b/.github/workflows/release-latest.yml @@ -0,0 +1,44 @@ +# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle + +name: Release latest build + +on: + push: + branches: [ master, main ] + +jobs: + build-and-release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Set release version + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + + - name: Set up JDK 8 + uses: actions/setup-java@v2 + with: + java-version: '8' + distribution: 'adopt' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Setup the workspace + run: ./gradlew setupCIWorkspace + + - name: Build the mod + run: ./gradlew build + + - name: Update latest tag + uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "latest" + prerelease: false + title: "Latest build" + files: build/libs/*.jar diff --git a/.github/workflows/release-tags.yml b/.github/workflows/release-tags.yml new file mode 100644 index 00000000..25c354b2 --- /dev/null +++ b/.github/workflows/release-tags.yml @@ -0,0 +1,45 @@ +# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle + +name: Release tagged build + +on: + push: + tags: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Set release version + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + + - name: Set up JDK 8 + uses: actions/setup-java@v2 + with: + java-version: '8' + distribution: 'adopt' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Setup the workspace + run: ./gradlew setupCIWorkspace + + - name: Build the mod + run: ./gradlew build + + - name: Release under current tag + uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "${{ env.RELEASE_VERSION }}" + prerelease: false + title: "${{ env.RELEASE_VERSION }}" + files: build/libs/*.jar diff --git a/.gitignore b/.gitignore index 71aef0cd..558ad12d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,31 +1,28 @@ -#ant stuff -build.xml -/bin/ -/download/ -#Remove OS generated garbage -*/.DS_Store -.DS_Store -.DS_Store? -.Spotlight-V100 -.Trashes -Icon? -ehthumbs.db -Thumbs.db -#gradle stuff -/.gradle -/build/ +.gradle +.settings +/.idea/ /run/ -#IDEA files from Gradle -.idea/ -/*.iml -/*.ipr -/*.iws -#Vim backups -*~ -#eclipse stuffs -/.classpath -/.project -/.settings/ -#gradle stuff +/build/ /eclipse/ -*.bat +.classpath +.project +/bin/ +/config/ +/crash-reports/ +/logs/ +options.txt +/saves/ +usernamecache.json +banned-ips.json +banned-players.json +eula.txt +ops.json +server.properties +servers.dat +usercache.json +whitelist.json +/out/ +*.iml +*.ipr +*.iws +src/main/resources/mixins.*.json diff --git a/build.gradle b/build.gradle index 6f7cedb5..3e425e62 100644 --- a/build.gradle +++ b/build.gradle @@ -1,138 +1,524 @@ +//version: a553e159ecaf0fc236cf25b2c124ea90f92bb140 /* - * Natura - * Master build file - * Based on TConstruct's master build file - * Authors: Sunstrike, ProgWML6 - * Help from AbrarSyed +DO NOT CHANGE THIS FILE! + +Also, you may replace this file at any time if there is an update available. +Please check https://github.com/SinTh0r4s/ExampleMod1.7.10/blob/main/build.gradle for updates. */ + +import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + +import java.util.concurrent.TimeUnit + buildscript { repositories { maven { - name = "mavenCentral" - url = "https://repo1.maven.org/maven2/" + name = "forge" + url = "https://maven.minecraftforge.net" } maven { - name = 'ForgeFS' - url = 'http://files.minecraftforge.net/maven' - } - maven { name = "sonatype" url = "https://oss.sonatype.org/content/repositories/snapshots/" } - + maven { + name = "Scala CI dependencies" + url = "https://repo1.maven.org/maven2/" + } + maven { + name = "jitpack" + url = "https://jitpack.io" + } } dependencies { - classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' + classpath 'com.github.GTNewHorizons:ForgeGradle:1.2.4' } } +plugins { + id 'idea' + id 'scala' + id("org.ajoberstar.grgit") version("3.1.1") + id("com.github.johnrengelman.shadow") version("4.0.4") + id("com.palantir.git-version") version("0.12.3") +} -repositories { - maven { - name 'CB Maven FS' - url "http://chickenbones.net/maven/" +apply plugin: 'forge' + +def projectJavaVersion = JavaLanguageVersion.of(8) + +java { + toolchain { + languageVersion.set(projectJavaVersion) } - maven { - name "ProfMobius Maven FS" - url "http://mobiusstrip.eu/maven" +} + +idea { + module { + inheritOutputDirs = true + downloadJavadoc = true + downloadSources = true } - maven { - name 'DVS1 Maven FS' - url 'http://dvs1.progwml6.com/files/maven' +} + +checkPropertyExists("modName") +checkPropertyExists("modId") +checkPropertyExists("modGroup") +checkPropertyExists("autoUpdateBuildScript") +checkPropertyExists("minecraftVersion") +checkPropertyExists("forgeVersion") +checkPropertyExists("replaceGradleTokenInFile") +checkPropertyExists("gradleTokenModId") +checkPropertyExists("gradleTokenModName") +checkPropertyExists("gradleTokenVersion") +checkPropertyExists("gradleTokenGroupName") +checkPropertyExists("apiPackage") +checkPropertyExists("accessTransformersFile") +checkPropertyExists("usesMixins") +checkPropertyExists("mixinPlugin") +checkPropertyExists("mixinsPackage") +checkPropertyExists("coreModClass") +checkPropertyExists("containsMixinsAndOrCoreModOnly") +checkPropertyExists("usesShadowedDependencies") +checkPropertyExists("developmentEnvironmentUserName") + +def checkPropertyExists(String propertyName) { + if (project.hasProperty(propertyName) == false) { + throw new GradleException("This project requires a property \"" + propertyName + "\"! Please add it your \"gradle.properties\". You can find all properties and their description here: https://github.com/SinTh0r4s/ExampleMod1.7.10/blob/main/gradle.properties") } - maven { - name 'ForgeFS' - url 'http://files.minecraftforge.net/maven' +} + + +String javaSourceDir = "src/main/java/" +String scalaSourceDir = "src/main/scala/" + +String targetPackageJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") +String targetPackageScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") +if((new File(targetPackageJava).exists() || new File(targetPackageScala).exists()) == false) { + throw new GradleException("Could not resolve \"modGroup\"! Could not find " + targetPackageJava + " or " + targetPackageScala) +} + +if(apiPackage) { + targetPackageJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString().replaceAll("\\.", "/") + targetPackageScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString().replaceAll("\\.", "/") + if((new File(targetPackageJava).exists() || new File(targetPackageScala).exists()) == false) { + throw new GradleException("Could not resolve \"apiPackage\"! Could not find " + targetPackageJava + " or " + targetPackageScala) } } +if(accessTransformersFile) { + String targetFile = "src/main/resources/META-INF/" + accessTransformersFile + if(new File(targetFile).exists() == false) { + throw new GradleException("Could not resolve \"accessTransformersFile\"! Could not find " + targetFile) + } +} -apply plugin: 'forge' +if(usesMixins.toBoolean()) { + if(mixinsPackage.isEmpty() || mixinPlugin.isEmpty()) { + throw new GradleException("\"mixinPlugin\" requires \"mixinsPackage\" and \"mixinPlugin\" to be set!") + } -sourceCompatibility = 1.6 -targetCompatibility = 1.6 + targetPackageJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinsPackage.toString().replaceAll("\\.", "/") + targetPackageScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinsPackage.toString().replaceAll("\\.", "/") + if((new File(targetPackageJava).exists() || new File(targetPackageScala).exists()) == false) { + throw new GradleException("Could not resolve \"mixinsPackage\"! Could not find " + targetPackageJava + " or " + targetPackageScala) + } -group = 'mods.natura' + String targetFileJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinPlugin.toString().replaceAll("\\.", "/") + ".java" + String targetFileScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinPlugin.toString().replaceAll("\\.", "/") + ".scala" + String targetFileScalaJava = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinPlugin.toString().replaceAll("\\.", "/") + ".java" + if((new File(targetFileJava).exists() || new File(targetFileScala).exists() || new File(targetFileScalaJava).exists()) == false) { + throw new GradleException("Could not resolve \"mixinPlugin\"! Could not find " + targetFileJava + " or " + targetFileScala + " or " + targetFileScalaJava) + } +} -// define the properties file -ext.configFile = file "build.properties" +if(coreModClass) { + String targetFileJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + coreModClass.toString().replaceAll("\\.", "/") + ".java" + String targetFileScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + coreModClass.toString().replaceAll("\\.", "/") + ".scala" + String targetFileScalaJava = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + coreModClass.toString().replaceAll("\\.", "/") + ".java" + if((new File(targetFileJava).exists() || new File(targetFileScala).exists() || new File(targetFileScalaJava).exists()) == false) { + throw new GradleException("Could not resolve \"coreModClass\"! Could not find " + targetFileJava + " or " + targetFileScala + " or " + targetFileScalaJava) + } +} -configFile.withReader { - // read config. it shall from now on be referenced as simply config or as project.config - def prop = new Properties() - prop.load(it) - project.ext.config = new ConfigSlurper().parse prop +configurations.all { + resolutionStrategy.cacheChangingModulesFor(0, TimeUnit.SECONDS) + + // Make sure GregTech build won't time out + System.setProperty("org.gradle.internal.http.connectionTimeout", 120000 as String) + System.setProperty("org.gradle.internal.http.socketTimeout", 120000 as String) +} + +// Fix Jenkins' Git: chmod a file should not be detected as a change and append a '.dirty' to the version +'git config core.fileMode false'.execute() +// Pulls version from git tag +version = minecraftVersion + "-" + gitVersion() +group = modGroup +archivesBaseName = modId + +minecraft { + version = minecraftVersion + "-" + forgeVersion + "-" + minecraftVersion + runDir = "run" + + if (replaceGradleTokenInFile) { + replaceIn replaceGradleTokenInFile + if(gradleTokenModId) { + replace gradleTokenModId, modId + } + if(gradleTokenModName) { + replace gradleTokenModName, modName + } + if(gradleTokenVersion) { + replace gradleTokenVersion, versionDetails().lastTag + } + if(gradleTokenGroupName) { + replace gradleTokenGroupName, modGroup + } + } +} + +if(file("addon.gradle").exists()) { + apply from: "addon.gradle" +} + +apply from: 'repositories.gradle' + +configurations { + implementation.extendsFrom(shadowImplementation) +} + +repositories { + maven { + name = "Overmind forge repo mirror" + url = "https://gregtech.overminddl1.com/" + } + if(usesMixins.toBoolean()) { + maven { + name = "sponge" + url = "https://repo.spongepowered.org/repository/maven-public" + } + maven { + url = "https://jitpack.io" + } + } } dependencies { - compile "mantle:Mantle:${config.minecraft_version}-${config.mantle_version}:deobf" - compile "tconstruct:TConstruct:${config.minecraft_version}-${config.tconstruct_version}:deobf" - compile "codechicken:CodeChickenLib:${config.minecraft_version}-${config.CCLIB_version}:dev" - compile "codechicken:ForgeMultipart:${config.minecraft_version}-${config.FMP_version}:dev" - compile "codechicken:CodeChickenCore:${config.minecraft_version}-${config.ccc_version}:dev" - compile "codechicken:NotEnoughItems:${config.minecraft_version}-${config.NEI_version}:dev" + if(usesMixins.toBoolean()) { + annotationProcessor("org.ow2.asm:asm-debug-all:5.0.3") + annotationProcessor("com.google.guava:guava:24.1.1-jre") + annotationProcessor("com.google.code.gson:gson:2.8.6") + annotationProcessor("org.spongepowered:mixin:0.8-SNAPSHOT") + // using 0.8 to workaround a issue in 0.7 which fails mixin application + compile("org.spongepowered:mixin:0.7.11-SNAPSHOT") { + // Mixin includes a lot of dependencies that are too up-to-date + exclude module: "launchwrapper" + exclude module: "guava" + exclude module: "gson" + exclude module: "commons-io" + exclude module: "log4j-core" + } + compile("com.github.GTNewHorizons:SpongeMixins:1.3.3:dev") + } } -minecraft { - version = config.minecraft_version + "-" + config.forge_version - runDir = 'run' +apply from: 'dependencies.gradle' + +def mixingConfigRefMap = "mixins." + modId + ".refmap.json" +def refMap = "${tasks.compileJava.temporaryDir}" + File.separator + mixingConfigRefMap +def mixinSrg = "${tasks.reobf.temporaryDir}" + File.separator + "mixins.srg" + +task generateAssets { + if(usesMixins.toBoolean()) { + new File(projectDir.toString() + "/src/main/resources/", "mixins." + modId + ".json").text = """{ + "required": true, + "minVersion": "0.7.11", + "package": "${modGroup}.${mixinsPackage}", + "plugin": "${modGroup}.${mixinPlugin}", + "refmap": "${mixingConfigRefMap}", + "target": "@env(DEFAULT)", + "compatibilityLevel": "JAVA_8" } -// sets version to the slimeKnights version format -task buildInfo { - def cmd = "git rev-parse --short HEAD" - def proc = cmd.execute() - proc.waitFor() - if (proc.exitValue() == 0) { - ext.revision = proc.text.trim() - } else { - ext.revision = "GITBORK" +""" } +} - if (System.getenv().BUILD_NUMBER != null) { - ext.buildNum = System.getenv().BUILD_NUMBER - } else { - ext.buildNum = "DEV" +task relocateShadowJar(type: ConfigureShadowRelocation) { + target = tasks.shadowJar + prefix = modGroup + ".shadow" +} + +shadowJar { + manifest { + attributes(getManifestAttributes()) } + + minimize() // This will only allow shading for actually used classes + configurations = [project.configurations.shadowImplementation] + dependsOn(relocateShadowJar) } -version = "1-7.10-2.4.2-dev" -sourceSets { - main { - resources { - srcDir 'resources' +jar { + manifest { + attributes(getManifestAttributes()) + } + + if(usesShadowedDependencies.toBoolean()) { + dependsOn(shadowJar) + enabled = false + } +} + +reobf { + if(usesMixins.toBoolean()) { + addExtraSrgFile mixinSrg + } +} + +afterEvaluate { + if(usesMixins.toBoolean()) { + tasks.compileJava { + options.compilerArgs += [ + "-AreobfSrgFile=${tasks.reobf.srg}", + "-AoutSrgFile=${mixinSrg}", + "-AoutRefMapFile=${refMap}", + // Elan: from what I understand they are just some linter configs so you get some warning on how to properly code + "-XDenableSunApiLintControl", + "-XDignore.symbol.file" + ] } } } + +runClient { + def arguments = [] + + if(usesMixins.toBoolean()) { + arguments += [ + "--mods=../build/libs/$modId-${version}.jar", + "--tweakClass org.spongepowered.asm.launch.MixinTweaker" + ] + } + + if(developmentEnvironmentUserName) { + arguments += [ + "--username", + developmentEnvironmentUserName + ] + } + + args(arguments) +} + +runServer { + def arguments = [] + + if (usesMixins.toBoolean()) { + arguments += [ + "--mods=../build/libs/$modId-${version}.jar", + "--tweakClass org.spongepowered.asm.launch.MixinTweaker" + ] + } + + args(arguments) +} + +tasks.withType(JavaExec).configureEach { + javaLauncher.set( + javaToolchains.launcherFor { + languageVersion = projectJavaVersion + } + ) +} + processResources -{ - // replace stuff in text files, not binary ones. - from(sourceSets.main.resources.srcDirs) { - include '**/*.info' - - // replace version and MCVersion - expand 'version':project.version, 'mcversion':project.minecraft.version + { + // this will ensure that this task is redone when the versions change. + inputs.property "version", project.version + inputs.property "mcversion", project.minecraft.version + + // replace stuff in mcmod.info, nothing else + from(sourceSets.main.resources.srcDirs) { + include 'mcmod.info' + + // replace version and mcversion + expand "minecraftVersion": project.minecraft.version, + "modVersion": versionDetails().lastTag, + "modId": modId, + "modName": modName + } + + if(usesMixins.toBoolean()) { + from refMap + } + + // copy everything else, thats not the mcmod.info + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } + } + +def getManifestAttributes() { + def manifestAttributes = [:] + if(containsMixinsAndOrCoreModOnly.toBoolean() == false && (usesMixins.toBoolean() || coreModClass)) { + manifestAttributes += ["FMLCorePluginContainsFMLMod": true] + } + + if(accessTransformersFile) { + manifestAttributes += ["FMLAT" : accessTransformersFile.toString()] + } + + if(coreModClass) { + manifestAttributes += ["FMLCorePlugin": modGroup + "." + coreModClass] } - - // copy everything else, thats not text - from(sourceSets.main.resources.srcDirs) { - exclude '**/*.info' + + if(usesMixins.toBoolean()) { + manifestAttributes += [ + "TweakClass" : "org.spongepowered.asm.launch.MixinTweaker", + "MixinConfigs" : "mixins." + modId + ".json", + "ForceLoadAsMod" : containsMixinsAndOrCoreModOnly.toBoolean() == false + ] + } + return manifestAttributes +} + +task sourcesJar(type: Jar) { + from (sourceSets.main.allJava) + from (file("$projectDir/LICENSE")) + getArchiveClassifier().set('sources') +} + +task shadowDevJar(type: ShadowJar) { + from sourceSets.main.output + getArchiveClassifier().set("dev") + + manifest { + attributes(getManifestAttributes()) } + + minimize() // This will only allow shading for actually used classes + configurations = [project.configurations.shadowImplementation] +} + +task relocateShadowDevJar(type: ConfigureShadowRelocation) { + target = tasks.shadowDevJar + prefix = modGroup + ".shadow" +} + +task circularResolverJar(type: Jar) { + dependsOn(relocateShadowDevJar) + dependsOn(shadowDevJar) + enabled = false } -// because the normal output has been made to be obfuscated -task devjar(type: Jar) { +task devJar(type: Jar) { from sourceSets.main.output - classifier = 'deobf' + getArchiveClassifier().set("dev") + + manifest { + attributes(getManifestAttributes()) + } + + if(usesShadowedDependencies.toBoolean()) { + dependsOn(circularResolverJar) + enabled = false + } } -task sourcesjar(type: Jar) { - from sourceSets.main.allJava - classifier = 'sources' +task apiJar(type: Jar) { + from (sourceSets.main.allJava) { + include modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString() + '/**' + } + + from (sourceSets.main.output) { + include modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString() + '/**' + } + + from (sourceSets.main.resources.srcDirs) { + include("LICENSE") + } + + getArchiveClassifier().set('api') } artifacts { - archives devjar - archives sourcesjar + archives sourcesJar + archives devJar + if(apiPackage) { + archives apiJar + } +} + +// Crude handler to append custom maven repositories to maven dependency +install{ + repositories{ + mavenInstaller{ + pom.withXml { + def repositoriesNode = asNode().appendNode("repositories") + project.repositories.each { repository -> + def repositoryNode = repositoriesNode.appendNode("repository") + repositoryNode.appendNode("name", repository.name) + repositoryNode.appendNode("url", repository.properties.get("url")) + } + } + } + } +} + +// Updating +task updateBuildScript { + doLast { + if (updateBuildScript()) return + + print("Build script already up-to-date!") + } +} + +if (isNewBuildScriptVersionAvailable()) { + if (autoUpdateBuildScript.toBoolean()) { + updateBuildScript() + } else { + println("Build script update available! Run 'gradle updateBuildScript'") + } +} + +static URL availableBuildScriptUrl() { + new URL("https://raw.githubusercontent.com/SinTh0r4s/ExampleMod1.7.10/main/build.gradle") +} + +static boolean updateBuildScript() { + if (isNewBuildScriptVersionAvailable()) { + def buildscriptFile = new File("build.gradle") + availableBuildScriptUrl().withInputStream { i -> buildscriptFile.withOutputStream { it << i } } + print("Build script updated. Please REIMPORT the project or RESTART your IDE!") + return true + } + return false +} + +static boolean isNewBuildScriptVersionAvailable() { + Map parameters = ["connectTimeout": 2000, "readTimeout": 2000] + + String currentBuildScript = new File("build.gradle").getText() + String currentBuildScriptHash = getVersionHash(currentBuildScript) + String availableBuildScript = availableBuildScriptUrl().newInputStream(parameters).getText() + String availableBuildScriptHash = getVersionHash(availableBuildScript) + + boolean isUpToDate = currentBuildScriptHash.empty || availableBuildScriptHash.empty || currentBuildScriptHash == availableBuildScriptHash + return !isUpToDate +} + +static String getVersionHash(String buildScriptContent) { + String versionLine = buildScriptContent.find("^//version: [a-z0-9]*") + if(versionLine != null) { + return versionLine.split(": ").last() + } + return "" +} + +configure(updateBuildScript) { + group = 'forgegradle' + description = 'Updates the build script to the latest version' } diff --git a/build.properties b/build.properties deleted file mode 100644 index 0e938286..00000000 --- a/build.properties +++ /dev/null @@ -1,8 +0,0 @@ -minecraft_version=1.7.10 -forge_version=10.13.4.1614-1.7.10 -mantle_version=0.3.2.jenkins190 -tconstruct_version=1.8.7.build981 -FMP_version=1.2.0.345 -CCLIB_version=1.1.3.140 -NEI_version=1.0.5.120 -ccc_version=1.0.7.47 diff --git a/dependencies.gradle b/dependencies.gradle new file mode 100644 index 00000000..ff46b0aa --- /dev/null +++ b/dependencies.gradle @@ -0,0 +1,26 @@ +// Add your dependencies here + +dependencies { + + compile("com.github.GTNewHorizons:Mantle:master-SNAPSHOT:dev") + + compileOnly("com.github.GTNewHorizons:waila:master-SNAPSHOT:dev") { + transitive = false + } + compileOnly("com.github.GTNewHorizons:ForgeMultipart:master-SNAPSHOT:dev") { + transitive = false + } + compileOnly("com.github.GTNewHorizons:NotEnoughItems:master-SNAPSHOT:dev") { + transitive = false + } + compileOnly("com.github.GTNewHorizons:TinkersConstruct:master-SNAPSHOT:dev") { + transitive = false + } + + compileOnly("curse.maven:minefactory-reloaded-66672:2366150") { + transitive = false + } + compileOnly("thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev") { + transitive = false + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..406a2c66 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,60 @@ +modName = Natura + +# This is a case-sensitive string to identify your mod. Convention is to use lower case. +modId = Natura + +modGroup = mods.natura + +# WHY is there no version field? +# The build script relies on git to provide a version via tags. It is super easy and will enable you to always know the +# code base or your binary. Check out this tutorial: https://blog.mattclemente.com/2017/10/13/versioning-with-git-tags/ + +# Will update your build.gradle automatically whenever an update is available +autoUpdateBuildScript = false + +minecraftVersion = 1.7.10 +forgeVersion = 10.13.4.1614 + +# Select a username for testing your mod with breakpoints. You may leave this empty for a random user name each time you +# restart Minecraft in development. Choose this dependent on your mod: +# Do you need consistent player progressing (for example Thaumcraft)? -> Select a name +# Do you need to test how your custom blocks interacts with a player that is not the owner? -> leave name empty +developmentEnvironmentUserName = "Developer" + +# Define a source file of your project with: +# public static final String VERSION = "GRADLETOKEN_VERSION"; +# The string's content will be replaced with your mods version when compiled. You should use this to specify your mod's +# version in @Mod([...], version = VERSION, [...]) +# Leave these properties empty to skip individual token replacements +replaceGradleTokenInFile = Natura.java +gradleTokenModId = +gradleTokenModName = +gradleTokenVersion = GRADLETOKEN_VERSION +gradleTokenGroupName = + +# In case your mod provides an API for other mods to implement you may declare its package here. Otherwise you can +# leave this property empty. +# Example value: apiPackage = api + modGroup = com.myname.mymodid -> com.myname.mymodid.api +apiPackage = + +# Specify the configuration file for Forge's access transformers here. I must be placed into /src/main/resources/META-INF/ +# Example value: mymodid_at.cfg +accessTransformersFile = + +# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled! +usesMixins = false +# Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise. +mixinPlugin = +# Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail! +mixinsPackage = +# Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin! +# This parameter is for legacy compatability only +# Example value: coreModClass = asm.FMLPlugin + modGroup = com.myname.mymodid -> com.myname.mymodid.asm.FMLPlugin +coreModClass = +# If your project is only a consolidation of mixins or a core mod and does NOT contain a 'normal' mod ( = some class +# that is annotated with @Mod) you want this to be true. When in doubt: leave it on false! +containsMixinsAndOrCoreModOnly = false + +# If enabled, you may use 'shadowImplementation' for dependencies. They will be integrated in your jar. It is your +# responsibility check the licence and request permission for distribution, if required. +usesShadowedDependencies = false diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 3baa851b..5c2d1cf0 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3fb50dd7..3ab0b725 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Sat Jan 04 01:56:22 CET 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-bin.zip diff --git a/gradlew b/gradlew index 27309d92..83f2acfd 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,20 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## ## @@ -28,16 +44,16 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -109,8 +125,8 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` JAVACMD=`cygpath --unix "$JAVACMD"` @@ -154,11 +170,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 832fdb60..9618d8d9 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -14,7 +30,7 @@ set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -49,7 +65,6 @@ goto fail @rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -60,11 +75,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line diff --git a/jitpack.yml b/jitpack.yml new file mode 100644 index 00000000..09bbb514 --- /dev/null +++ b/jitpack.yml @@ -0,0 +1,2 @@ +before_install: + - ./gradlew setupCIWorkspace \ No newline at end of file diff --git a/repositories.gradle b/repositories.gradle new file mode 100644 index 00000000..c58a9d10 --- /dev/null +++ b/repositories.gradle @@ -0,0 +1,10 @@ +// Add any additional repositiroes for your dependencies here + +repositories { + maven { + url "https://cursemaven.com" + } + maven { + url = "https://jitpack.io" + } +} diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 2dbece48..00000000 --- a/settings.gradle +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This settings file was auto generated by the Gradle buildInit task - * by 'sunstrike' at '21/11/13 14:14' with Gradle 1.9 - * - * The settings file is used to specify which projects to include in your build. - * In a single project build this file can be empty or even removed. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user guide at http://gradle.org/docs/1.9/userguide/multi_project_builds.html - */ - -/* -// To declare projects as part of a multi-project build use the 'include' method -include 'shared' -include 'api' -include 'services:webservice' -*/ - -rootProject.name = 'natura' diff --git a/src/api/java/mcp/mobius/waila/api/IWailaBlock.java b/src/api/java/mcp/mobius/waila/api/IWailaBlock.java deleted file mode 100644 index 8b4dd131..00000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaBlock.java +++ /dev/null @@ -1,34 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -@Deprecated -public interface IWailaBlock { - /* - * Use this method to return an item stack in case the default lookup system fails. - * Return null if you want to use the default lookup system. - * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities - */ - ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); - - /* Waila HUD is divided into 3 zones. The head corresponds to the item name, - * body to where you mostly want to put informations, and I reserve the tail for modname display - */ - - /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. - * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). - * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. - * currenttip represents the current list of text lines in the tooltip zone. - * For example, getWailaHead() will have the current item name as currenttip. - * You can modify the tips, add more, remove some, etc. - * When you are done, just returns the currenttip and it will display in Waila. - * - * Always return the currenttip is you don't want to modify the current zone. - */ - - List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); - List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); - List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java b/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java deleted file mode 100644 index 935d475f..00000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java +++ /dev/null @@ -1,9 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.item.ItemStack; - -public interface IWailaBlockDecorator { - - void decorateBlock(ItemStack itemStack, IWailaDataAccessor accessor, IWailaConfigHandler config); - -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java b/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java deleted file mode 100644 index faede63f..00000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.HashMap; -import java.util.Set; - -public interface IWailaConfigHandler { - /* Returns a set of all the currently loaded modules in the config handler */ - public Set getModuleNames(); - - /* Returns all the currently available options for a given module */ - public HashMap getConfigKeys(String modName); - - /* Add a new option to a given module - * - * modName is the name of the module to add the option to (ie : Buildcraft, IndustrialCraft2, etc) - * key is the config key (ie : bc.tankcontent, ic2.inputvalue) - * name is the human readable name of the option (ie : "Tank content", "Max EU Input") - * */ - //public void addConfig(String modName, String key, String name); - - /* Returns the current value of an option (true/false) with a default value defvalue if not set*/ - public boolean getConfig(String key, boolean defvalue); - - /* Returns the current value of an option (true/false) with a default value true if not set*/ - public boolean getConfig(String key); - - //public void setConfig(String key, boolean value); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java deleted file mode 100644 index 02886248..00000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java +++ /dev/null @@ -1,33 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -/* The Accessor is used to get some basic data out of the game without having to request - * direct access to the game engine. - * It will also return things that are unmodified by the overriding systems (like getWailaStack). - */ - -public interface IWailaDataAccessor { - - World getWorld(); - EntityPlayer getPlayer(); - Block getBlock(); - int getBlockID(); - int getMetadata(); - TileEntity getTileEntity(); - MovingObjectPosition getPosition(); - Vec3 getRenderingPosition(); - NBTTagCompound getNBTData(); - int getNBTInteger(NBTTagCompound tag, String keyname); - double getPartialFrame(); - ForgeDirection getSide(); - ItemStack getStack(); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java deleted file mode 100644 index 4859d9cd..00000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java +++ /dev/null @@ -1,33 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -public interface IWailaDataProvider{ - /* - * Use this method to return an item stack in case the default lookup system fails. - * Return null if you want to use the default lookup system. - * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities - */ - ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); - - /* Waila HUD is divided into 3 zones. The head corresponds to the item name, - * body to where you mostly want to put informations, and I reserve the tail for modname display - */ - - /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. - * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). - * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. - * currenttip represents the current list of text lines in the tooltip zone. - * For example, getWailaHead() will have the current item name as currenttip. - * You can modify the tips, add more, remove some, etc. - * When you are done, just returns the currenttip and it will display in Waila. - * - * Always return the currenttip is you don't want to modify the current zone. - */ - - List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); - List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); - List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java deleted file mode 100644 index 788067af..00000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java +++ /dev/null @@ -1,24 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -/* The Accessor is used to get some basic data out of the game without having to request - * direct access to the game engine. - * It will also return things that are unmodified by the overriding systems (like getWailaStack). - */ - -public interface IWailaEntityAccessor { - World getWorld(); - EntityPlayer getPlayer(); - Entity getEntity(); - MovingObjectPosition getPosition(); - Vec3 getRenderingPosition(); - NBTTagCompound getNBTData(); - int getNBTInteger(NBTTagCompound tag, String keyname); - double getPartialFrame(); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java deleted file mode 100644 index 9548289a..00000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java +++ /dev/null @@ -1,16 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.List; - -import net.minecraft.entity.Entity; - -public interface IWailaEntityProvider { - - /* A way to get an override on the entity returned by the raytracing */ - Entity getWailaOverride(IWailaEntityAccessor accessor, IWailaConfigHandler config); - - /* The classical HEAD/BODY/TAIL text getters */ - List getWailaHead(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); - List getWailaBody(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); - List getWailaTail(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java deleted file mode 100644 index be44b7ba..00000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java +++ /dev/null @@ -1,26 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -/* The Accessor is used to get some basic data out of the game without having to request - * direct access to the game engine. - * It will also return things that are unmodified by the overriding systems (like getWailaStack). - */ - -public interface IWailaFMPAccessor { - World getWorld(); - EntityPlayer getPlayer(); - TileEntity getTileEntity(); - MovingObjectPosition getPosition(); - NBTTagCompound getNBTData(); - NBTTagCompound getFullNBTData(); - int getNBTInteger(NBTTagCompound tag, String keyname); - double getPartialFrame(); - Vec3 getRenderingPosition(); - String getID(); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java deleted file mode 100644 index 839af31f..00000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java +++ /dev/null @@ -1,7 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.item.ItemStack; - -public interface IWailaFMPDecorator { - void decorateBlock(ItemStack itemStack, IWailaFMPAccessor accessor, IWailaConfigHandler config); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java deleted file mode 100644 index 232c83ef..00000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java +++ /dev/null @@ -1,12 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -public interface IWailaFMPProvider { - /* The classical HEAD/BODY/TAIL text getters */ - List getWailaHead(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); - List getWailaBody(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); - List getWailaTail(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java b/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java deleted file mode 100644 index 162aeb63..00000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java +++ /dev/null @@ -1,44 +0,0 @@ -package mcp.mobius.waila.api; - -public interface IWailaRegistrar { - /* Add a config option in the section modname with displayed text configtext and access key keyname */ - public void addConfig(String modname, String keyname, String configtext); - public void addConfigRemote(String modname, String keyname, String configtext); - public void addConfig(String modname, String keyname); - public void addConfigRemote(String modname, String keyname); - - /* Register a stack overrider for the given blockID */ - public void registerStackProvider(IWailaDataProvider dataProvider, Class block); - - /* Same thing, but works on a class hierarchy instead */ - public void registerHeadProvider (IWailaDataProvider dataProvider, Class block); - public void registerBodyProvider (IWailaDataProvider dataProvider, Class block); - public void registerTailProvider (IWailaDataProvider dataProvider, Class block); - - /* Entity text registration methods */ - public void registerHeadProvider (IWailaEntityProvider dataProvider, Class entity); - public void registerBodyProvider (IWailaEntityProvider dataProvider, Class entity); - public void registerTailProvider (IWailaEntityProvider dataProvider, Class entity); - public void registerOverrideEntityProvider (IWailaEntityProvider dataProvider, Class entity); - - /* FMP Providers */ - public void registerHeadProvider(IWailaFMPProvider dataProvider, String name); - public void registerBodyProvider(IWailaFMPProvider dataProvider, String name); - public void registerTailProvider(IWailaFMPProvider dataProvider, String name); - - /* The block decorators */ - public void registerDecorator (IWailaBlockDecorator decorator, Class block); - public void registerDecorator (IWailaFMPDecorator decorator, String name); - - /* Selective NBT key syncing. Will register a key to sync over the network for the given class (block, te or ent). - * Accept * as a ending wildcard - * registerNBTKey("bob.*", MyBlock.class) - * registerNBTKey("data.life", MyEntity.class) - * registerNBTKey("*", MyTileEntity.class) will reproduce the full tag syncing from 1.4.5 - * */ - public void registerSyncedNBTKey(String key, Class target); - - /* UNUSED FOR NOW (Will be used for the ingame wiki */ - public void registerDocTextFile (String filename); - public void registerShortDataProvider (IWailaSummaryProvider dataProvider, Class item); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java deleted file mode 100644 index f7906498..00000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java +++ /dev/null @@ -1,21 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.LinkedHashMap; - -import net.minecraft.item.ItemStack; - -public interface IWailaSummaryProvider { - /* This interface is used to control the display data in the description screen */ - - /* BASIC TOOLS & ITEMS DATA */ - //EnumToolMaterial getMaterial(ItemStack stack); - //String getMaterialName(ItemStack stack); - //String getEffectiveBlock(ItemStack stack); - //int getHarvestLevel(ItemStack stack); - //float getEfficiencyOnProperMaterial(ItemStack stack); - //int getEnchantability(ItemStack stack); - //int getDamageVsEntity(ItemStack stack); - //int getDurability(ItemStack stack); - - LinkedHashMap getSummary(ItemStack stack, LinkedHashMap currentSummary, IWailaConfigHandler config); -} diff --git a/src/api/java/mcp/mobius/waila/api/SpecialChars.java b/src/api/java/mcp/mobius/waila/api/SpecialChars.java deleted file mode 100644 index 5bd92a82..00000000 --- a/src/api/java/mcp/mobius/waila/api/SpecialChars.java +++ /dev/null @@ -1,40 +0,0 @@ -package mcp.mobius.waila.api; - -public class SpecialChars { - - public static String MCStyle = "\u00A7"; - - public static String BLACK = MCStyle + "0"; - public static String DBLUE = MCStyle + "1"; - public static String DGREEN = MCStyle + "2"; - public static String DAQUA = MCStyle + "3"; - public static String DRED = MCStyle + "4"; - public static String DPURPLE = MCStyle + "5"; - public static String GOLD = MCStyle + "6"; - public static String GRAY = MCStyle + "7"; - public static String DGRAY = MCStyle + "8"; - public static String BLUE = MCStyle + "9"; - public static String GREEN = MCStyle + "a"; - public static String AQUA = MCStyle + "b"; - public static String RED = MCStyle + "c"; - public static String LPURPLE = MCStyle + "d"; - public static String YELLOW = MCStyle + "e"; - public static String WHITE = MCStyle + "f"; - - public static String OBF = MCStyle + "k"; - public static String BOLD = MCStyle + "l"; - public static String STRIKE = MCStyle + "m"; - public static String UNDER = MCStyle + "n"; - public static String ITALIC = MCStyle + "o"; - public static String RESET = MCStyle + "r"; - - public static String WailaStyle = "\u00A4"; - public static String WailaIcon = "\u00A5"; - public static String TAB = WailaStyle + WailaStyle +"a"; - public static String ALIGNRIGHT = WailaStyle + WailaStyle +"b"; - public static String ALIGNCENTER = WailaStyle + WailaStyle +"c"; - public static String HEART = WailaStyle + WailaIcon +"a"; - public static String HHEART = WailaStyle + WailaIcon +"b"; - public static String EHEART = WailaStyle + WailaIcon +"c"; - -} diff --git a/src/api/java/mcp/mobius/waila/api/package-info.java b/src/api/java/mcp/mobius/waila/api/package-info.java deleted file mode 100644 index 981b27bd..00000000 --- a/src/api/java/mcp/mobius/waila/api/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="Waila",provides="WailaAPI") -package mcp.mobius.waila.api; -import cpw.mods.fml.common.API; diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/FactoryRegistry.java b/src/api/java/powercrystals/minefactoryreloaded/api/FactoryRegistry.java deleted file mode 100644 index 8eff88d4..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/FactoryRegistry.java +++ /dev/null @@ -1,113 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.event.FMLInterModComms; -import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; - -/** - * @author PowerCrystals - * - * Class used to register plants and other farming-related things with MFR. Will do nothing if MFR does not exist. - * - */ -public class FactoryRegistry -{ - /* - * This may be called at any time during pre-init, init or post-init, assuming all blocks and items - * that are being accessed from the registry have been appropriately registered. - * Possible messages: - * - * // Registration: - * addLaserPreferredOre | NBTTag with an ItemStack saved on it, with the color on the "value" attribute, - * | A ValuedItem with item and value set. - * registerAutoSpawnerBlacklist | The String identifier of an entity, - * | A subclass of EntityLivingBase. - * registerFertilizable | An instance of IFactoryFertilizable. - * registerFertilizer | An instance of IFactoryFertilizer. - * registerFruitLog | The String identifier of a block. - * registerGrindable | An instance of IFactoryGrindable. - * registerGrinderBlacklist | A subclass of EntityLivingBase. - * registerHarvestable | An instance of IFactoryHarvestable. - * registerLaserOre | NBTTag with an ItemStack saved on it, with the weight on the "value" attribute, - * | A ValuedItem with item and value set. - * registerLiquidDrinkHandler | A ValuedItem with key and object set; ILiquidDrinkHandler expected. - * registerMobEggHandler | An instance of IMobEggHandler. - * registerPickableFruit | An instance of IFactoryFruit. - * registerPlantable | An instance of IFactoryPlantable. - * registerRanchable | An instance of IFactoryRanchable. - * registerRedNetLogicCircuit | An instance of IRedNetLogicCircuit. - * registerRubberTreeBiome | The biomeName field of a biome to white list for rubber trees to spawn in. - * registerSafariNetBlacklist | A subclass of EntityLivingBase. - * registerSafariNetHandler | An instance of ISafariNetHandler. - * registerSludgeDrop | NBTTag with an ItemStack saved on it, with the weight on the "value" attribute, - * | A ValuedItem with item and value set. - * registerSpawnHandler | An instance of IMobSpawnHandler. - * registerVillagerTradeMob | An instance of IRandomMobProvider. - * - * // Simple implementations: - * { Harvestables - * registerHarvestable_Standard | The String identifier of a block. - * registerHarvestable_Log | The String identifier of a block. - * registerHarvestable_Leaves | The String identifier of a block. - * registerHarvestable_Vine | The String identifier of a block. - * registerHarvestable_Shrub | The String identifier of a block. - * registerHarvestable_Mushroom | The String identifier of a block. - * registerHarvestable_Crop | An ItemStack of a block, with a damage value indicating the meta value to harvest at. - * | A ValuedItem with value and object set; Block expected. - * registerHarvestable_Gourd | An NBTTag with the stem and fruit attributes, both String identifiers of blocks. - * } - * { Plantables - * registerPlantable_Standard | An NBTTag with the seed (Item, String identifier), and - * crop (Block, String identifier) attributes set, optionally - * also having the meta (Integer, placed metadata value) attribute set. - * No special checks for location, just sustainability. - * registerPlantable_Crop | An NBTTag with the seed (Item, String identifier), and - * crop (Block, String identifier) attributes set, optionally - * also having the meta (Integer, placed metadata value) attribute set. - * Will automatically hoe dirt and grass into farmland when planting. - * registerPlantable_Sapling | An NBTTag with the sapling (Block, String identifier), and optionally - * the seed (Item, String identifier) attributes set. - * } - * { Fertilizer - * registerFertilizer | An NBTTag with the fert (Item, String identifier), meta (Integer), and - * type (Integer, index into FertilizerType.values()) attributes set. - * } - * { Fertilizables - * registerFertilizable_Grass | The String identifier of a block. Will bonemeal the block and expect - * tall grass be planted above and around it, must be IGrowable. Works with - * the GrowPlant and Grass type fertilizers, not recommended for crop plants. - * registerFertilizable_Gourd | The String identifier of a block. Must be IGrowable, and expects identical - * behavior to vanilla stems. Works with the GrowPlant fertilizers. - * registerFertilizable_Crop | An NBTTag with the plant (Block, String identifier, IGrowable), and - * meta (Integer, max growth phase) attributes set, optionally also having - * the type (Integer, index into FertilizerType) attribute set. - * registerFertilizable_Cocoa | An NBTTag with the plant (Block, String identifier), and optionally also - * the type (Integer, index into FertilizerType) attributes set. - * Expects metadata of the block to exactly match cocoa pods. - * registerFertilizable_Standard | An NBTTag with the plant (Block, String identifier, IGrowable), and - * optionally also the type (Integer, index into FertilizerType) attributes set. - * Expects the block to change when successfully grown (e.g., saplings). - * } - */ - public static void sendMessage(String message, Object value) - { - if (!Loader.isModLoaded("MineFactoryReloaded") || - Loader.instance().activeModContainer() == null) - return; - try - { - Method m = FMLInterModComms.class.getDeclaredMethod("enqueueMessage", Object.class, String.class, IMCMessage.class); - m.setAccessible(true); - Constructor c = IMCMessage.class.getDeclaredConstructor(String.class, Object.class); - c.setAccessible(true); - m.invoke(null, Loader.instance().activeModContainer(), "MineFactoryReloaded", c.newInstance(message, value)); - } - catch(Exception e) - { - e.printStackTrace(); - } - } -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/FertilizerType.java b/src/api/java/powercrystals/minefactoryreloaded/api/FertilizerType.java deleted file mode 100644 index 63ae32e6..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/FertilizerType.java +++ /dev/null @@ -1,27 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -/** - * @author PowerCrystals - * - * Determines what kind of action a given fertilizer can perform. Your IFactoryFertilizable instances should check this before - * performing any action to maintain future compatibility. - */ -public enum FertilizerType -{ - /** - * The fertilizer will fertilize nothing. - */ - None, - /** - * The fertilizer will fertilize grass. - */ - Grass, - /** - * The fertilizer will grow a plant. - */ - GrowPlant, - /** - * The fertilizer will grow magical crops. - */ - GrowMagicalCrop, -} \ No newline at end of file diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/HarvestType.java b/src/api/java/powercrystals/minefactoryreloaded/api/HarvestType.java deleted file mode 100644 index a56208ee..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/HarvestType.java +++ /dev/null @@ -1,44 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -/** - * @author PowerCrystals - * - * Determines what algorithm the Harvester uses when it encounters this IFactoryHarvestable in the world. - */ -public enum HarvestType -{ - /** - * Just break the single block - no special action needed. e.g. Carrots, flowers, wheat. - */ - Normal, - /** - * Search for harvestable blocks adjacent to this block but leave this block. e.g. Pumpkin, melon - */ - Gourd, - /** - * Search for identical blocks above. - */ - Column, - /** - * Search for identical blocks above but leave the bottom one for the future. e.g. Cactus, sugarcane. - */ - LeaveBottom, - /** - * This block is the base of a tree and the harvester should enter tree-cutting mode. - */ - Tree, - /** - * This block is the base of the tree and the harvester should enter tree-cutting mode. - * The tree is searched for in the negative y axis instead. - */ - TreeFlipped, - /** - * This block is part of a tree as above. - */ - TreeLeaf, - /** - * This block is part of a tree as above, but fruits are cut before logs. e.g. cocoa - * The tree is not searched for. - */ - TreeFruit -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IDeepStorageUnit.java b/src/api/java/powercrystals/minefactoryreloaded/api/IDeepStorageUnit.java deleted file mode 100644 index ac718c2b..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/IDeepStorageUnit.java +++ /dev/null @@ -1,29 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraft.item.ItemStack; - -public interface IDeepStorageUnit -{ - /** - * @return A populated ItemStack with stackSize for the full amount of materials in the DSU. - * May have a stackSize > getMaxStackSize(). May have a stackSize of 0 (indicating locked contents). - */ - ItemStack getStoredItemType(); - - /** - * Sets the total amount of the item currently being stored, or zero if all items are to be removed. - */ - void setStoredItemCount(int amount); - - /** - * Sets the type of the stored item and initializes the number of stored items to amount. - * Will overwrite any existing stored items. - */ - void setStoredItemType(ItemStack type, int amount); - - /** - * @return The maximum number of items the DSU can hold. - * May change based on the current type stored. - */ - int getMaxStoredCount(); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryFertilizable.java b/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryFertilizable.java deleted file mode 100644 index a690df51..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryFertilizable.java +++ /dev/null @@ -1,41 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; - -/** - * @author PowerCrystals - * - * Defines a fertilizable block, and the process to fertilize it. You can assume that you will never have to check that block ID matches the one returned by - * getFertilizableBlockId(). - */ -public interface IFactoryFertilizable -{ - /** - * @return The block this instance is managing. - */ - public Block getPlant(); - - /** - * @param world The world this block belongs to. - * @param x The X coordinate of this block. - * @param y The Y coordinate of this block. - * @param z The Z coordinate of this block. - * @param fertilizerType The kind of fertilizer being used. - * @return True if the block at (x,y,z) can be fertilized with the given type of fertilizer. - */ - public boolean canFertilize(World world, int x, int y, int z, FertilizerType fertilizerType); - - /** - * @param world The world this block belongs to. - * @param rand A Random instance to use when fertilizing, if necessary. - * @param x The X coordinate of this block. - * @param y The Y coordinate of this block. - * @param z The Z coordinate of this block. - * @param fertilizerType The kind of fertilizer being used. - * @return True if fertilization was successful. If false, the Fertilizer will not consume a fertilizer item and will not drain power. - */ - public boolean fertilize(World world, Random rand, int x, int y, int z, FertilizerType fertilizerType); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryFertilizer.java b/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryFertilizer.java deleted file mode 100644 index f230ccc4..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryFertilizer.java +++ /dev/null @@ -1,29 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -/** - * @author PowerCrystals - * - * Defines a fertilizer item for use in the Fertilizer. - */ -public interface IFactoryFertilizer -{ - /** - * @return The ID of this fertilizer item. - */ - Item getFertilizer(); - - /** - * @return The type of fertilizer this is. - */ - FertilizerType getFertilizerType(ItemStack stack); - - /** - * Called when a fertilization is successful. If you set the ItemStack size to 0, it will be deleted by the fertilizer. - * - * @param fertilizer The ItemStack used to fertilize. - */ - void consume(ItemStack fertilizer); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryFruit.java b/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryFruit.java deleted file mode 100644 index 44c0d4bb..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryFruit.java +++ /dev/null @@ -1,75 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -/** - * Defines a fruit entry for the Fruit Picker. - * - * @author powercrystals - * - */ -public interface IFactoryFruit -{ - /** - * @return The block this fruit has in the world. - */ - public Block getPlant(); - - /** - * Used to determine if this fruit can be picked (is it ripe yet, etc) - * @param world The world where the fruit is being picked - * @param x The x-coordinate of the fruit - * @param y The y-coordinate of the fruit - * @param z The z-coordinate of the fruit - * @return True if the fruit can be picked - */ - public boolean canBePicked(World world, int x, int y, int z); - - /** - * @return Whether or not the Fruit Picker should break the block when harvesting. If false, no changes will be performed by the Fruit Picker itself. - */ - public boolean breakBlock(); - - /** - * Called by the Fruit Picker to determine what block to replace the picked block with. Only ID and meta/damage will be used. - * At the time this method is called, the fruit still exists. Do not pass an item ID as the return value. - * @param world The world where the fruit is being picked - * @param x The x-coordinate of the fruit - * @param y The y-coordinate of the fruit - * @param z The z-coordinate of the fruit - * @return The block to replace the fruit block with, or null for air. - */ - public ReplacementBlock getReplacementBlock(World world, int x, int y, int z); - - /** - * Called by the Fruit Picker before the fruit is picked. - * @param world The world where the fruit is being picked - * @param x The x-coordinate of the fruit - * @param y The y-coordinate of the fruit - * @param z The z-coordinate of the fruit - */ - public void prePick(World world, int x, int y, int z); - - /** - * Called by the Fruit Picker to determine what drops to generate. At the time this method is called, the fruit still exists. - * @param world The world where the fruit is being picked - * @param x The x-coordinate of the fruit - * @param y The y-coordinate of the fruit - * @param z The z-coordinate of the fruit - */ - public List getDrops(World world, Random rand, int x, int y, int z); - - /** - * Called by the Fruit Picker after the fruit is picked. - * @param world The world where the fruit is being picked - * @param x The x-coordinate of the fruit - * @param y The y-coordinate of the fruit - * @param z The z-coordinate of the fruit - */ - public void postPick(World world, int x, int y, int z); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryGrindable.java b/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryGrindable.java deleted file mode 100644 index edfb8c99..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryGrindable.java +++ /dev/null @@ -1,35 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import java.util.List; -import java.util.Random; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.world.World; - -/** - * @author PowerCrystals - * - * Defines a grindable entity for the Grinder. - */ -public interface IFactoryGrindable -{ - /** - * @return The class that this grindable instance is handling. This must be a subtype of EntityLivingBase or the entity will never - * be noticed by the Grinder. - */ - public Class getGrindableEntity(); - - /** - * @param world The world this entity is in. - * @param entity The entity instance being ground. - * @param random A Random instance. - * @return The drops generated when this entity is killed. - */ - public List grind(World world, EntityLivingBase entity, Random random); - - /** - * @param entity The entity instance being ground. - * @return Whether this entity has been fully processed or not. - */ - public boolean processEntity(EntityLivingBase entity); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryHarvestable.java b/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryHarvestable.java deleted file mode 100644 index d4e620a8..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryHarvestable.java +++ /dev/null @@ -1,71 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import java.util.List; -import java.util.Map; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -/** - * @author PowerCrystals - * - * Defines a harvestable block for the Harvester. - */ -public interface IFactoryHarvestable -{ - /** - * @return The block this harvestable instance is managing. - */ - public Block getPlant(); - - /** - * @return The type of harvest the Harvester should perform on this block. - */ - public HarvestType getHarvestType(); - - /** - * @return Whether or not the Harvester should break the block when harvesting. If false, no changes will be performed by the Harvester itself. - */ - public boolean breakBlock(); - - /** - * @param world The world this block is in. - * @param harvesterSettings The harvester's current settings. Do not modify these. - * @param x The X coordinate of the block being harvested. - * @param y The Y coordinate of the block being harvested. - * @param z The Z coordinate of the block being harvested. - * @return True if this block can be harvested. - */ - public boolean canBeHarvested(World world, Map harvesterSettings, int x, int y, int z); - - /** - * @param world The world this block is in. - * @param rand A Random instance to use when generating drops. - * @param harvesterSettings The harvester's current settings. Do not modify these. - * @param x The X coordinate of the block being harvested. - * @param y The Y coordinate of the block being harvested. - * @param z The Z coordinate of the block being harvested. - * @return The drops generated by breaking this block. For a default implementation, calling Block.getBlockDropped() is usually sufficient. - */ - public List getDrops(World world, Random rand, Map harvesterSettings, int x, int y, int z); - - /** - * Called before the block is going to be harvested. Usually empty. - * @param world The world this block is in. - * @param x The X coordinate of the block being harvested. - * @param y The Y coordinate of the block being harvested. - * @param z The Z coordinate of the block being harvested. - */ - public void preHarvest(World world, int x, int y, int z); - - /** - * Called after the block is going to be harvested. Used to re-till soil, for example. - * @param world The world this block is in. - * @param x The X coordinate of the block being harvested. - * @param y The Y coordinate of the block being harvested. - * @param z The Z coordinate of the block being harvested. - */ - public void postHarvest(World world, int x, int y, int z); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryLaserTarget.java b/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryLaserTarget.java deleted file mode 100644 index 26ded7ab..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryLaserTarget.java +++ /dev/null @@ -1,25 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraftforge.common.util.ForgeDirection; - -/** - * @author skyboy - * - * Defines a target for the Laser Drill Precharger - */ -public interface IFactoryLaserTarget -{ - /** - * @param from The direction the laser is coming from - * @return true if the precharger can form a beam from this side - */ - public boolean canFormBeamWith(ForgeDirection from); - - /** - * @param from The direction the energy is coming from - * @param energy The amount of energy being transferred - * @param simulate true if this transaction will only be simulated - * @return The amount of energy not consumed - */ - public int addEnergy(ForgeDirection from, int energy, boolean simulate); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryPlantable.java b/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryPlantable.java deleted file mode 100644 index acec9ab3..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryPlantable.java +++ /dev/null @@ -1,65 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -/** - * @author PowerCrystals - * - * Defines a plantable object for use in the Planter. - */ -public interface IFactoryPlantable -{ - /** - * @return The item this plantable is managing. - */ - public Item getSeed(); - - /** - * @param stack The stack being planted. - * @param forFermenting True if this stack will be converted to biofuel - * @return True if this plantable can be planted (useful for metadata items). - */ - public boolean canBePlanted(ItemStack stack, boolean forFermenting); - - /** - * @param world The world instance this block or item will be placed into. - * @param x The destination X coordinate. - * @param y The destination Y coordinate. - * @param z The destination Z coordinate. - * @param stack The stack being planted. - * @return The block that will be placed into the world. - */ - public ReplacementBlock getPlantedBlock(World world, int x, int y, int z, ItemStack stack); - - /** - * @param world The world instance this block or item will be placed into. - * @param x The destination X coordinate. - * @param y The destination Y coordinate. - * @param z The destination Z coordinate. - * @param stack The stack being planted. - * @return True if this plantable can be placed at the provided coordinates. - */ - public boolean canBePlantedHere(World world, int x, int y, int z, ItemStack stack); - - /** - * Called before planting is performed. Used to till soil, for example. - * @param world The world instance this block or item will be placed into. - * @param x The destination X coordinate. - * @param y The destination Y coordinate. - * @param z The destination Z coordinate. - * @param stack The stack being planted. - */ - public void prePlant(World world, int x, int y, int z, ItemStack stack); - - /** - * Called after planting is performed. Usually empty. - * @param world The world instance this block or item will be placed into. - * @param x The destination X coordinate. - * @param y The destination Y coordinate. - * @param z The destination Z coordinate. - * @param stack The stack being planted. - */ - public void postPlant(World world, int x, int y, int z, ItemStack stack); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryRanchable.java b/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryRanchable.java deleted file mode 100644 index 27c173fa..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryRanchable.java +++ /dev/null @@ -1,28 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import java.util.List; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.inventory.IInventory; -import net.minecraft.world.World; - -/** - * @author PowerCrystals - * - * Defines a ranchable entity for use in the Rancher. - */ -public interface IFactoryRanchable -{ - /** - * @return The entity being ranched. Must be a subtype of EntityLivingBase. - */ - public Class getRanchableEntity(); - - /** - * @param world The world this entity is in. - * @param entity The entity instance being ranched. - * @param rancher The rancher instance doing the ranching. Used to access the Rancher's inventory when milking cows, for example. - * @return A list of drops. - */ - public List ranch(World world, EntityLivingBase entity, IInventory rancher); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/ILiquidDrinkHandler.java b/src/api/java/powercrystals/minefactoryreloaded/api/ILiquidDrinkHandler.java deleted file mode 100644 index 31eba004..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/ILiquidDrinkHandler.java +++ /dev/null @@ -1,8 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraft.entity.EntityLivingBase; - -public interface ILiquidDrinkHandler -{ - public void onDrink(EntityLivingBase player); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IMFRHammer.java b/src/api/java/powercrystals/minefactoryreloaded/api/IMFRHammer.java deleted file mode 100644 index 00fcbe9c..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/IMFRHammer.java +++ /dev/null @@ -1,9 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -/** - * @author PowerCrystals - * Defines a tool that can rotate MFR machines. Implement on an Item class. Requires no additional work on your part. - */ -public interface IMFRHammer -{ -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IMobEggHandler.java b/src/api/java/powercrystals/minefactoryreloaded/api/IMobEggHandler.java deleted file mode 100644 index 01693a73..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/IMobEggHandler.java +++ /dev/null @@ -1,18 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraft.entity.EntityList.EntityEggInfo; -import net.minecraft.item.ItemStack; - -/** - * @author PowerCrystals - * - * Defines a class that MFR will use to local egg info for a given mob. This is used to color the Safari Net based on the captured mob. - */ -public interface IMobEggHandler -{ - /** - * @param safariNet The Safari Net that is looking for egg info. - * @return An EntityEggInfo, or null if this instance cannot handle this mob. - */ - public EntityEggInfo getEgg(ItemStack safariNet); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IMobSpawnHandler.java b/src/api/java/powercrystals/minefactoryreloaded/api/IMobSpawnHandler.java deleted file mode 100644 index 46e295ea..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/IMobSpawnHandler.java +++ /dev/null @@ -1,27 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraft.entity.EntityLivingBase; - -/** - * @author skyboy - * - * Defines a handler for mob spawns from the autospawner. - * Added primarily to solve item duping on exact spawn & entity inventories - */ -public interface IMobSpawnHandler -{ - /** - * @return The class that this instance is handling. - */ - public Class getMobClass(); - - /** - * @param entity The entity instance being spawned. Typically your regular spawn code 100% handles this - */ - public void onMobSpawn(EntityLivingBase entity); - - /** - * @param entity The entity instance being exact-copied. Clear your inventories & etc. here - */ - public void onMobExactSpawn(EntityLivingBase entity); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/INeedleAmmo.java b/src/api/java/powercrystals/minefactoryreloaded/api/INeedleAmmo.java deleted file mode 100644 index 74dae7e8..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/INeedleAmmo.java +++ /dev/null @@ -1,13 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public interface INeedleAmmo -{ - public boolean onHitEntity(ItemStack stac, EntityPlayer owner, Entity hit, double distance); - public void onHitBlock(ItemStack stac, EntityPlayer owner, World world, int x, int y, int z, int side, double distance); - public float getSpread(ItemStack stack); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IRandomMobProvider.java b/src/api/java/powercrystals/minefactoryreloaded/api/IRandomMobProvider.java deleted file mode 100644 index b03d6f08..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/IRandomMobProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import java.util.List; - -import net.minecraft.world.World; - - -public interface IRandomMobProvider -{ - public List getRandomMobs(World world); -} \ No newline at end of file diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/ISafariNetHandler.java b/src/api/java/powercrystals/minefactoryreloaded/api/ISafariNetHandler.java deleted file mode 100644 index 2a4457bb..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/ISafariNetHandler.java +++ /dev/null @@ -1,27 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -/** - * @author PowerCrystals - * - * Defines an object that can display information about a captured mob in a Safari net. - */ -public interface ISafariNetHandler -{ - /** - * @return The class of mob that this handler applies to. - */ - public Class validFor(); - - /** - * @param safariNetStack The Safari Net that is requesting information. - * @param player The player holding the Safari Net. - * @param infoList The current list of information strings. Add yours to this. - * @param advancedTooltips True if the advanced tooltips option is on. - */ - public void addInformation(ItemStack safariNetStack, EntityPlayer player, List infoList, boolean advancedTooltips); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/ISyringe.java b/src/api/java/powercrystals/minefactoryreloaded/api/ISyringe.java deleted file mode 100644 index 5e876e80..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/ISyringe.java +++ /dev/null @@ -1,46 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -/** - * @author PowerCrystals - * - * Defines a syringe for use in the Vet machine. - */ -public interface ISyringe -{ - /** - * Called when the vet is deciding if it should use this syringe. - * @param world The world instance. - * @param entity The entity being injected. - * @param syringe The syringe ItemStack. - * @return True if the entity can be injected by this syringe. - */ - public boolean canInject(World world, EntityLivingBase entity, ItemStack syringe); - - /** - * Called to perform an injection. - * @param world The world instance. - * @param entity The entity being injected. - * @param syringe The syringe ItemStack. - * @return True if injection was successful. - */ - public boolean inject(World world, EntityLivingBase entity, ItemStack syringe); - - /** - * Called to check if a syringe is empty - * @param syringe The syringe ItemStack. - * @return True if the syringe is empty - */ - public boolean isEmpty(ItemStack syringe); - - /** - * Called to get the empty syringe - * Note: this will replace the syringe, max stacksize should be 1 - * @param syringe The syringe ItemStack. - * @return An empty syringe ItemStack - */ - public ItemStack getEmptySyringe(ItemStack syringe); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/MobDrop.java b/src/api/java/powercrystals/minefactoryreloaded/api/MobDrop.java deleted file mode 100644 index 7f5dd7cc..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/MobDrop.java +++ /dev/null @@ -1,21 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.WeightedRandom; - -public class MobDrop extends WeightedRandom.Item -{ - private ItemStack _stack; - - public MobDrop(int weight, ItemStack stack) - { - super(weight); - _stack = stack; - } - - public ItemStack getStack() - { - if(_stack == null) return null; - return _stack.copy(); - } -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/RanchedItem.java b/src/api/java/powercrystals/minefactoryreloaded/api/RanchedItem.java deleted file mode 100644 index 86791cc5..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/RanchedItem.java +++ /dev/null @@ -1,68 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; - -/** - * @author skyboy026 - * - * Defines an ItemStack or a FluidStack that is the result of an entity being ranched - */ -public final class RanchedItem { - private final ItemStack item; - private final FluidStack fluid; - - public RanchedItem(Block item, int amount, int meta) - { - this(new ItemStack(item, amount, meta)); - } - - public RanchedItem(Block item, int amount) - { - this(new ItemStack(item, amount)); - } - - public RanchedItem(Block item) - { - this(new ItemStack(item)); - } - - public RanchedItem(Item item, int amount, int meta) - { - this(new ItemStack(item, amount, meta)); - } - - public RanchedItem(Item item, int amount) - { - this(new ItemStack(item, amount)); - } - - public RanchedItem(Item item) - { - this(new ItemStack(item)); - } - - public RanchedItem(ItemStack item) - { - this.item = item; - fluid = null; - } - - public RanchedItem(FluidStack fluid) - { - this.fluid = fluid; - item = null; - } - - public boolean hasFluid() - { - return item == null & fluid != null; - } - - public Object getResult() - { - return item == null ? fluid : item; - } -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/RandomMob.java b/src/api/java/powercrystals/minefactoryreloaded/api/RandomMob.java deleted file mode 100644 index 2ffa56b1..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/RandomMob.java +++ /dev/null @@ -1,28 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraft.entity.Entity; -import net.minecraft.util.WeightedRandom; - -public class RandomMob extends WeightedRandom.Item -{ - private Entity _mob; - public final boolean shouldInit; - - public RandomMob(Entity savedMob, int weight, boolean init) - { - super(weight); - _mob = savedMob; - shouldInit = init; - } - - public RandomMob(Entity savedMob, int weight) - { - this(savedMob, weight, true); - } - - public Entity getMob() - { - if(_mob == null) return null; - return _mob; - } -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/ReplacementBlock.java b/src/api/java/powercrystals/minefactoryreloaded/api/ReplacementBlock.java deleted file mode 100644 index 88cd7a86..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/ReplacementBlock.java +++ /dev/null @@ -1,137 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class ReplacementBlock -{ - protected byte _hasMeta; - protected int _meta; - protected final Block _block; - protected final NBTTagCompound _tileTag; - - /** - * Called to replace a block in the world. - * @param world The world object - * @param x The X coord - * @param y The Y coord - * @param z The Z coord - * @param stack The ItemStack being used to replace the block (may be null) - * @return True if the block was set successfully - */ - public boolean replaceBlock(World world, int x, int y, int z, ItemStack stack) - { - int meta = getMeta(world, x, y, z, stack); - if (world.setBlock(x, y, z, _block, meta, 3)) - { - if (hasTag(stack) && _block.hasTileEntity(meta)) - { - TileEntity tile = world.getTileEntity(x, y, z); - if (tile != null) - tile.readFromNBT(getTag(world, x, y, z, stack)); - } - return true; - } - return false; - } - - /** - * Called to get the metadata of the replacement block in the world. - * @param world The world object - * @param x The X coord - * @param y The Y coord - * @param z The Z coord - * @param stack The ItemStack being used to replace the block (may be null) - * @return The metadata of the block - */ - protected int getMeta(World world, int x, int y, int z, ItemStack stack) - { - int m = 0; - if (_hasMeta > 0) - { - if (_hasMeta > 1) - return _meta; - m = stack.getItemDamage(); - Item item = stack.getItem(); - if (item instanceof ItemBlock) - m = ((ItemBlock)item).getMetadata(m); - } - return m; - } - - /** - * Called to set the metdata of this ReplacementBlock to a fixed value - * @param meta The metadata of the block - * @return This instance - */ - public ReplacementBlock setMeta(int meta) - { - if (meta >= 0) - { - _hasMeta = 2; - _meta = meta; - } - return this; - } - - /** - * Called to set the metdata of this ReplacementBlock to a value read from an ItemStack - * @param meta The metadata of the block - * @return This instance - */ - public ReplacementBlock setMeta(boolean hasMeta) - { - _hasMeta = (byte) (hasMeta ? 1 : 0); - return this; - } - - /** - * Called to get the NBTTagCompound a TileEntity will read its state from - * @param world The world object - * @param x The X coord - * @param y The Y coord - * @param z The Z coord - * @param stack The ItemStack being used to replace the block (may be null) - * @return The NBTTagCompound a TileEntity will read its state from - */ - protected NBTTagCompound getTag(World world, int x, int y, int z, ItemStack stack) - { - return _tileTag; - } - - /** - * Called to see if a TileEntity should have its state set - * @param stack The ItemStack being used to replace the block (may be null) - * @return True if the TileEntity should have its state set - */ - protected boolean hasTag(ItemStack stack) - { - return _tileTag != null; - } - - public ReplacementBlock(Item block) - { - this(Block.getBlockFromItem(block)); - } - - public ReplacementBlock(Item block, NBTTagCompound tag) - { - this(Block.getBlockFromItem(block), tag); - } - - public ReplacementBlock(Block block) - { - this(block, null); - } - - public ReplacementBlock(Block block, NBTTagCompound tag) - { - _block = block; - _tileTag = tag; - } -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/ValuedItem.java b/src/api/java/powercrystals/minefactoryreloaded/api/ValuedItem.java deleted file mode 100644 index 3d075fa3..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/ValuedItem.java +++ /dev/null @@ -1,72 +0,0 @@ -package powercrystals.minefactoryreloaded.api; - -import net.minecraft.item.ItemStack; - -public class ValuedItem -{ - public final int value; - public final ItemStack item; - public final String key; - public final Object object; - - public ValuedItem(int v, ItemStack i) - { - value = v; - item = i; - key = null; - object = null; - } - - public ValuedItem(String v, Object i) - { - value = -1; - item = null; - key = v; - object = i; - } - - /** - * Presently unused but included so that if they do get used in the future, - * people including this in their jar and loading before MFR don't destroy everyone - */ - - public ValuedItem(int v, Object i) - { - value = v; - item = null; - key = null; - object = i; - } - - public ValuedItem(String v, ItemStack i) - { - value = -1; - item = i; - key = v; - object = null; - } - - public ValuedItem(int v, String k, ItemStack i) - { - value = v; - item = i; - key = k; - object = null; - } - - public ValuedItem(int v, String k, Object i) - { - value = v; - item = null; - key = k; - object = i; - } - - public ValuedItem(int v, String k, ItemStack i, Object o) - { - value = v; - item = i; - key = k; - object = o; - } -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetInfo.java b/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetInfo.java deleted file mode 100644 index 0fc75c78..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetInfo.java +++ /dev/null @@ -1,28 +0,0 @@ -package powercrystals.minefactoryreloaded.api.rednet; - -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.IChatComponent; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.common.util.ForgeDirection; - -/** - * Defines a Block that can print information about itself using the RedNet Meter. This must be implemented on your Block class. - */ -public interface IRedNetInfo -{ - /** - * This function appends information to a list provided to it. - * - * @param world Reference to the world. - * @param x X coordinate of the block. - * @param y Y coordinate of the block. - * @param z Z coordinate of the block. - * @param side The side of the block that is being queried. - * @param player Player doing the querying - this can be NULL. - * @param info The list that the information should be appended to. - */ - public void getRedNetInfo(IBlockAccess world, int x, int y, int z, - ForgeDirection side, EntityPlayer player, List info); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetInputNode.java b/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetInputNode.java deleted file mode 100644 index a814af3c..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetInputNode.java +++ /dev/null @@ -1,52 +0,0 @@ -package powercrystals.minefactoryreloaded.api.rednet; - -import powercrystals.minefactoryreloaded.api.rednet.connectivity.IRedNetConnection; - -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -/** - * Defines a Block that can connect to RedNet cables. This must be implemented on your Block class. - *

- * Note that when you implement this, the RedNet network makes several assumptions about your code - - * It will not clamp values to 0 <= x <= 15. This means you must be able to accept any possible integer - * without crashing, even negatives. It will also assume that calling the onInput(s)Changed() methods - * are sufficient, and will not issue block updates. In Single mode, it will call onInputChanged. - *

- * RedNet cables have their subnets indicated to the user by colored bands on the cable. - * The color of a given subnet is the same as the wool with metadata equal to the subnet number. - *

- * For reference:
- * 0:White, 1:Orange, 2:Magenta, 3:LightBlue, 4:Yellow, 5:Lime, 6:Pink, 7:Gray, - * 8:LightGray, 9:Cyan, 10:Purple, 11:Blue, 12:Brown, 13:Green, 14:Red, 15:Black - */ -public interface IRedNetInputNode extends IRedNetConnection -{ - /** - * Called when the input values to this block change. Only called if your block is connected in "All" mode. - * Do not issue a network value update from inside this method call; it will be ignored. Issue your updates - * on the next tick. - * - * @param world The world this block is in. - * @param x This block's X coordinate. - * @param y This block's Y coordinate. - * @param z This block's Z coordinate. - * @param side The side the input values are being changed on. - * @param inputValues The new set of input values. This array will be 16 elements long. Do not alter or cache. - */ - public void onInputsChanged(World world, int x, int y, int z, ForgeDirection side, int[] inputValues); - - /** - * Called when the input value to this block changes. Only called if your block is connected in "Single" mode. - * Do not issue a network value update from inside this method call; it will be ignored. Issue your updates - * on the next tick. - * - * @param world The world this block is in. - * @param x This block's X coordinate. - * @param y This block's Y coordinate. - * @param z This block's Z coordinate. - * @param side The side the input values are being changed on. - * @param inputValue The new input value - */ - public void onInputChanged(World world, int x, int y, int z, ForgeDirection side, int inputValue); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetLogicCircuit.java b/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetLogicCircuit.java deleted file mode 100644 index 981ce06b..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetLogicCircuit.java +++ /dev/null @@ -1,19 +0,0 @@ -package powercrystals.minefactoryreloaded.api.rednet; - -import net.minecraft.nbt.NBTTagCompound; - -public interface IRedNetLogicCircuit -{ - public byte getInputCount(); - - public byte getOutputCount(); - - public int[] recalculateOutputValues(long worldTime, int[] inputValues); - - public String getUnlocalizedName(); - public String getInputPinLabel(int pin); - public String getOutputPinLabel(int pin); - - public void readFromNBT(NBTTagCompound tag); - public void writeToNBT(NBTTagCompound tag); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetLogicPoint.java b/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetLogicPoint.java deleted file mode 100644 index dd05969e..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetLogicPoint.java +++ /dev/null @@ -1,36 +0,0 @@ -package powercrystals.minefactoryreloaded.api.rednet; - -/** - * - * @author skyboy - */ -public interface IRedNetLogicPoint -{ - /** - * - * @param out - * @return - */ - public void transformOutput(int[] out); - - /** - * - * @param out - * @return - */ - public void transformOutput(int out); - - /** - * - * @param in - * @return - */ - public int[] transformInput(int[] in); - - /** - * - * @param in - * @return - */ - public int transformInput(int in); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetNetworkContainer.java b/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetNetworkContainer.java deleted file mode 100644 index c9fb0bf8..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetNetworkContainer.java +++ /dev/null @@ -1,32 +0,0 @@ -package powercrystals.minefactoryreloaded.api.rednet; - -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -/** - * - * You should not implement this yourself. Instead, use this to look for cables to notify from your IRedNetOmniNode as this does not - * require a block update. This will be implemented on the cable's Block class. - * - */ -public interface IRedNetNetworkContainer -{ - /** - * Tells the network to recalculate all subnets. - * @param world The world this cable is in. - * @param x The x-coordinate of this cable. - * @param x The y-coordinate of this cable. - * @param x The z-coordinate of this cable. - */ - public void updateNetwork(World world, int x, int y, int z, ForgeDirection from); - - /** - * Tells the network to recalculate a specific subnet. - * @param world The world this cable is in. - * @param x The x-coordinate of this cable. - * @param x The y-coordinate of this cable. - * @param x The z-coordinate of this cable. - * @param subnet The subnet to recalculate. - */ - public void updateNetwork(World world, int x, int y, int z, int subnet, ForgeDirection from); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetOmniNode.java b/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetOmniNode.java deleted file mode 100644 index f2bdf397..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetOmniNode.java +++ /dev/null @@ -1,22 +0,0 @@ -package powercrystals.minefactoryreloaded.api.rednet; - -/** - * Defines a Block that can connect to RedNet cables. This must be implemented on your Block class. - *

- * Note that when you implement this, the RedNet network makes several assumptions about your code - - * It will not clamp values to 0 <= x <= 15. This means you must be able to accept any possible integer - * without crashing, even negatives. It will also assume that calling the onInput(s)Changed() methods - * are sufficient, and will not issue block updates. It will never call the vanilla redstone output - * methods, and will only query the methods contained in this interface. - *

- * RedNet cables have their subnets indicated to the user by colored bands on the cable. - * The color of a given subnet is the same as the wool with metadata equal to the subnet number. - *

- * For reference:
- * 0:White, 1:Orange, 2:Magenta, 3:LightBlue, 4:Yellow, 5:Lime, 6:Pink, 7:Gray, - * 8:LightGray, 9:Cyan, 10:Purple, 11:Blue, 12:Brown, 13:Green, 14:Red, 15:Black - */ -public interface IRedNetOmniNode extends IRedNetInputNode, IRedNetOutputNode -{ - // this is merely provided for convenience -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetOutputNode.java b/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetOutputNode.java deleted file mode 100644 index 34281875..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/IRedNetOutputNode.java +++ /dev/null @@ -1,51 +0,0 @@ -package powercrystals.minefactoryreloaded.api.rednet; - -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -import powercrystals.minefactoryreloaded.api.rednet.connectivity.IRedNetConnection; - -/** - * Defines a Block that can connect to RedNet cables. This must be implemented on your Block class. - *

- * Note that when you implement this, the RedNet network makes several assumptions about your code - - * It will never call the vanilla redstone output methods, querying only the methods contained in - * this interface, and will not issue block updates. - *

- * RedNet cables have their subnets indicated to the user by colored bands on the cable. - * The color of a given subnet is the same as the wool with metadata equal to the subnet number. - *

- * For reference:
- * 0:White, 1:Orange, 2:Magenta, 3:LightBlue, 4:Yellow, 5:Lime, 6:Pink, 7:Gray, - * 8:LightGray, 9:Cyan, 10:Purple, 11:Blue, 12:Brown, 13:Green, 14:Red, 15:Black - */ -public interface IRedNetOutputNode extends IRedNetConnection -{ - /** - * Returns the output values of this RedNet node. - * This array must be 16 elements long. - * Only called if your block is connected in "All" mode. - * - * @param world The world this block is in. - * @param x This block's X coordinate. - * @param y This block's Y coordinate. - * @param z This block's Z coordinate. - * @param side The side the output values are required for. - * @return The output values. - */ - public int[] getOutputValues(World world, int x, int y, int z, ForgeDirection side); - - /** - * Returns the output value of this RedNet node for a given subnet. - * Must be the same as getOutputValues(world, x, y, z, side)[subnet]. - * - * @param world The world this block is in. - * @param x This block's X coordinate. - * @param y This block's Y coordinate. - * @param z This block's Z coordinate. - * @param side The side the output value is required for. - * @param subnet The subnet to get the output value for (0-15). - * @return The output value. - */ - public int getOutputValue(World world, int x, int y, int z, ForgeDirection side, int subnet); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/IRedNetConnection.java b/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/IRedNetConnection.java deleted file mode 100644 index 003800d8..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/IRedNetConnection.java +++ /dev/null @@ -1,26 +0,0 @@ -package powercrystals.minefactoryreloaded.api.rednet.connectivity; - -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -/** - * Defines a Block that can connect to RedNet cables. This must be implemented on your Block class. - */ -public interface IRedNetConnection -{ - /** - * Returns the connection type of this Block. If this value must be changed - * while the block is alive, it must notify neighbors of a change. - *

- * For nodes that want to interact with rednet, - * see IRedNetInputNode, IRedNetOutputNode, and IRedNetOmniNode - * - * @param world The world this block is in. - * @param x This block's X coordinate. - * @param y This block's Y coordinate. - * @param z This block's Z coordinate. - * @param side The side that connection information is required for. - * @return The connection type. - */ - public RedNetConnectionType getConnectionType(World world, int x, int y, int z, ForgeDirection side); -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/IRedNetDecorative.java b/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/IRedNetDecorative.java deleted file mode 100644 index 89de12b1..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/IRedNetDecorative.java +++ /dev/null @@ -1,11 +0,0 @@ -package powercrystals.minefactoryreloaded.api.rednet.connectivity; - -/** - * This must be implemented on your Block class. - *

- * RedNet cables will treat your block similar to a vanilla block that's not redstone active. - */ -public interface IRedNetDecorative -{ - -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/IRedNetNoConnection.java b/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/IRedNetNoConnection.java deleted file mode 100644 index 16225a74..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/IRedNetNoConnection.java +++ /dev/null @@ -1,13 +0,0 @@ -package powercrystals.minefactoryreloaded.api.rednet.connectivity; - -/** - * This must be implemented on your Block class. - *

- * RedNet cables will not connect to your block. - *
- * This behavior can be overridden in subclasses by IRedNetConnection - */ -public interface IRedNetNoConnection -{ - -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/IRedstoneAlike.java b/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/IRedstoneAlike.java deleted file mode 100644 index f3784cfb..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/IRedstoneAlike.java +++ /dev/null @@ -1,10 +0,0 @@ -package powercrystals.minefactoryreloaded.api.rednet.connectivity; - -/** - * This must be implemented on your Block class. - *

- * RedNet cables will treat your block similar to a redstone dust, and subtract one from the power value. - */ -public interface IRedstoneAlike { - -} diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/RedNetConnectionType.java b/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/RedNetConnectionType.java deleted file mode 100644 index 08ba24c1..00000000 --- a/src/api/java/powercrystals/minefactoryreloaded/api/rednet/connectivity/RedNetConnectionType.java +++ /dev/null @@ -1,86 +0,0 @@ -package powercrystals.minefactoryreloaded.api.rednet.connectivity; - -import java.util.HashMap; -import java.util.Map; - -/** - * Defines how RedNet cable connects to a block - *

- * None: RedNet will never connect to this block (if this is all you want: use IRedNetNoConnection) - *

- * CableSingle: Connections will use the cable renderer with a single band, best used for whole blocks - *
- * PlateSingle: Connections will use the plate renderer with a single band, used for conveyers and rails - *

- * CableAll: Connections permit access to all 16 bands - *
- * PlateAll: Connections permit access to all 16 bands - *

- * Forced connection modes are best used for decoration blocks: RedNet will not connect normally, - * but will if the user forces it. Typically, IRedNetDecorative is desired for this instead - *

- * ForcedCableSingle: Connections permit access to a single band, only when the cable is in forced connection mode - *
- * ForcedPlateSingle: Connections permit access to a single band, only when the cable is in forced connection mode - *

- * ForcedCableAll: Connections permit access to all 16 bands, only when the cable is in forced connection mode - *
- * ForcedPlateAll: Connections permit access to all 16 bands, only when the cable is in forced connection mode - *

- * The decorative nodes are for when you want rednet to decide how to connect to your block, - * but also need to receive full updates from the network. - *

- * DecorativeSingle: Connections permit access to a single band, using standard connection logic - *
- * DecorativeAll: Connections permit access to all 16 bands, using standard connection logic - *
- * ForcedDecorativeSingle: Connections permit access to a single band, only when the cable is in forced connection mode - *
- * ForcedDecorativeAll: Connections permit access to all 16 bands, only when the cable is in forced connection mode - */ -public enum RedNetConnectionType -{ - None, // 0; 0000000 - CableSingle, // 11; 0001011 - PlateSingle, // 13; 0001101 - CableAll, // 19; 0010011 - PlateAll, // 21; 0010101 - ForcedCableSingle, // 43; 0101011 - ForcedPlateSingle, // 45; 0101101 - ForcedCableAll, // 51; 0110011 - ForcedPlateAll, // 53; 0110101 - DecorativeSingle, // NA; 0001001 - DecorativeAll, // NA; 0010001 - ForcedDecorativeSingle, // NA; 0101001 - ForcedDecorativeAll; // NA; 0110001 - - public final boolean isConnected = this.ordinal() != 0; // 0 bit (mask: 1) - public final boolean isSingleSubnet = this.name().endsWith("Single"); // 3 bit (mask: 8) - public final boolean isAllSubnets = this.name().endsWith("All"); // 4 bit (mask: 16) - public final boolean isPlate = this.name().contains("Plate"); // 2 bit (mask: 4) - public final boolean isCable = this.name().contains("Cable"); // 1 bit (mask: 2) - public final boolean isConnectionForced = this.name().startsWith("Forced"); // 5 bit (mask: 32) - public final boolean isDecorative = this.name().contains("Decorative"); - public final short flags = toFlags(isConnected, isCable, isPlate, - isSingleSubnet, isAllSubnets, isConnectionForced); - - public static final RedNetConnectionType fromFlags(short flags) - { - return connections.get(flags); - } - - private static final short toFlags(boolean ...flags) - { - short ret = 0; - for (int i = flags.length; i --> 0;) - ret |= (flags[i] ? 1 : 0) << i; - return ret; - } - - private static final Map connections = new HashMap(); - - static { - for (RedNetConnectionType type : RedNetConnectionType.values()) - connections.put(type.flags, type); - } -} diff --git a/src/api/java/thaumcraft/api/IGoggles.java b/src/api/java/thaumcraft/api/IGoggles.java deleted file mode 100644 index 2f53d816..00000000 --- a/src/api/java/thaumcraft/api/IGoggles.java +++ /dev/null @@ -1,22 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; - -/** - * - * @author Azanor - * - * Equipped head slot items that extend this class will be able to perform most functions that - * goggles of revealing can apart from view nodes which is handled by IRevealer. - * - */ - -public interface IGoggles { - - /* - * If this method returns true things like block essentia contents will be shown. - */ - public boolean showIngamePopups(ItemStack itemstack, EntityLivingBase player); - -} diff --git a/src/api/java/thaumcraft/api/IRepairable.java b/src/api/java/thaumcraft/api/IRepairable.java deleted file mode 100644 index 48c6dff9..00000000 --- a/src/api/java/thaumcraft/api/IRepairable.java +++ /dev/null @@ -1,13 +0,0 @@ -package thaumcraft.api; - - - -/** - * @author Azanor - * Items, armor and tools with this interface can receive the Repair enchantment. - * Repairs 1 point of durability every 10 seconds (2 for repair II) - */ -public interface IRepairable { - - -} diff --git a/src/api/java/thaumcraft/api/IRepairableExtended.java b/src/api/java/thaumcraft/api/IRepairableExtended.java deleted file mode 100644 index 33827124..00000000 --- a/src/api/java/thaumcraft/api/IRepairableExtended.java +++ /dev/null @@ -1,17 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - - - -/** - * @author Azanor - * Items, armor and tools with this interface can receive the Repair enchantment. - * Repairs 1 point of durability every 10 seconds (2 for repair II) - */ -public interface IRepairableExtended extends IRepairable { - - public boolean doRepair(ItemStack stack, EntityPlayer player, int enchantlevel); - -} diff --git a/src/api/java/thaumcraft/api/IRunicArmor.java b/src/api/java/thaumcraft/api/IRunicArmor.java deleted file mode 100644 index 5dd31100..00000000 --- a/src/api/java/thaumcraft/api/IRunicArmor.java +++ /dev/null @@ -1,22 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.item.ItemStack; - -/** - * - * @author Azanor - * - * Armor or bauble slot items that implement this interface can provide runic shielding. - * Recharging, hardening, etc. is handled internally by thaumcraft. - * - */ - -public interface IRunicArmor { - - /** - * returns how much charge this item can provide. This is the base shielding value - any hardening is stored and calculated internally. - */ - public int getRunicCharge(ItemStack itemstack); - - -} diff --git a/src/api/java/thaumcraft/api/IScribeTools.java b/src/api/java/thaumcraft/api/IScribeTools.java deleted file mode 100644 index 8800fa57..00000000 --- a/src/api/java/thaumcraft/api/IScribeTools.java +++ /dev/null @@ -1,14 +0,0 @@ -package thaumcraft.api; - - -/** - * - * @author Azanor - * - * Interface used to identify scribing tool items used in research table - * - */ - -public interface IScribeTools { - -} diff --git a/src/api/java/thaumcraft/api/IVisDiscountGear.java b/src/api/java/thaumcraft/api/IVisDiscountGear.java deleted file mode 100644 index 3793ea3e..00000000 --- a/src/api/java/thaumcraft/api/IVisDiscountGear.java +++ /dev/null @@ -1,20 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import thaumcraft.api.aspects.Aspect; - - - - -/** - * @author Azanor - * ItemArmor with this interface will grant a discount to the vis cost of actions the wearer performs with casting wands. - * The amount returned is the percentage by which the cost is discounted. There is a built-int max discount of 50%, but - * individual items really shouldn't have a discount more than 5% - */ -public interface IVisDiscountGear { - - int getVisDiscount(ItemStack stack, EntityPlayer player, Aspect aspect); - -} diff --git a/src/api/java/thaumcraft/api/ItemApi.java b/src/api/java/thaumcraft/api/ItemApi.java deleted file mode 100644 index 25dda282..00000000 --- a/src/api/java/thaumcraft/api/ItemApi.java +++ /dev/null @@ -1,70 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import cpw.mods.fml.common.FMLLog; - -/** - * @author Azanor - * - * This is used to gain access to the items in my mod. - * I only give some examples and it will probably still - * require a bit of work for you to get hold of everything you need. - * - */ -public class ItemApi { - - public static ItemStack getItem(String itemString, int meta) { - ItemStack item = null; - - try { - String itemClass = "thaumcraft.common.config.ConfigItems"; - Object obj = Class.forName(itemClass).getField(itemString).get(null); - if (obj instanceof Item) { - item = new ItemStack((Item) obj,1,meta); - } else if (obj instanceof ItemStack) { - item = (ItemStack) obj; - } - } catch (Exception ex) { - FMLLog.warning("[Thaumcraft] Could not retrieve item identified by: " + itemString); - } - - return item; - } - - public static ItemStack getBlock(String itemString, int meta) { - ItemStack item = null; - - try { - String itemClass = "thaumcraft.common.config.ConfigBlocks"; - Object obj = Class.forName(itemClass).getField(itemString).get(null); - if (obj instanceof Block) { - item = new ItemStack((Block) obj,1,meta); - } else if (obj instanceof ItemStack) { - item = (ItemStack) obj; - } - } catch (Exception ex) { - FMLLog.warning("[Thaumcraft] Could not retrieve block identified by: " + itemString); - } - - return item; - } - - /** - * - * Some examples - * - * Casting Wands: - * itemWandCasting - * - * Resources: - * itemEssence, itemWispEssence, itemResource, itemShard, itemNugget, - * itemNuggetChicken, itemNuggetBeef, itemNuggetPork, itemTripleMeatTreat - * - * Research: - * itemResearchNotes, itemInkwell, itemThaumonomicon - * - */ - -} diff --git a/src/api/java/thaumcraft/api/ItemRunic.java b/src/api/java/thaumcraft/api/ItemRunic.java deleted file mode 100644 index 80251f59..00000000 --- a/src/api/java/thaumcraft/api/ItemRunic.java +++ /dev/null @@ -1,21 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -public class ItemRunic extends Item implements IRunicArmor { - - int charge; - - public ItemRunic (int charge) - { - super(); - this.charge = charge; - } - - @Override - public int getRunicCharge(ItemStack itemstack) { - return charge; - } - -} diff --git a/src/api/java/thaumcraft/api/LICENSE b/src/api/java/thaumcraft/api/LICENSE deleted file mode 100644 index 11823298..00000000 --- a/src/api/java/thaumcraft/api/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Azanor - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/api/java/thaumcraft/api/README.md b/src/api/java/thaumcraft/api/README.md deleted file mode 100644 index b88c1cc6..00000000 --- a/src/api/java/thaumcraft/api/README.md +++ /dev/null @@ -1,10 +0,0 @@ -thaumcraft-api -============== - -Thaumcraft Api - - - -This is just to create an easy to access place for the api code. - -I will still place the zips on the minecraft forum post for the "official" version of the api - the code here will usually be for dev versions. diff --git a/src/api/java/thaumcraft/api/ThaumcraftApi.java b/src/api/java/thaumcraft/api/ThaumcraftApi.java deleted file mode 100644 index bbd7a43c..00000000 --- a/src/api/java/thaumcraft/api/ThaumcraftApi.java +++ /dev/null @@ -1,536 +0,0 @@ -package thaumcraft.api; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.concurrent.ConcurrentHashMap; - -import net.minecraft.block.Block; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.Item.ToolMaterial; -import net.minecraft.item.ItemArmor.ArmorMaterial; -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.util.EnumHelper; -import net.minecraftforge.oredict.OreDictionary; -import thaumcraft.api.aspects.Aspect; -import thaumcraft.api.aspects.AspectList; -import thaumcraft.api.crafting.CrucibleRecipe; -import thaumcraft.api.crafting.InfusionEnchantmentRecipe; -import thaumcraft.api.crafting.InfusionRecipe; -import thaumcraft.api.crafting.ShapedArcaneRecipe; -import thaumcraft.api.crafting.ShapelessArcaneRecipe; -import thaumcraft.api.research.IScanEventHandler; -import thaumcraft.api.research.ResearchCategories; -import thaumcraft.api.research.ResearchCategoryList; -import thaumcraft.api.research.ResearchItem; -import thaumcraft.api.research.ResearchPage; - - -/** - * @author Azanor - * - * - * IMPORTANT: If you are adding your own aspects to items it is a good idea to do it AFTER Thaumcraft adds its aspects, otherwise odd things may happen. - * - */ -public class ThaumcraftApi { - - //Materials - public static ToolMaterial toolMatThaumium = EnumHelper.addToolMaterial("THAUMIUM", 3, 400, 7F, 2, 22); - public static ToolMaterial toolMatVoid = EnumHelper.addToolMaterial("VOID", 4, 150, 8F, 3, 10); - public static ToolMaterial toolMatElemental = EnumHelper.addToolMaterial("THAUMIUM_ELEMENTAL", 3, 1500, 10F, 3, 18); - public static ArmorMaterial armorMatThaumium = EnumHelper.addArmorMaterial("THAUMIUM", 25, new int[] { 2, 6, 5, 2 }, 25); - public static ArmorMaterial armorMatSpecial = EnumHelper.addArmorMaterial("SPECIAL", 25, new int[] { 1, 3, 2, 1 }, 25); - public static ArmorMaterial armorMatThaumiumFortress = EnumHelper.addArmorMaterial("FORTRESS", 40, new int[] { 3, 7, 6, 3 }, 25); - public static ArmorMaterial armorMatVoid = EnumHelper.addArmorMaterial("VOID", 10, new int[] { 3, 7, 6, 3 }, 10); - public static ArmorMaterial armorMatVoidFortress = EnumHelper.addArmorMaterial("VOIDFORTRESS", 18, new int[] { 4, 8, 7, 4 }, 10); - - //Enchantment references - public static int enchantFrugal; - public static int enchantPotency; - public static int enchantWandFortune; - public static int enchantHaste; - public static int enchantRepair; - - //Miscellaneous - /** - * Portable Hole Block-id Blacklist. - * Simply add the block-id's of blocks you don't want the portable hole to go through. - */ - public static ArrayList portableHoleBlackList = new ArrayList(); - - - //RESEARCH///////////////////////////////////////// - public static ArrayList scanEventhandlers = new ArrayList(); - public static ArrayList scanEntities = new ArrayList(); - public static class EntityTagsNBT { - public EntityTagsNBT(String name, Object value) { - this.name = name; - this.value = value; - } - public String name; - public Object value; - } - public static class EntityTags { - public EntityTags(String entityName, AspectList aspects, EntityTagsNBT... nbts) { - this.entityName = entityName; - this.nbts = nbts; - this.aspects = aspects; - } - public String entityName; - public EntityTagsNBT[] nbts; - public AspectList aspects; - } - - /** - * not really working atm, so ignore it for now - * @param scanEventHandler - */ - public static void registerScanEventhandler(IScanEventHandler scanEventHandler) { - scanEventhandlers.add(scanEventHandler); - } - - /** - * This is used to add aspects to entities which you can then scan using a thaumometer. - * Also used to calculate vis drops from mobs. - * @param entityName - * @param aspects - * @param nbt you can specify certain nbt keys and their values - * to differentiate between mobs.
For example the normal and wither skeleton: - *
ThaumcraftApi.registerEntityTag("Skeleton", (new AspectList()).add(Aspect.DEATH, 5)); - *
ThaumcraftApi.registerEntityTag("Skeleton", (new AspectList()).add(Aspect.DEATH, 8), new NBTTagByte("SkeletonType",(byte) 1)); - */ - public static void registerEntityTag(String entityName, AspectList aspects, EntityTagsNBT... nbt ) { - scanEntities.add(new EntityTags(entityName,aspects,nbt)); - } - - //RECIPES///////////////////////////////////////// - private static ArrayList craftingRecipes = new ArrayList(); - private static HashMap smeltingBonus = new HashMap(); - - /** - * This method is used to determine what bonus items are generated when the infernal furnace smelts items - * @param in The input of the smelting operation. e.g. new ItemStack(Block.oreGold) - * @param out The bonus item that can be produced from the smelting operation e.g. new ItemStack(nuggetGold,0,0). - * Stacksize should be 0 unless you want to guarantee that at least 1 item is always produced. - */ - public static void addSmeltingBonus(ItemStack in, ItemStack out) { - smeltingBonus.put( - Arrays.asList(in.getItem(),in.getItemDamage()), - new ItemStack(out.getItem(),0,out.getItemDamage())); - } - - /** - * This method is used to determine what bonus items are generated when the infernal furnace smelts items - * @param in The ore dictionary input of the smelting operation. e.g. "oreGold" - * @param out The bonus item that can be produced from the smelting operation e.g. new ItemStack(nuggetGold,0,0). - * Stacksize should be 0 unless you want to guarantee that at least 1 item is always produced. - */ - public static void addSmeltingBonus(String in, ItemStack out) { - smeltingBonus.put( in, new ItemStack(out.getItem(),0,out.getItemDamage())); - } - - /** - * Returns the bonus item produced from a smelting operation in the infernal furnace - * @param in The input of the smelting operation. e.g. new ItemStack(oreGold) - * @return the The bonus item that can be produced - */ - public static ItemStack getSmeltingBonus(ItemStack in) { - ItemStack out = smeltingBonus.get(Arrays.asList(in.getItem(),in.getItemDamage())); - if (out==null) { - out = smeltingBonus.get(Arrays.asList(in.getItem(),OreDictionary.WILDCARD_VALUE)); - } - if (out==null) { - String od = OreDictionary.getOreName( OreDictionary.getOreID(in)); - out = smeltingBonus.get(od); - } - return out; - } - - public static List getCraftingRecipes() { - return craftingRecipes; - } - - /** - * @param research the research key required for this recipe to work. Leave blank if it will work without research - * @param result the recipe output - * @param aspects the vis cost per aspect. - * @param recipe The recipe. Format is exactly the same as vanilla recipes. Input itemstacks are NBT sensitive. - */ - public static ShapedArcaneRecipe addArcaneCraftingRecipe(String research, ItemStack result, AspectList aspects, Object ... recipe) - { - ShapedArcaneRecipe r= new ShapedArcaneRecipe(research, result, aspects, recipe); - craftingRecipes.add(r); - return r; - } - - /** - * @param research the research key required for this recipe to work. Leave blank if it will work without research - * @param result the recipe output - * @param aspects the vis cost per aspect - * @param recipe The recipe. Format is exactly the same as vanilla shapeless recipes. Input itemstacks are NBT sensitive. - */ - public static ShapelessArcaneRecipe addShapelessArcaneCraftingRecipe(String research, ItemStack result, AspectList aspects, Object ... recipe) - { - ShapelessArcaneRecipe r = new ShapelessArcaneRecipe(research, result, aspects, recipe); - craftingRecipes.add(r); - return r; - } - - /** - * @param research the research key required for this recipe to work. Leave blank if it will work without research - * @param result the recipe output. It can either be an itemstack or an nbt compound tag that will be added to the central item - * @param instability a number that represents the N in 1000 chance for the infusion altar to spawn an - * instability effect each second while the crafting is in progress - * @param aspects the essentia cost per aspect. - * @param aspects input the central item to be infused - * @param recipe An array of items required to craft this. Input itemstacks are NBT sensitive. - * Infusion crafting components are automatically "fuzzy" and the oredict will be checked for possible matches. - * - */ - public static InfusionRecipe addInfusionCraftingRecipe(String research, Object result, int instability, AspectList aspects, ItemStack input,ItemStack[] recipe) - { - if (!(result instanceof ItemStack || result instanceof Object[])) return null; - InfusionRecipe r= new InfusionRecipe(research, result, instability, aspects, input, recipe); - craftingRecipes.add(r); - return r; - } - - /** - * @param research the research key required for this recipe to work. Leave blank if it will work without research - * @param enchantment the enchantment that will be applied to the item - * @param instability a number that represents the N in 1000 chance for the infusion altar to spawn an - * instability effect each second while the crafting is in progress - * @param aspects the essentia cost per aspect. - * @param recipe An array of items required to craft this. Input itemstacks are NBT sensitive. - * Infusion crafting components are automatically "fuzzy" and the oredict will be checked for possible matches. - * - */ - public static InfusionEnchantmentRecipe addInfusionEnchantmentRecipe(String research, Enchantment enchantment, int instability, AspectList aspects, ItemStack[] recipe) - { - InfusionEnchantmentRecipe r= new InfusionEnchantmentRecipe(research, enchantment, instability, aspects, recipe); - craftingRecipes.add(r); - return r; - } - - /** - * @param stack the recipe result - * @return the recipe - */ - public static InfusionRecipe getInfusionRecipe(ItemStack res) { - for (Object r:getCraftingRecipes()) { - if (r instanceof InfusionRecipe) { - if (((InfusionRecipe)r).getRecipeOutput() instanceof ItemStack) { - if (((ItemStack) ((InfusionRecipe)r).getRecipeOutput()).isItemEqual(res)) - return (InfusionRecipe)r; - } - } - } - return null; - } - - - /** - * @param key the research key required for this recipe to work. - * @param result the output result - * @param catalyst an itemstack of the catalyst or a string if it is an ore dictionary item - * @param cost the vis cost - * @param tags the aspects required to craft this - */ - public static CrucibleRecipe addCrucibleRecipe(String key, ItemStack result, Object catalyst, AspectList tags) { - CrucibleRecipe rc = new CrucibleRecipe(key, result, catalyst, tags); - getCraftingRecipes().add(rc); - return rc; - } - - - /** - * @param stack the recipe result - * @return the recipe - */ - public static CrucibleRecipe getCrucibleRecipe(ItemStack stack) { - for (Object r:getCraftingRecipes()) { - if (r instanceof CrucibleRecipe) { - if (((CrucibleRecipe)r).getRecipeOutput().isItemEqual(stack)) - return (CrucibleRecipe)r; - } - } - return null; - } - - /** - * @param hash the unique recipe code - * @return the recipe - */ - public static CrucibleRecipe getCrucibleRecipeFromHash(int hash) { - for (Object r:getCraftingRecipes()) { - if (r instanceof CrucibleRecipe) { - if (((CrucibleRecipe)r).hash==hash) - return (CrucibleRecipe)r; - } - } - return null; - } - - /** - * Used by the thaumonomicon drilldown feature. - * @param stack the item - * @return the thaumcraft recipe key that produces that item. - */ - private static HashMap keyCache = new HashMap(); - - public static Object[] getCraftingRecipeKey(EntityPlayer player, ItemStack stack) { - int[] key = new int[] {Item.getIdFromItem(stack.getItem()),stack.getItemDamage()}; - if (keyCache.containsKey(key)) { - if (keyCache.get(key)==null) return null; - if (ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), (String)(keyCache.get(key))[0])) - return keyCache.get(key); - else - return null; - } - for (ResearchCategoryList rcl:ResearchCategories.researchCategories.values()) { - for (ResearchItem ri:rcl.research.values()) { - if (ri.getPages()==null) continue; - for (int a=0;a objectTags = new ConcurrentHashMap(); - - /** - * Checks to see if the passed item/block already has aspects associated with it. - * @param id - * @param meta - * @return - */ - public static boolean exists(Item item, int meta) { - AspectList tmp = ThaumcraftApi.objectTags.get(Arrays.asList(item,meta)); - if (tmp==null) { - tmp = ThaumcraftApi.objectTags.get(Arrays.asList(item,OreDictionary.WILDCARD_VALUE)); - if (meta==OreDictionary.WILDCARD_VALUE && tmp==null) { - int index=0; - do { - tmp = ThaumcraftApi.objectTags.get(Arrays.asList(item,index)); - index++; - } while (index<16 && tmp==null); - } - if (tmp==null) return false; - } - - return true; - } - - /** - * Used to assign apsects to the given item/block. Here is an example of the declaration for cobblestone:

- * ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.cobblestone), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); - * @param item the item passed. Pass OreDictionary.WILDCARD_VALUE if all damage values of this item/block should have the same aspects - * @param aspects A ObjectTags object of the associated aspects - */ - public static void registerObjectTag(ItemStack item, AspectList aspects) { - if (aspects==null) aspects=new AspectList(); - try { - objectTags.put(Arrays.asList(item.getItem(),item.getItemDamage()), aspects); - } catch (Exception e) {} - } - - - /** - * Used to assign apsects to the given item/block. Here is an example of the declaration for cobblestone:

- * ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.cobblestone), new int[]{0,1}, (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); - * @param item - * @param meta A range of meta values if you wish to lump several item meta's together as being the "same" item (i.e. stair orientations) - * @param aspects A ObjectTags object of the associated aspects - */ - public static void registerObjectTag(ItemStack item, int[] meta, AspectList aspects) { - if (aspects==null) aspects=new AspectList(); - try { - objectTags.put(Arrays.asList(item.getItem(),meta), aspects); - } catch (Exception e) {} - } - - /** - * Used to assign apsects to the given ore dictionary item. - * @param oreDict the ore dictionary name - * @param aspects A ObjectTags object of the associated aspects - */ - public static void registerObjectTag(String oreDict, AspectList aspects) { - if (aspects==null) aspects=new AspectList(); - ArrayList ores = OreDictionary.getOres(oreDict); - if (ores!=null && ores.size()>0) { - for (ItemStack ore:ores) { - try { - objectTags.put(Arrays.asList(ore.getItem(), ore.getItemDamage()), aspects); - } catch (Exception e) {} - } - } - } - - /** - * Used to assign aspects to the given item/block. - * Attempts to automatically generate aspect tags by checking registered recipes. - * Here is an example of the declaration for pistons:

- * ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.cobblestone), (new AspectList()).add(Aspect.MECHANISM, 2).add(Aspect.MOTION, 4)); - * IMPORTANT - this should only be used if you are not happy with the default aspects the object would be assigned. - * @param item, pass OreDictionary.WILDCARD_VALUE to meta if all damage values of this item/block should have the same aspects - * @param aspects A ObjectTags object of the associated aspects - */ - public static void registerComplexObjectTag(ItemStack item, AspectList aspects ) { - if (!exists(item.getItem(),item.getItemDamage())) { - AspectList tmp = ThaumcraftApiHelper.generateTags(item.getItem(), item.getItemDamage()); - if (tmp != null && tmp.size()>0) { - for(Aspect tag:tmp.getAspects()) { - aspects.add(tag, tmp.getAmount(tag)); - } - } - registerObjectTag(item,aspects); - } else { - AspectList tmp = ThaumcraftApiHelper.getObjectAspects(item); - for(Aspect tag:aspects.getAspects()) { - tmp.merge(tag, tmp.getAmount(tag)); - } - registerObjectTag(item,tmp); - } - } - - //WARP /////////////////////////////////////////////////////////////////////////////////////// - private static HashMap warpMap = new HashMap(); - - /** - * This method is used to determine how much warp is gained if the item is crafted - * @param craftresult The item crafted - * @param amount how much warp is gained - */ - public static void addWarpToItem(ItemStack craftresult, int amount) { - warpMap.put(Arrays.asList(craftresult.getItem(),craftresult.getItemDamage()),amount); - } - - /** - * This method is used to determine how much warp is gained if the sent item is crafted - * @param in The item crafted - * @param amount how much warp is gained - */ - public static void addWarpToResearch(String research, int amount) { - warpMap.put(research, amount); - } - - /** - * Returns how much warp is gained from the item or research passed in - * @param in itemstack or string - * @return how much warp it will give - */ - public static int getWarp(Object in) { - if (in==null) return 0; - if (in instanceof ItemStack && warpMap.containsKey(Arrays.asList(((ItemStack)in).getItem(),((ItemStack)in).getItemDamage()))) { - return warpMap.get(Arrays.asList(((ItemStack)in).getItem(),((ItemStack)in).getItemDamage())); - } else - if (in instanceof String && warpMap.containsKey((String)in)) { - return warpMap.get((String)in); - } - return 0; - } - - //CROPS ////////////////////////////////////////////////////////////////////////////////////////// - - /** - * To define mod crops you need to use FMLInterModComms in your @Mod.Init method. - * There are two 'types' of crops you can add. Standard crops and clickable crops. - * - * Standard crops work like normal vanilla crops - they grow until a certain metadata - * value is reached and you harvest them by destroying the block and collecting the blocks. - * You need to create and ItemStack that tells the golem what block id and metadata represents - * the crop when fully grown. Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the metadata won't get - * checked. - * Example for vanilla wheat: - * FMLInterModComms.sendMessage("Thaumcraft", "harvestStandardCrop", new ItemStack(Block.crops,1,7)); - * - * Clickable crops are crops that you right click to gather their bounty instead of destroying them. - * As for standard crops, you need to create and ItemStack that tells the golem what block id - * and metadata represents the crop when fully grown. The golem will trigger the blocks onBlockActivated method. - * Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the metadata won't get checked. - * Example (this will technically do nothing since clicking wheat does nothing, but you get the idea): - * FMLInterModComms.sendMessage("Thaumcraft", "harvestClickableCrop", new ItemStack(Block.crops,1,7)); - * - * Stacked crops (like reeds) are crops that you wish the bottom block should remain after harvesting. - * As for standard crops, you need to create and ItemStack that tells the golem what block id - * and metadata represents the crop when fully grown. Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the actualy md won't get - * checked. If it has the order upgrade it will only harvest if the crop is more than one block high. - * Example: - * FMLInterModComms.sendMessage("Thaumcraft", "harvestStackedCrop", new ItemStack(Block.reed,1,7)); - */ - - //NATIVE CLUSTERS ////////////////////////////////////////////////////////////////////////////////// - - /** - * You can define certain ores that will have a chance to produce native clusters via FMLInterModComms - * in your @Mod.Init method using the "nativeCluster" string message. - * The format should be: - * "[ore item/block id],[ore item/block metadata],[cluster item/block id],[cluster item/block metadata],[chance modifier float]" - * - * NOTE: The chance modifier is a multiplier applied to the default chance for that cluster to be produced (default 27.5% for a pickaxe of the core) - * - * Example for vanilla iron ore to produce one of my own native iron clusters (assuming default id's) at double the default chance: - * FMLInterModComms.sendMessage("Thaumcraft", "nativeCluster","15,0,25016,16,2.0"); - */ - - //LAMP OF GROWTH BLACKLIST /////////////////////////////////////////////////////////////////////////// - /** - * You can blacklist crops that should not be effected by the Lamp of Growth via FMLInterModComms - * in your @Mod.Init method using the "lampBlacklist" itemstack message. - * Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the metadata won't get checked. - * Example for vanilla wheat: - * FMLInterModComms.sendMessage("Thaumcraft", "lampBlacklist", new ItemStack(Block.crops,1,OreDictionary.WILDCARD_VALUE)); - */ - - //DIMENSION BLACKLIST /////////////////////////////////////////////////////////////////////////// - /** - * You can blacklist a dimension to not spawn certain thaumcraft features - * in your @Mod.Init method using the "dimensionBlacklist" string message in the format "[dimension]:[level]" - * The level values are as follows: - * [0] stop all tc spawning and generation - * [1] allow ore and node generation - * [2] allow mob spawning - * [3] allow ore and node gen + mob spawning - * Example: - * FMLInterModComms.sendMessage("Thaumcraft", "dimensionBlacklist", "15:1"); - */ - - //BIOME BLACKLIST /////////////////////////////////////////////////////////////////////////// - /** - * You can blacklist a biome to not spawn certain thaumcraft features - * in your @Mod.Init method using the "biomeBlacklist" string message in the format "[biome id]:[level]" - * The level values are as follows: - * [0] stop all tc spawning and generation - * [1] allow ore and node generation - * [2] allow mob spawning - * [3] allow ore and node gen + mob spawning - * Example: - * FMLInterModComms.sendMessage("Thaumcraft", "biomeBlacklist", "180:2"); - */ -} diff --git a/src/api/java/thaumcraft/api/ThaumcraftApiHelper.java b/src/api/java/thaumcraft/api/ThaumcraftApiHelper.java deleted file mode 100644 index 7f95dc44..00000000 --- a/src/api/java/thaumcraft/api/ThaumcraftApiHelper.java +++ /dev/null @@ -1,293 +0,0 @@ -package thaumcraft.api; - -import java.lang.reflect.Method; -import java.util.HashMap; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.oredict.OreDictionary; -import thaumcraft.api.aspects.Aspect; -import thaumcraft.api.aspects.AspectList; -import thaumcraft.api.aspects.IEssentiaTransport; -import cpw.mods.fml.common.FMLLog; - -public class ThaumcraftApiHelper { - - public static AspectList cullTags(AspectList temp) { - AspectList temp2 = new AspectList(); - for (Aspect tag:temp.getAspects()) { - if (tag!=null) - temp2.add(tag, temp.getAmount(tag)); - } - while (temp2!=null && temp2.size()>10) { - Aspect lowest = null; - int low = Integer.MAX_VALUE; - for (Aspect tag:temp2.getAspects()) { - if (tag==null) continue; - if (temp2.getAmount(tag) allAspects= new HashMap(); - private static HashMap allCompoundAspects= new HashMap(); - - public static AspectList getAllAspects(int amount) { - if (allAspects.get(amount)==null) { - AspectList al = new AspectList(); - for (Aspect aspect:Aspect.aspects.values()) { - al.add(aspect, amount); - } - allAspects.put(amount, al); - } - return allAspects.get(amount); - } - - public static AspectList getAllCompoundAspects(int amount) { - if (allCompoundAspects.get(amount)==null) { - AspectList al = new AspectList(); - for (Aspect aspect:Aspect.getCompoundAspects()) { - al.add(aspect, amount); - } - allCompoundAspects.put(amount, al); - } - return allCompoundAspects.get(amount); - } - - static Method consumeVisFromWand; - /** - * Use to subtract vis from a wand for most operations - * Wands store vis differently so "real" vis costs need to be multiplied by 100 before calling this method - * @param wand the wand itemstack - * @param player the player using the wand - * @param cost the cost of the operation. - * @param doit actually subtract the vis from the wand if true - if false just simulate the result - * @param crafting is this a crafting operation or not - if - * false then things like frugal and potency will apply to the costs - * @return was the vis successfully subtracted - */ - public static boolean consumeVisFromWand(ItemStack wand, EntityPlayer player, - AspectList cost, boolean doit, boolean crafting) { - boolean ot = false; - try { - if(consumeVisFromWand == null) { - Class fake = Class.forName("thaumcraft.common.items.wands.ItemWandCasting"); - consumeVisFromWand = fake.getMethod("consumeAllVis", - ItemStack.class, EntityPlayer.class, AspectList.class, boolean.class, boolean.class); - } - ot = (Boolean) consumeVisFromWand.invoke( - consumeVisFromWand.getDeclaringClass().cast(wand.getItem()), wand, player, cost, doit, crafting); - } catch(Exception ex) { - FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.items.wands.ItemWandCasting method consumeAllVis"); - } - return ot; - } - - static Method consumeVisFromWandCrafting; - /** - * Subtract vis for use by a crafting mechanic. Costs are calculated slightly - * differently and things like the frugal enchant is ignored - * Must NOT be multiplied by 100 - send the actual vis cost - * @param wand the wand itemstack - * @param player the player using the wand - * @param cost the cost of the operation. - * @param doit actually subtract the vis from the wand if true - if false just simulate the result - * @return was the vis successfully subtracted - */ - public static boolean consumeVisFromWandCrafting(ItemStack wand, EntityPlayer player, - AspectList cost, boolean doit) { - boolean ot = false; - try { - if(consumeVisFromWandCrafting == null) { - Class fake = Class.forName("thaumcraft.common.items.wands.ItemWandCasting"); - consumeVisFromWandCrafting = fake.getMethod("consumeAllVisCrafting", - ItemStack.class, EntityPlayer.class, AspectList.class, boolean.class); - } - ot = (Boolean) consumeVisFromWandCrafting.invoke( - consumeVisFromWandCrafting.getDeclaringClass().cast(wand.getItem()), wand, player, cost, doit); - } catch(Exception ex) { - FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.items.wands.ItemWandCasting method consumeAllVisCrafting"); - } - return ot; - } - - static Method consumeVisFromInventory; - /** - * Subtract vis from a wand the player is carrying. Works like consumeVisFromWand in that actual vis - * costs should be multiplied by 100. The costs are handled like crafting however and things like - * frugal don't effect them - * @param player the player using the wand - * @param cost the cost of the operation. - * @return was the vis successfully subtracted - */ - public static boolean consumeVisFromInventory(EntityPlayer player, AspectList cost) { - boolean ot = false; - try { - if(consumeVisFromInventory == null) { - Class fake = Class.forName("thaumcraft.common.items.wands.WandManager"); - consumeVisFromInventory = fake.getMethod("consumeVisFromInventory", - EntityPlayer.class, AspectList.class); - } - ot = (Boolean) consumeVisFromInventory.invoke(null, player, cost); - } catch(Exception ex) { - FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.items.wands.WandManager method consumeVisFromInventory"); - } - return ot; - } - - - static Method addWarpToPlayer; - /** - * This adds permanents or temporary warp to a player. It will automatically be synced clientside - * @param player the player using the wand - * @param amount how much warp to add - * @param amount how much warp to add. Negative amounts are only valid for temporary warp - * @param temporary add temporary warp instead of permanent - * @param amount how much warp to add - */ - public static void addWarpToPlayer(EntityPlayer player, int amount, boolean temporary) { - boolean ot = false; - try { - if(addWarpToPlayer == null) { - Class fake = Class.forName("thaumcraft.common.Thaumcraft"); - addWarpToPlayer = fake.getMethod("addWarpToPlayer", - EntityPlayer.class, int.class, boolean.class); - } - addWarpToPlayer.invoke(null, player, amount, temporary); - } catch(Exception ex) { - FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.Thaumcraft method addWarpToPlayer"); - } - } -} diff --git a/src/api/java/thaumcraft/api/TileThaumcraft.java b/src/api/java/thaumcraft/api/TileThaumcraft.java deleted file mode 100644 index 56ccae87..00000000 --- a/src/api/java/thaumcraft/api/TileThaumcraft.java +++ /dev/null @@ -1,63 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.Packet; -import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; - -/** - * - * @author azanor - * - * Custom tile entity class I use for most of my tile entities. Setup in such a way that only - * the nbt data within readCustomNBT / writeCustomNBT will be sent to the client when the tile - * updates. Apart from all the normal TE data that gets sent that is. - * - */ -public class TileThaumcraft extends TileEntity { - - //NBT stuff - - @Override - public void readFromNBT(NBTTagCompound nbttagcompound) - { - super.readFromNBT(nbttagcompound); - readCustomNBT(nbttagcompound); - } - - public void readCustomNBT(NBTTagCompound nbttagcompound) - { - //TODO - } - - @Override - public void writeToNBT(NBTTagCompound nbttagcompound) - { - super.writeToNBT(nbttagcompound); - writeCustomNBT(nbttagcompound); - } - - public void writeCustomNBT(NBTTagCompound nbttagcompound) - { - //TODO - } - - //Client Packet stuff - @Override - public Packet getDescriptionPacket() { - NBTTagCompound nbttagcompound = new NBTTagCompound(); - this.writeCustomNBT(nbttagcompound); - return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, -999, nbttagcompound); - } - - @Override - public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { - super.onDataPacket(net, pkt); - this.readCustomNBT(pkt.func_148857_g()); - } - - - - -} diff --git a/src/api/java/thaumcraft/api/WorldCoordinates.java b/src/api/java/thaumcraft/api/WorldCoordinates.java deleted file mode 100644 index 6c620af5..00000000 --- a/src/api/java/thaumcraft/api/WorldCoordinates.java +++ /dev/null @@ -1,117 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; - -public class WorldCoordinates implements Comparable -{ - public int x; - - /** the y coordinate */ - public int y; - - /** the z coordinate */ - public int z; - - public int dim; - - public WorldCoordinates() {} - - public WorldCoordinates(int par1, int par2, int par3, int d) - { - this.x = par1; - this.y = par2; - this.z = par3; - this.dim = d; - } - - public WorldCoordinates(TileEntity tile) - { - this.x = tile.xCoord; - this.y = tile.yCoord; - this.z = tile.zCoord; - this.dim = tile.getWorldObj().provider.dimensionId; - } - - public WorldCoordinates(WorldCoordinates par1ChunkCoordinates) - { - this.x = par1ChunkCoordinates.x; - this.y = par1ChunkCoordinates.y; - this.z = par1ChunkCoordinates.z; - this.dim = par1ChunkCoordinates.dim; - } - - public boolean equals(Object par1Obj) - { - if (!(par1Obj instanceof WorldCoordinates)) - { - return false; - } - else - { - WorldCoordinates coordinates = (WorldCoordinates)par1Obj; - return this.x == coordinates.x && this.y == coordinates.y && this.z == coordinates.z && this.dim == coordinates.dim ; - } - } - - public int hashCode() - { - return this.x + this.y << 8 + this.z << 16 + this.dim << 24; - } - - /** - * Compare the coordinate with another coordinate - */ - public int compareWorldCoordinate(WorldCoordinates par1) - { - return this.dim == par1.dim ? ( - this.y == par1.y ? (this.z == par1.z ? this.x - par1.x : this.z - par1.z) : this.y - par1.y) : -1; - } - - public void set(int par1, int par2, int par3, int d) - { - this.x = par1; - this.y = par2; - this.z = par3; - this.dim = d; - } - - /** - * Returns the squared distance between this coordinates and the coordinates given as argument. - */ - public float getDistanceSquared(int par1, int par2, int par3) - { - float f = (float)(this.x - par1); - float f1 = (float)(this.y - par2); - float f2 = (float)(this.z - par3); - return f * f + f1 * f1 + f2 * f2; - } - - /** - * Return the squared distance between this coordinates and the ChunkCoordinates given as argument. - */ - public float getDistanceSquaredToWorldCoordinates(WorldCoordinates par1ChunkCoordinates) - { - return this.getDistanceSquared(par1ChunkCoordinates.x, par1ChunkCoordinates.y, par1ChunkCoordinates.z); - } - - public int compareTo(Object par1Obj) - { - return this.compareWorldCoordinate((WorldCoordinates)par1Obj); - } - - public void readNBT(NBTTagCompound nbt) { - this.x = nbt.getInteger("w_x"); - this.y = nbt.getInteger("w_y"); - this.z = nbt.getInteger("w_z"); - this.dim = nbt.getInteger("w_d"); - } - - public void writeNBT(NBTTagCompound nbt) { - nbt.setInteger("w_x",x); - nbt.setInteger("w_y",y); - nbt.setInteger("w_z",z); - nbt.setInteger("w_d",dim); - } - -} diff --git a/src/api/java/thaumcraft/api/aspects/Aspect.java b/src/api/java/thaumcraft/api/aspects/Aspect.java deleted file mode 100644 index 3c33a4a7..00000000 --- a/src/api/java/thaumcraft/api/aspects/Aspect.java +++ /dev/null @@ -1,201 +0,0 @@ -package thaumcraft.api.aspects; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.LinkedHashMap; - -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; - -import org.apache.commons.lang3.text.WordUtils; - -public class Aspect { - - String tag; - Aspect[] components; - int color; - private String chatcolor; - ResourceLocation image; - int blend; - - /** - * Use this constructor to register your own aspects. - * @param tag the key that will be used to reference this aspect, as well as its latin display name - * @param color color to display the tag in - * @param components the aspects this one is formed from - * @param image ResourceLocation pointing to a 32x32 icon of the aspect - * @param blend GL11 blendmode (1 or 771). Used for rendering nodes. Default is 1 - */ - public Aspect(String tag, int color, Aspect[] components, ResourceLocation image, int blend) { - if (aspects.containsKey(tag)) throw new IllegalArgumentException(tag+" already registered!"); - this.tag = tag; - this.components = components; - this.color = color; - this.image = image; - this.blend = blend; - aspects.put(tag, this); - } - - /** - * Shortcut constructor I use for the default aspects - you shouldn't be using this. - */ - public Aspect(String tag, int color, Aspect[] components) { - this(tag,color,components,new ResourceLocation("thaumcraft","textures/aspects/"+tag.toLowerCase()+".png"),1); - } - - /** - * Shortcut constructor I use for the default aspects - you shouldn't be using this. - */ - public Aspect(String tag, int color, Aspect[] components, int blend) { - this(tag,color,components,new ResourceLocation("thaumcraft","textures/aspects/"+tag.toLowerCase()+".png"),blend); - } - - /** - * Shortcut constructor I use for the primal aspects - - * you shouldn't use this as making your own primal aspects will break all the things. - */ - public Aspect(String tag, int color, String chatcolor, int blend) { - this(tag,color,(Aspect[])null, blend); - this.setChatcolor(chatcolor); - } - - public int getColor() { - return color; - } - - public String getName() { - return WordUtils.capitalizeFully(tag); - } - - public String getLocalizedDescription() { - return StatCollector.translateToLocal("tc.aspect."+tag); - } - - public String getTag() { - return tag; - } - - public void setTag(String tag) { - this.tag = tag; - } - - public Aspect[] getComponents() { - return components; - } - - public void setComponents(Aspect[] components) { - this.components = components; - } - - public ResourceLocation getImage() { - return image; - } - - public static Aspect getAspect(String tag) { - return aspects.get(tag); - } - - public int getBlend() { - return blend; - } - - public void setBlend(int blend) { - this.blend = blend; - } - - public boolean isPrimal() { - return getComponents()==null || getComponents().length!=2; - } - - /////////////////////////////// - public static ArrayList getPrimalAspects() { - ArrayList primals = new ArrayList(); - Collection pa = aspects.values(); - for (Aspect aspect:pa) { - if (aspect.isPrimal()) primals.add(aspect); - } - return primals; - } - - public static ArrayList getCompoundAspects() { - ArrayList compounds = new ArrayList(); - Collection pa = aspects.values(); - for (Aspect aspect:pa) { - if (!aspect.isPrimal()) compounds.add(aspect); - } - return compounds; - } - - public String getChatcolor() { - return chatcolor; - } - - public void setChatcolor(String chatcolor) { - this.chatcolor = chatcolor; - } - - - /////////////////////////////// - public static LinkedHashMap aspects = new LinkedHashMap(); - - //PRIMAL - public static final Aspect AIR = new Aspect("aer",0xffff7e,"e",1); - public static final Aspect EARTH = new Aspect("terra",0x56c000,"2",1); - public static final Aspect FIRE = new Aspect("ignis",0xff5a01,"c",1); - public static final Aspect WATER = new Aspect("aqua",0x3cd4fc,"3",1); - public static final Aspect ORDER = new Aspect("ordo",0xd5d4ec,"7",1); - public static final Aspect ENTROPY = new Aspect("perditio",0x404040,"8",771); - - //SECONDARY - public static final Aspect VOID = new Aspect("vacuos",0x888888, new Aspect[] {AIR, ENTROPY},771); - public static final Aspect LIGHT = new Aspect("lux",0xfff663, new Aspect[] {AIR, FIRE}); - public static final Aspect WEATHER = new Aspect("tempestas",0xFFFFFF, new Aspect[] {AIR, WATER}); - public static final Aspect MOTION = new Aspect("motus",0xcdccf4, new Aspect[] {AIR, ORDER}); - public static final Aspect COLD = new Aspect("gelum",0xe1ffff, new Aspect[] {FIRE, ENTROPY}); - public static final Aspect CRYSTAL = new Aspect("vitreus",0x80ffff, new Aspect[] {EARTH, ORDER}); - public static final Aspect LIFE = new Aspect("victus",0xde0005, new Aspect[] {WATER, EARTH}); - public static final Aspect POISON = new Aspect("venenum",0x89f000, new Aspect[] {WATER, ENTROPY}); - public static final Aspect ENERGY = new Aspect("potentia",0xc0ffff, new Aspect[] {ORDER, FIRE}); - public static final Aspect EXCHANGE = new Aspect("permutatio",0x578357, new Aspect[] {ENTROPY, ORDER}); -// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {AIR, EARTH}); -// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {FIRE, EARTH}); -// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {FIRE, WATER}); -// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {ORDER, WATER}); -// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {EARTH, ENTROPY}); - - //TERTIARY - public static final Aspect METAL = new Aspect("metallum",0xb5b5cd, new Aspect[] {EARTH, CRYSTAL}); - public static final Aspect DEATH = new Aspect("mortuus",0x887788, new Aspect[] {LIFE, ENTROPY}); - public static final Aspect FLIGHT = new Aspect("volatus",0xe7e7d7, new Aspect[] {AIR, MOTION}); - public static final Aspect DARKNESS = new Aspect("tenebrae",0x222222, new Aspect[] {VOID, LIGHT}); - public static final Aspect SOUL = new Aspect("spiritus",0xebebfb, new Aspect[] {LIFE, DEATH}); - public static final Aspect HEAL = new Aspect("sano",0xff2f34, new Aspect[] {LIFE, ORDER}); - public static final Aspect TRAVEL = new Aspect("iter",0xe0585b, new Aspect[] {MOTION, EARTH}); - public static final Aspect ELDRITCH = new Aspect("alienis",0x805080, new Aspect[] {VOID, DARKNESS}); - public static final Aspect MAGIC = new Aspect("praecantatio",0x9700c0, new Aspect[] {VOID, ENERGY}); - public static final Aspect AURA = new Aspect("auram",0xffc0ff, new Aspect[] {MAGIC, AIR}); - public static final Aspect TAINT = new Aspect("vitium",0x800080, new Aspect[] {MAGIC, ENTROPY}); - public static final Aspect SLIME = new Aspect("limus",0x01f800, new Aspect[] {LIFE, WATER}); - public static final Aspect PLANT = new Aspect("herba",0x01ac00, new Aspect[] {LIFE, EARTH}); - public static final Aspect TREE = new Aspect("arbor",0x876531, new Aspect[] {AIR, PLANT}); - public static final Aspect BEAST = new Aspect("bestia",0x9f6409, new Aspect[] {MOTION, LIFE}); - public static final Aspect FLESH = new Aspect("corpus",0xee478d, new Aspect[] {DEATH, BEAST}); - public static final Aspect UNDEAD = new Aspect("exanimis",0x3a4000, new Aspect[] {MOTION, DEATH}); - public static final Aspect MIND = new Aspect("cognitio",0xffc2b3, new Aspect[] {EARTH, SOUL}); - public static final Aspect SENSES = new Aspect("sensus",0x0fd9ff, new Aspect[] {AIR, SOUL}); - public static final Aspect MAN = new Aspect("humanus",0xffd7c0, new Aspect[] {BEAST, MIND}); - public static final Aspect CROP = new Aspect("messis",0xe1b371, new Aspect[] {PLANT, MAN}); - public static final Aspect MINE = new Aspect("perfodio",0xdcd2d8, new Aspect[] {MAN, EARTH}); - public static final Aspect TOOL = new Aspect("instrumentum",0x4040ee, new Aspect[] {MAN, ORDER}); - public static final Aspect HARVEST = new Aspect("meto",0xeead82, new Aspect[] {CROP, TOOL}); - public static final Aspect WEAPON = new Aspect("telum",0xc05050, new Aspect[] {TOOL, ENTROPY}); - public static final Aspect ARMOR = new Aspect("tutamen",0x00c0c0, new Aspect[] {TOOL, EARTH}); - public static final Aspect HUNGER = new Aspect("fames",0x9a0305, new Aspect[] {LIFE, VOID}); - public static final Aspect GREED = new Aspect("lucrum",0xe6be44, new Aspect[] {MAN, HUNGER}); - public static final Aspect CRAFT = new Aspect("fabrico",0x809d80, new Aspect[] {MAN, TOOL}); - public static final Aspect CLOTH = new Aspect("pannus",0xeaeac2, new Aspect[] {TOOL, BEAST}); - public static final Aspect MECHANISM = new Aspect("machina",0x8080a0, new Aspect[] {MOTION, TOOL}); - public static final Aspect TRAP = new Aspect("vinculum",0x9a8080, new Aspect[] {MOTION, ENTROPY}); - - -} diff --git a/src/api/java/thaumcraft/api/aspects/AspectList.java b/src/api/java/thaumcraft/api/aspects/AspectList.java deleted file mode 100644 index 6b9dfcef..00000000 --- a/src/api/java/thaumcraft/api/aspects/AspectList.java +++ /dev/null @@ -1,256 +0,0 @@ -package thaumcraft.api.aspects; - -import java.io.Serializable; -import java.util.LinkedHashMap; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import thaumcraft.api.ThaumcraftApiHelper; - -public class AspectList implements Serializable { - - public LinkedHashMap aspects = new LinkedHashMap();//aspects associated with this object - - - /** - * this creates a new aspect list with preloaded values based off the aspects of the given item. - * @param the itemstack of the given item - */ - public AspectList(ItemStack stack) { - try { - AspectList temp = ThaumcraftApiHelper.getObjectAspects(stack); - if (temp!=null) - for (Aspect tag:temp.getAspects()) { - add(tag,temp.getAmount(tag)); - } - } catch (Exception e) {} - } - - public AspectList() { - } - - public AspectList copy() { - AspectList out = new AspectList(); - for (Aspect a:this.getAspects()) - out.add(a, this.getAmount(a)); - return out; - } - - /** - * @return the amount of different aspects in this collection - */ - public int size() { - return aspects.size(); - } - - /** - * @return the amount of total vis in this collection - */ - public int visSize() { - int q = 0; - - for (Aspect as:aspects.keySet()) { - q+=this.getAmount(as); - } - - return q; - } - - /** - * @return an array of all the aspects in this collection - */ - public Aspect[] getAspects() { - Aspect[] q = new Aspect[1]; - return aspects.keySet().toArray(q); - } - - /** - * @return an array of all the aspects in this collection - */ - public Aspect[] getPrimalAspects() { - AspectList t = new AspectList(); - for (Aspect as:aspects.keySet()) { - if (as.isPrimal()) { - t.add(as,1); - } - } - Aspect[] q = new Aspect[1]; - return t.aspects.keySet().toArray(q); - } - - /** - * @return an array of all the aspects in this collection sorted by name - */ - public Aspect[] getAspectsSorted() { - try { - Aspect[] out = aspects.keySet().toArray(new Aspect[1]); - boolean change=false; - do { - change=false; - for(int a=0;a0) { - out[a] = e2; - out[a+1] = e1; - change = true; - break; - } - } - } while (change==true); - return out; - } catch (Exception e) { - return this.getAspects(); - } - } - - /** - * @return an array of all the aspects in this collection sorted by amount - */ - public Aspect[] getAspectsSortedAmount() { - try { - Aspect[] out = aspects.keySet().toArray(new Aspect[1]); - boolean change=false; - do { - change=false; - for(int a=0;a0 && e2>0 && e2>e1) { - Aspect ea = out[a]; - Aspect eb = out[a+1]; - out[a] = eb; - out[a+1] = ea; - change = true; - break; - } - } - } while (change==true); - return out; - } catch (Exception e) { - return this.getAspects(); - } - } - - /** - * @param key - * @return the amount associated with the given aspect in this collection - */ - public int getAmount(Aspect key) { - return aspects.get(key)==null?0:aspects.get(key); - } - - /** - * Reduces the amount of an aspect in this collection by the given amount. - * @param key - * @param amount - * @return - */ - public boolean reduce(Aspect key, int amount) { - if (getAmount(key)>=amount) { - int am = getAmount(key)-amount; - aspects.put(key, am); - return true; - } - return false; - } - - /** - * Reduces the amount of an aspect in this collection by the given amount. - * If reduced to 0 or less the aspect will be removed completely. - * @param key - * @param amount - * @return - */ - public AspectList remove(Aspect key, int amount) { - int am = getAmount(key)-amount; - if (am<=0) aspects.remove(key); else - this.aspects.put(key, am); - return this; - } - - /** - * Simply removes the aspect from the list - * @param key - * @param amount - * @return - */ - public AspectList remove(Aspect key) { - aspects.remove(key); - return this; - } - - /** - * Adds this aspect and amount to the collection. - * If the aspect exists then its value will be increased by the given amount. - * @param aspect - * @param amount - * @return - */ - public AspectList add(Aspect aspect, int amount) { - if (this.aspects.containsKey(aspect)) { - int oldamount = this.aspects.get(aspect); - amount+=oldamount; - } - this.aspects.put( aspect, amount ); - return this; - } - - - /** - * Adds this aspect and amount to the collection. - * If the aspect exists then only the highest of the old or new amount will be used. - * @param aspect - * @param amount - * @return - */ - public AspectList merge(Aspect aspect, int amount) { - if (this.aspects.containsKey(aspect)) { - int oldamount = this.aspects.get(aspect); - if (amount0?aspects:null; - } - return null; - } - - @Override - public void setAspects(ItemStack itemstack, AspectList aspects) { - if (!itemstack.hasTagCompound()) itemstack.setTagCompound(new NBTTagCompound()); - aspects.writeToNBT(itemstack.getTagCompound()); - } -*/ \ No newline at end of file diff --git a/src/api/java/thaumcraft/api/aspects/IEssentiaTransport.java b/src/api/java/thaumcraft/api/aspects/IEssentiaTransport.java deleted file mode 100644 index fecbc160..00000000 --- a/src/api/java/thaumcraft/api/aspects/IEssentiaTransport.java +++ /dev/null @@ -1,100 +0,0 @@ -package thaumcraft.api.aspects; - -import net.minecraftforge.common.util.ForgeDirection; - - -/** - * @author Azanor - * This interface is used by tiles that use or transport vis. - * Only tiles that implement this interface will be able to connect to vis conduits or other thaumic devices - */ -public interface IEssentiaTransport { - /** - * Is this tile able to connect to other vis users/sources on the specified side? - * @param face - * @return - */ - public boolean isConnectable(ForgeDirection face); - - /** - * Is this side used to input essentia? - * @param face - * @return - */ - boolean canInputFrom(ForgeDirection face); - - /** - * Is this side used to output essentia? - * @param face - * @return - */ - boolean canOutputTo(ForgeDirection face); - - /** - * Sets the amount of suction this block will apply - * @param suction - */ - public void setSuction(Aspect aspect, int amount); - - /** - * Returns the type of suction this block is applying. - * @param loc - * the location from where the suction is being checked - * @return - * a return type of null indicates the suction is untyped and the first thing available will be drawn - */ - public Aspect getSuctionType(ForgeDirection face); - - /** - * Returns the strength of suction this block is applying. - * @param loc - * the location from where the suction is being checked - * @return - */ - public int getSuctionAmount(ForgeDirection face); - - /** - * remove the specified amount of essentia from this transport tile - * @return how much was actually taken - */ - public int takeEssentia(Aspect aspect, int amount, ForgeDirection face); - - /** - * add the specified amount of essentia to this transport tile - * @return how much was actually added - */ - public int addEssentia(Aspect aspect, int amount, ForgeDirection face); - - /** - * What type of essentia this contains - * @param face - * @return - */ - public Aspect getEssentiaType(ForgeDirection face); - - /** - * How much essentia this block contains - * @param face - * @return - */ - public int getEssentiaAmount(ForgeDirection face); - - - - /** - * Essentia will not be drawn from this container unless the suction exceeds this amount. - * @return the amount - */ - public int getMinimumSuction(); - - /** - * Return true if you want the conduit to extend a little further into the block. - * Used by jars and alembics that have smaller than normal hitboxes - * @return - */ - boolean renderExtendedTube(); - - - -} - diff --git a/src/api/java/thaumcraft/api/crafting/CrucibleRecipe.java b/src/api/java/thaumcraft/api/crafting/CrucibleRecipe.java deleted file mode 100644 index 83f6e160..00000000 --- a/src/api/java/thaumcraft/api/crafting/CrucibleRecipe.java +++ /dev/null @@ -1,111 +0,0 @@ -package thaumcraft.api.crafting; - -import java.util.ArrayList; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.oredict.OreDictionary; -import thaumcraft.api.ThaumcraftApiHelper; -import thaumcraft.api.aspects.Aspect; -import thaumcraft.api.aspects.AspectList; - -public class CrucibleRecipe { - - private ItemStack recipeOutput; - - public Object catalyst; - public AspectList aspects; - public String key; - - public int hash; - - public CrucibleRecipe(String researchKey, ItemStack result, Object cat, AspectList tags) { - recipeOutput = result; - this.aspects = tags; - this.key = researchKey; - this.catalyst = cat; - if (cat instanceof String) { - this.catalyst = OreDictionary.getOres((String) cat); - } - String hc = researchKey + result.toString(); - for (Aspect tag:tags.getAspects()) { - hc += tag.getTag()+tags.getAmount(tag); - } - if (cat instanceof ItemStack) { - hc += ((ItemStack)cat).toString(); - } else - if (cat instanceof ArrayList && ((ArrayList)catalyst).size()>0) { - for (ItemStack is :(ArrayList)catalyst) { - hc += is.toString(); - } - } - - hash = hc.hashCode(); - } - - - - public boolean matches(AspectList itags, ItemStack cat) { - if (catalyst instanceof ItemStack && - !ThaumcraftApiHelper.itemMatches((ItemStack) catalyst,cat,false)) { - return false; - } else - if (catalyst instanceof ArrayList && ((ArrayList)catalyst).size()>0) { - ItemStack[] ores = ((ArrayList)catalyst).toArray(new ItemStack[]{}); - if (!ThaumcraftApiHelper.containsMatch(false, new ItemStack[]{cat},ores)) return false; - } - if (itags==null) return false; - for (Aspect tag:aspects.getAspects()) { - if (itags.getAmount(tag))catalyst).size()>0) { - ItemStack[] ores = ((ArrayList)catalyst).toArray(new ItemStack[]{}); - if (ThaumcraftApiHelper.containsMatch(false, new ItemStack[]{cat},ores)) return true; - } - return false; - } - - public AspectList removeMatching(AspectList itags) { - AspectList temptags = new AspectList(); - temptags.aspects.putAll(itags.aspects); - - for (Aspect tag:aspects.getAspects()) { - temptags.remove(tag, aspects.getAmount(tag)); -// if (!temptags.remove(tag, aspects.getAmount(tag))) return null; - } - - itags = temptags; - return itags; - } - - public ItemStack getRecipeOutput() { - return recipeOutput; - } - - -// @Override -// public int hashCode() { -// String hash = ""; -// if (catalyst instanceof ItemStack) { -// hash += ((ItemStack)catalyst).toString(); -// } else if (catalyst instanceof ArrayList && ((ArrayList)catalyst).size()>0) { -// for (ItemStack s:(ArrayList)catalyst) { -// hash += s.toString(); -// } -// } else { -// hash += catalyst.hashCode(); -// } -// hash += getRecipeOutput().toString(); -// for (Aspect a:aspects.getAspectsSorted()) { -// hash += a.getTag() + aspects.getAmount(a); -// } -// return hash.hashCode(); -// } - -} diff --git a/src/api/java/thaumcraft/api/crafting/IArcaneRecipe.java b/src/api/java/thaumcraft/api/crafting/IArcaneRecipe.java deleted file mode 100644 index bb5036d2..00000000 --- a/src/api/java/thaumcraft/api/crafting/IArcaneRecipe.java +++ /dev/null @@ -1,35 +0,0 @@ -package thaumcraft.api.crafting; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import thaumcraft.api.aspects.AspectList; - -public interface IArcaneRecipe -{ - - - /** - * Used to check if a recipe matches current crafting inventory - * @param player - */ - boolean matches(IInventory var1, World world, EntityPlayer player); - - /** - * Returns an Item that is the result of this recipe - */ - ItemStack getCraftingResult(IInventory var1); - - /** - * Returns the size of the recipe area - */ - int getRecipeSize(); - - ItemStack getRecipeOutput(); - AspectList getAspects(); - AspectList getAspects(IInventory var1); - String getResearch(); - - -} diff --git a/src/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java b/src/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java deleted file mode 100644 index d137ff24..00000000 --- a/src/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java +++ /dev/null @@ -1,19 +0,0 @@ -package thaumcraft.api.crafting; - -import net.minecraft.world.World; - -/** - * - * @author Azanor - * - * Blocks that implement this interface act as infusion crafting stabilisers like candles and skulls - * - */ -public interface IInfusionStabiliser { - - /** - * returns true if the block can stabilise things - */ - public boolean canStabaliseInfusion(World world, int x, int y, int z); - -} diff --git a/src/api/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java b/src/api/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java deleted file mode 100644 index 6fb4d63d..00000000 --- a/src/api/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java +++ /dev/null @@ -1,156 +0,0 @@ -package thaumcraft.api.crafting; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.Map; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -import thaumcraft.api.ThaumcraftApiHelper; -import thaumcraft.api.aspects.AspectList; - -public class InfusionEnchantmentRecipe -{ - - public AspectList aspects; - public String research; - public ItemStack[] components; - public Enchantment enchantment; - public int recipeXP; - public int instability; - - public InfusionEnchantmentRecipe(String research, Enchantment input, int inst, - AspectList aspects2, ItemStack[] recipe) { - this.research = research; - this.enchantment = input; - this.aspects = aspects2; - this.components = recipe; - this.instability = inst; - this.recipeXP = Math.max(1, input.getMinEnchantability(1)/3); - } - - /** - * Used to check if a recipe matches current crafting inventory - * @param player - */ - public boolean matches(ArrayList input, ItemStack central, World world, EntityPlayer player) { - if (research.length()>0 && !ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), research)) { - return false; - } - - if (!enchantment.canApply(central) || !central.getItem().isItemTool(central)) { - return false; - } - - Map map1 = EnchantmentHelper.getEnchantments(central); - Iterator iterator = map1.keySet().iterator(); - while (iterator.hasNext()) - { - int j1 = ((Integer)iterator.next()).intValue(); - Enchantment ench = Enchantment.enchantmentsList[j1]; - if (j1 == enchantment.effectId && - EnchantmentHelper.getEnchantmentLevel(j1, central)>=ench.getMaxLevel()) - return false; - if (enchantment.effectId != ench.effectId && - (!enchantment.canApplyTogether(ench) || - !ench.canApplyTogether(enchantment))) { - return false; - } - } - - ItemStack i2 = null; - - ArrayList ii = new ArrayList(); - for (ItemStack is:input) { - ii.add(is.copy()); - } - - for (ItemStack comp:components) { - boolean b=false; - for (int a=0;a stack0.getMaxStackSize() ? false : t1)); - } - - - public Enchantment getEnchantment() { - return enchantment; - - } - - public AspectList getAspects() { - return aspects; - - } - - public String getResearch() { - return research; - - } - - public int calcInstability(ItemStack recipeInput) { - int i = 0; - Map map1 = EnchantmentHelper.getEnchantments(recipeInput); - Iterator iterator = map1.keySet().iterator(); - while (iterator.hasNext()) - { - int j1 = ((Integer)iterator.next()).intValue(); - i += EnchantmentHelper.getEnchantmentLevel(j1, recipeInput); - } - return (i/2) + instability; - } - - public int calcXP(ItemStack recipeInput) { - return recipeXP * (1+EnchantmentHelper.getEnchantmentLevel(enchantment.effectId, recipeInput)); - } - - public float getEssentiaMod(ItemStack recipeInput) { - float mod = EnchantmentHelper.getEnchantmentLevel(enchantment.effectId, recipeInput); - Map map1 = EnchantmentHelper.getEnchantments(recipeInput); - Iterator iterator = map1.keySet().iterator(); - while (iterator.hasNext()) - { - int j1 = ((Integer)iterator.next()).intValue(); - if (j1 != enchantment.effectId) - mod += EnchantmentHelper.getEnchantmentLevel(j1, recipeInput) * .1f; - } - return mod; - } - -} diff --git a/src/api/java/thaumcraft/api/crafting/InfusionRecipe.java b/src/api/java/thaumcraft/api/crafting/InfusionRecipe.java deleted file mode 100644 index fef0a347..00000000 --- a/src/api/java/thaumcraft/api/crafting/InfusionRecipe.java +++ /dev/null @@ -1,128 +0,0 @@ -package thaumcraft.api.crafting; - -import java.util.ArrayList; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -import thaumcraft.api.ThaumcraftApiHelper; -import thaumcraft.api.aspects.AspectList; - -public class InfusionRecipe -{ - protected AspectList aspects; - protected String research; - private ItemStack[] components; - private ItemStack recipeInput; - protected Object recipeOutput; - protected int instability; - - public InfusionRecipe(String research, Object output, int inst, - AspectList aspects2, ItemStack input, ItemStack[] recipe) { - this.research = research; - this.recipeOutput = output; - this.recipeInput = input; - this.aspects = aspects2; - this.components = recipe; - this.instability = inst; - } - - /** - * Used to check if a recipe matches current crafting inventory - * @param player - */ - public boolean matches(ArrayList input, ItemStack central, World world, EntityPlayer player) { - if (getRecipeInput()==null) return false; - - if (research.length()>0 && !ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), research)) { - return false; - } - - ItemStack i2 = central.copy(); - if (getRecipeInput().getItemDamage()==OreDictionary.WILDCARD_VALUE) { - i2.setItemDamage(OreDictionary.WILDCARD_VALUE); - } - - if (!areItemStacksEqual(i2, getRecipeInput(), true)) return false; - - ArrayList ii = new ArrayList(); - for (ItemStack is:input) { - ii.add(is.copy()); - } - - for (ItemStack comp:getComponents()) { - boolean b=false; - for (int a=0;a stack0.getMaxStackSize() ? false : t1)); - } - - - public Object getRecipeOutput() { - return getRecipeOutput(this.getRecipeInput()); - } - - public AspectList getAspects() { - return getAspects(this.getRecipeInput()); - } - - public int getInstability() { - return getInstability(this.getRecipeInput()); - } - - public String getResearch() { - return research; - } - - public ItemStack getRecipeInput() { - return recipeInput; - } - - public ItemStack[] getComponents() { - return components; - } - - public Object getRecipeOutput(ItemStack input) { - return recipeOutput; - } - - public AspectList getAspects(ItemStack input) { - return aspects; - } - - public int getInstability(ItemStack input) { - return instability; - } -} diff --git a/src/api/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java b/src/api/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java deleted file mode 100644 index 40c7bc27..00000000 --- a/src/api/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java +++ /dev/null @@ -1,261 +0,0 @@ -package thaumcraft.api.crafting; - -import java.util.ArrayList; -import java.util.HashMap; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -import thaumcraft.api.ThaumcraftApiHelper; -import thaumcraft.api.aspects.AspectList; - -public class ShapedArcaneRecipe implements IArcaneRecipe -{ - //Added in for future ease of change, but hard coded for now. - private static final int MAX_CRAFT_GRID_WIDTH = 3; - private static final int MAX_CRAFT_GRID_HEIGHT = 3; - - public ItemStack output = null; - public Object[] input = null; - public AspectList aspects = null; - public String research; - public int width = 0; - public int height = 0; - private boolean mirrored = true; - - public ShapedArcaneRecipe(String research, Block result, AspectList aspects, Object... recipe){ this(research, new ItemStack(result), aspects, recipe); } - public ShapedArcaneRecipe(String research, Item result, AspectList aspects, Object... recipe){ this(research, new ItemStack(result), aspects, recipe); } - public ShapedArcaneRecipe(String research, ItemStack result, AspectList aspects, Object... recipe) - { - output = result.copy(); - this.research = research; - this.aspects = aspects; - String shape = ""; - - int idx = 0; - - if (recipe[idx] instanceof Boolean) - { - mirrored = (Boolean)recipe[idx]; - if (recipe[idx+1] instanceof Object[]) - { - recipe = (Object[])recipe[idx+1]; - } - else - { - idx = 1; - } - } - - if (recipe[idx] instanceof String[]) - { - String[] parts = ((String[])recipe[idx++]); - - for (String s : parts) - { - width = s.length(); - shape += s; - } - - height = parts.length; - } - else - { - while (recipe[idx] instanceof String) - { - String s = (String)recipe[idx++]; - shape += s; - width = s.length(); - height++; - } - } - - if (width * height != shape.length()) - { - String ret = "Invalid shaped ore recipe: "; - for (Object tmp : recipe) - { - ret += tmp + ", "; - } - ret += output; - throw new RuntimeException(ret); - } - - HashMap itemMap = new HashMap(); - - for (; idx < recipe.length; idx += 2) - { - Character chr = (Character)recipe[idx]; - Object in = recipe[idx + 1]; - - if (in instanceof ItemStack) - { - itemMap.put(chr, ((ItemStack)in).copy()); - } - else if (in instanceof Item) - { - itemMap.put(chr, new ItemStack((Item)in)); - } - else if (in instanceof Block) - { - itemMap.put(chr, new ItemStack((Block)in, 1, OreDictionary.WILDCARD_VALUE)); - } - else if (in instanceof String) - { - itemMap.put(chr, OreDictionary.getOres((String)in)); - } - else - { - String ret = "Invalid shaped ore recipe: "; - for (Object tmp : recipe) - { - ret += tmp + ", "; - } - ret += output; - throw new RuntimeException(ret); - } - } - - input = new Object[width * height]; - int x = 0; - for (char chr : shape.toCharArray()) - { - input[x++] = itemMap.get(chr); - } - } - - @Override - public ItemStack getCraftingResult(IInventory var1){ return output.copy(); } - - @Override - public int getRecipeSize(){ return input.length; } - - @Override - public ItemStack getRecipeOutput(){ return output; } - - @Override - public boolean matches(IInventory inv, World world, EntityPlayer player) - { - if (research.length()>0 && !ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), research)) { - return false; - } - for (int x = 0; x <= MAX_CRAFT_GRID_WIDTH - width; x++) - { - for (int y = 0; y <= MAX_CRAFT_GRID_HEIGHT - height; ++y) - { - if (checkMatch(inv, x, y, false)) - { - return true; - } - - if (mirrored && checkMatch(inv, x, y, true)) - { - return true; - } - } - } - - return false; - } - - private boolean checkMatch(IInventory inv, int startX, int startY, boolean mirror) - { - for (int x = 0; x < MAX_CRAFT_GRID_WIDTH; x++) - { - for (int y = 0; y < MAX_CRAFT_GRID_HEIGHT; y++) - { - int subX = x - startX; - int subY = y - startY; - Object target = null; - - if (subX >= 0 && subY >= 0 && subX < width && subY < height) - { - if (mirror) - { - target = input[width - subX - 1 + subY * width]; - } - else - { - target = input[subX + subY * width]; - } - } - - ItemStack slot = ThaumcraftApiHelper.getStackInRowAndColumn(inv, x, y); - - if (target instanceof ItemStack) - { - if (!checkItemEquals((ItemStack)target, slot)) - { - return false; - } - } - else if (target instanceof ArrayList) - { - boolean matched = false; - - for (ItemStack item : (ArrayList)target) - { - matched = matched || checkItemEquals(item, slot); - } - - if (!matched) - { - return false; - } - } - else if (target == null && slot != null) - { - return false; - } - } - } - - return true; - } - - private boolean checkItemEquals(ItemStack target, ItemStack input) - { - if (input == null && target != null || input != null && target == null) - { - return false; - } - return (target.getItem() == input.getItem() && - (!target.hasTagCompound() || ItemStack.areItemStackTagsEqual(target, input)) && - (target.getItemDamage() == OreDictionary.WILDCARD_VALUE|| target.getItemDamage() == input.getItemDamage())); - } - - public ShapedArcaneRecipe setMirrored(boolean mirror) - { - mirrored = mirror; - return this; - } - - /** - * Returns the input for this recipe, any mod accessing this value should never - * manipulate the values in this array as it will effect the recipe itself. - * @return The recipes input vales. - */ - public Object[] getInput() - { - return this.input; - } - - @Override - public AspectList getAspects() { - return aspects; - } - - @Override - public AspectList getAspects(IInventory inv) { - return aspects; - } - - @Override - public String getResearch() { - return research; - } -} diff --git a/src/api/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java b/src/api/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java deleted file mode 100644 index 3d4ed508..00000000 --- a/src/api/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java +++ /dev/null @@ -1,157 +0,0 @@ -package thaumcraft.api.crafting; - -import java.util.ArrayList; -import java.util.Iterator; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -import thaumcraft.api.ThaumcraftApiHelper; -import thaumcraft.api.aspects.AspectList; - -public class ShapelessArcaneRecipe implements IArcaneRecipe -{ - private ItemStack output = null; - private ArrayList input = new ArrayList(); - - public AspectList aspects = null; - public String research; - - public ShapelessArcaneRecipe(String research, Block result, AspectList aspects, Object... recipe){ this(research,new ItemStack(result),aspects, recipe); } - public ShapelessArcaneRecipe(String research, Item result, AspectList aspects, Object... recipe){ this(research,new ItemStack(result),aspects, recipe); } - - public ShapelessArcaneRecipe(String research, ItemStack result, AspectList aspects, Object... recipe) - { - output = result.copy(); - this.research = research; - this.aspects = aspects; - for (Object in : recipe) - { - if (in instanceof ItemStack) - { - input.add(((ItemStack)in).copy()); - } - else if (in instanceof Item) - { - input.add(new ItemStack((Item)in)); - } - else if (in instanceof Block) - { - input.add(new ItemStack((Block)in)); - } - else if (in instanceof String) - { - input.add(OreDictionary.getOres((String)in)); - } - else - { - String ret = "Invalid shapeless ore recipe: "; - for (Object tmp : recipe) - { - ret += tmp + ", "; - } - ret += output; - throw new RuntimeException(ret); - } - } - } - - @Override - public int getRecipeSize(){ return input.size(); } - - @Override - public ItemStack getRecipeOutput(){ return output; } - - @Override - public ItemStack getCraftingResult(IInventory var1){ return output.copy(); } - - @Override - public boolean matches(IInventory var1, World world, EntityPlayer player) - { - if (research.length()>0 && !ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), research)) { - return false; - } - - ArrayList required = new ArrayList(input); - - for (int x = 0; x < 9; x++) - { - ItemStack slot = var1.getStackInSlot(x); - - if (slot != null) - { - boolean inRecipe = false; - Iterator req = required.iterator(); - - while (req.hasNext()) - { - boolean match = false; - - Object next = req.next(); - - if (next instanceof ItemStack) - { - match = checkItemEquals((ItemStack)next, slot); - } - else if (next instanceof ArrayList) - { - for (ItemStack item : (ArrayList)next) - { - match = match || checkItemEquals(item, slot); - } - } - - if (match) - { - inRecipe = true; - required.remove(next); - break; - } - } - - if (!inRecipe) - { - return false; - } - } - } - - return required.isEmpty(); - } - - private boolean checkItemEquals(ItemStack target, ItemStack input) - { - return (target.getItem() == input.getItem() && - (!target.hasTagCompound() || ItemStack.areItemStackTagsEqual(target, input)) && - (target.getItemDamage() == OreDictionary.WILDCARD_VALUE || target.getItemDamage() == input.getItemDamage())); - } - - /** - * Returns the input for this recipe, any mod accessing this value should never - * manipulate the values in this array as it will effect the recipe itself. - * @return The recipes input vales. - */ - public ArrayList getInput() - { - return this.input; - } - - @Override - public AspectList getAspects() { - return aspects; - } - - @Override - public AspectList getAspects(IInventory inv) { - return aspects; - } - - @Override - public String getResearch() { - return research; - } -} diff --git a/src/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java b/src/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java deleted file mode 100644 index 1562d052..00000000 --- a/src/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java +++ /dev/null @@ -1,32 +0,0 @@ -package thaumcraft.api.damagesource; - -import net.minecraft.entity.Entity; -import net.minecraft.util.DamageSource; -import net.minecraft.util.EntityDamageSourceIndirect; - -public class DamageSourceIndirectThaumcraftEntity extends EntityDamageSourceIndirect { - - private boolean fireDamage; - private float hungerDamage; - private boolean isUnblockable; - - - public DamageSourceIndirectThaumcraftEntity(String par1Str, - Entity par2Entity, Entity par3Entity) { - super(par1Str, par2Entity, par3Entity); - } - - - public DamageSource setFireDamage() - { - this.fireDamage = true; - return this; - } - - public DamageSource setDamageBypassesArmor() - { - this.isUnblockable = true; - this.hungerDamage = 0.0F; - return this; - } -} diff --git a/src/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java b/src/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java deleted file mode 100644 index bb55672b..00000000 --- a/src/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java +++ /dev/null @@ -1,47 +0,0 @@ -package thaumcraft.api.damagesource; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.util.DamageSource; -import net.minecraft.util.EntityDamageSource; - -public class DamageSourceThaumcraft extends DamageSource -{ - - public static DamageSource taint = new DamageSourceThaumcraft("taint").setDamageBypassesArmor().setMagicDamage(); - public static DamageSource tentacle = new DamageSourceThaumcraft("tentacle"); - public static DamageSource swarm = new DamageSourceThaumcraft("swarm"); - public static DamageSource dissolve = new DamageSourceThaumcraft("dissolve").setDamageBypassesArmor(); - - protected DamageSourceThaumcraft(String par1Str) { - super(par1Str); - } - - /** This kind of damage can be blocked or not. */ - private boolean isUnblockable = false; - private boolean isDamageAllowedInCreativeMode = false; - private float hungerDamage = 0.3F; - - /** This kind of damage is based on fire or not. */ - private boolean fireDamage; - - /** This kind of damage is based on a projectile or not. */ - private boolean projectile; - - /** - * Whether this damage source will have its damage amount scaled based on the current difficulty. - */ - private boolean difficultyScaled; - private boolean magicDamage = false; - private boolean explosion = false; - - public static DamageSource causeSwarmDamage(EntityLivingBase par0EntityLiving) - { - return new EntityDamageSource("swarm", par0EntityLiving); - } - - public static DamageSource causeTentacleDamage(EntityLivingBase par0EntityLiving) - { - return new EntityDamageSource("tentacle", par0EntityLiving); - } - -} diff --git a/src/api/java/thaumcraft/api/entities/ITaintedMob.java b/src/api/java/thaumcraft/api/entities/ITaintedMob.java deleted file mode 100644 index 83fb1fcb..00000000 --- a/src/api/java/thaumcraft/api/entities/ITaintedMob.java +++ /dev/null @@ -1,5 +0,0 @@ -package thaumcraft.api.entities; - -public interface ITaintedMob { - -} diff --git a/src/api/java/thaumcraft/api/nodes/INode.java b/src/api/java/thaumcraft/api/nodes/INode.java deleted file mode 100644 index 8c71414d..00000000 --- a/src/api/java/thaumcraft/api/nodes/INode.java +++ /dev/null @@ -1,53 +0,0 @@ -package thaumcraft.api.nodes; - -import thaumcraft.api.aspects.Aspect; -import thaumcraft.api.aspects.AspectList; -import thaumcraft.api.aspects.IAspectContainer; - -public interface INode extends IAspectContainer { - - /** - * Unique identifier to distinguish nodes. Normal node id's are based on world id and coordinates - * @return - */ - public String getId(); - - public AspectList getAspectsBase(); - - /** - * Return the type of node - * @return - */ - public NodeType getNodeType(); - - /** - * Set the type of node - * @return - */ - public void setNodeType(NodeType nodeType); - - /** - * Return the node modifier - * @return - */ - public void setNodeModifier(NodeModifier nodeModifier); - - /** - * Set the node modifier - * @return - */ - public NodeModifier getNodeModifier(); - - /** - * Return the maximum capacity of each aspect the node can hold - * @return - */ - public int getNodeVisBase(Aspect aspect); - - /** - * Set the maximum capacity of each aspect the node can hold - * @return - */ - public void setNodeVisBase(Aspect aspect, short nodeVisBase); - -} diff --git a/src/api/java/thaumcraft/api/nodes/IRevealer.java b/src/api/java/thaumcraft/api/nodes/IRevealer.java deleted file mode 100644 index 14a19b54..00000000 --- a/src/api/java/thaumcraft/api/nodes/IRevealer.java +++ /dev/null @@ -1,22 +0,0 @@ -package thaumcraft.api.nodes; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; - -/** - * - * @author Azanor - * - * Equipped head slot items that extend this class will make nodes visible in world. - * - */ - -public interface IRevealer { - - /* - * If this method returns true the nodes will be visible. - */ - public boolean showNodes(ItemStack itemstack, EntityLivingBase player); - - -} diff --git a/src/api/java/thaumcraft/api/nodes/NodeModifier.java b/src/api/java/thaumcraft/api/nodes/NodeModifier.java deleted file mode 100644 index 885b8678..00000000 --- a/src/api/java/thaumcraft/api/nodes/NodeModifier.java +++ /dev/null @@ -1,6 +0,0 @@ -package thaumcraft.api.nodes; - -public enum NodeModifier -{ - BRIGHT, PALE, FADING -} \ No newline at end of file diff --git a/src/api/java/thaumcraft/api/nodes/NodeType.java b/src/api/java/thaumcraft/api/nodes/NodeType.java deleted file mode 100644 index 355324b5..00000000 --- a/src/api/java/thaumcraft/api/nodes/NodeType.java +++ /dev/null @@ -1,6 +0,0 @@ -package thaumcraft.api.nodes; - -public enum NodeType -{ - NORMAL, UNSTABLE, DARK, TAINTED, HUNGRY, PURE -} \ No newline at end of file diff --git a/src/api/java/thaumcraft/api/potions/PotionFluxTaint.java b/src/api/java/thaumcraft/api/potions/PotionFluxTaint.java deleted file mode 100644 index b950de0e..00000000 --- a/src/api/java/thaumcraft/api/potions/PotionFluxTaint.java +++ /dev/null @@ -1,67 +0,0 @@ -package thaumcraft.api.potions; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.util.ResourceLocation; -import thaumcraft.api.damagesource.DamageSourceThaumcraft; -import thaumcraft.api.entities.ITaintedMob; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class PotionFluxTaint extends Potion -{ - public static PotionFluxTaint instance = null; // will be instantiated at runtime - private int statusIconIndex = -1; - - public PotionFluxTaint(int par1, boolean par2, int par3) - { - super(par1,par2,par3); - setIconIndex(0, 0); - } - - public static void init() - { - instance.setPotionName("potion.fluxtaint"); - instance.setIconIndex(3, 1); - instance.setEffectiveness(0.25D); - } - - @Override - public boolean isBadEffect() { - return true; - } - - @Override - @SideOnly(Side.CLIENT) - public int getStatusIconIndex() { - Minecraft.getMinecraft().renderEngine.bindTexture(rl); - return super.getStatusIconIndex(); - } - - static final ResourceLocation rl = new ResourceLocation("thaumcraft","textures/misc/potions.png"); - - @Override - public void performEffect(EntityLivingBase target, int par2) { - if (target instanceof ITaintedMob) { - target.heal(1); - } else - if (!target.isEntityUndead() && !(target instanceof EntityPlayer)) - { - target.attackEntityFrom(DamageSourceThaumcraft.taint, 1); - } - else - if (!target.isEntityUndead() && (target.getMaxHealth() > 1 || (target instanceof EntityPlayer))) - { - target.attackEntityFrom(DamageSourceThaumcraft.taint, 1); - } - } - - public boolean isReady(int par1, int par2) - { - int k = 40 >> par2; - return k > 0 ? par1 % k == 0 : true; - } - -} diff --git a/src/api/java/thaumcraft/api/potions/PotionVisExhaust.java b/src/api/java/thaumcraft/api/potions/PotionVisExhaust.java deleted file mode 100644 index cd7fc18c..00000000 --- a/src/api/java/thaumcraft/api/potions/PotionVisExhaust.java +++ /dev/null @@ -1,48 +0,0 @@ -package thaumcraft.api.potions; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.potion.Potion; -import net.minecraft.util.ResourceLocation; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class PotionVisExhaust extends Potion -{ - public static PotionVisExhaust instance = null; // will be instantiated at runtime - private int statusIconIndex = -1; - - public PotionVisExhaust(int par1, boolean par2, int par3) - { - super(par1,par2,par3); - setIconIndex(0, 0); - } - - public static void init() - { - instance.setPotionName("potion.visexhaust"); - instance.setIconIndex(5, 1); - instance.setEffectiveness(0.25D); - } - - @Override - public boolean isBadEffect() { - return true; - } - - @Override - @SideOnly(Side.CLIENT) - public int getStatusIconIndex() { - Minecraft.getMinecraft().renderEngine.bindTexture(rl); - return super.getStatusIconIndex(); - } - - static final ResourceLocation rl = new ResourceLocation("thaumcraft","textures/misc/potions.png"); - - @Override - public void performEffect(EntityLivingBase target, int par2) { - - } - - -} diff --git a/src/api/java/thaumcraft/api/research/IScanEventHandler.java b/src/api/java/thaumcraft/api/research/IScanEventHandler.java deleted file mode 100644 index d0efac5f..00000000 --- a/src/api/java/thaumcraft/api/research/IScanEventHandler.java +++ /dev/null @@ -1,9 +0,0 @@ -package thaumcraft.api.research; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public interface IScanEventHandler { - ScanResult scanPhenomena(ItemStack stack, World world, EntityPlayer player); -} diff --git a/src/api/java/thaumcraft/api/research/ResearchCategories.java b/src/api/java/thaumcraft/api/research/ResearchCategories.java deleted file mode 100644 index 82309b36..00000000 --- a/src/api/java/thaumcraft/api/research/ResearchCategories.java +++ /dev/null @@ -1,101 +0,0 @@ -package thaumcraft.api.research; - -import java.util.Collection; -import java.util.LinkedHashMap; - -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; - -import org.apache.logging.log4j.Level; - -import cpw.mods.fml.common.FMLLog; - -public class ResearchCategories { - - //Research - public static LinkedHashMap researchCategories = new LinkedHashMap (); - - /** - * @param key - * @return the research item linked to this key - */ - public static ResearchCategoryList getResearchList(String key) { - return researchCategories.get(key); - } - - /** - * @param key - * @return the name of the research category linked to this key. - * Must be stored as localization information in the LanguageRegistry. - */ - public static String getCategoryName(String key) { - return StatCollector.translateToLocal("tc.research_category."+key); - } - - /** - * @param key the research key - * @return the ResearchItem object. - */ - public static ResearchItem getResearch(String key) { - Collection rc = researchCategories.values(); - for (Object cat:rc) { - Collection rl = ((ResearchCategoryList)cat).research.values(); - for (Object ri:rl) { - if ((((ResearchItem)ri).key).equals(key)) return (ResearchItem)ri; - } - } - return null; - } - - /** - * This should only be done at the PostInit stage - * @param key the key used for this category - * @param icon the icon to be used for the research category tab - * @param background the resource location of the background image to use for this category - * @return the name of the research linked to this key - */ - public static void registerCategory(String key, ResourceLocation icon, ResourceLocation background) { - if (getResearchList(key)==null) { - ResearchCategoryList rl = new ResearchCategoryList(icon, background); - researchCategories.put(key, rl); - } - } - - public static void addResearch(ResearchItem ri) { - ResearchCategoryList rl = getResearchList(ri.category); - if (rl!=null && !rl.research.containsKey(ri.key)) { - - if (!ri.isVirtual()) { - for (ResearchItem rr:rl.research.values()) { - if (rr.displayColumn == ri.displayColumn && rr.displayRow == ri.displayRow) { - FMLLog.log(Level.FATAL, "[Thaumcraft] Research ["+ri.getName()+"] not added as it overlaps with existing research ["+rr.getName()+"]"); - return; - } - } - } - - - rl.research.put(ri.key, ri); - - if (ri.displayColumn < rl.minDisplayColumn) - { - rl.minDisplayColumn = ri.displayColumn; - } - - if (ri.displayRow < rl.minDisplayRow) - { - rl.minDisplayRow = ri.displayRow; - } - - if (ri.displayColumn > rl.maxDisplayColumn) - { - rl.maxDisplayColumn = ri.displayColumn; - } - - if (ri.displayRow > rl.maxDisplayRow) - { - rl.maxDisplayRow = ri.displayRow; - } - } - } -} diff --git a/src/api/java/thaumcraft/api/research/ResearchCategoryList.java b/src/api/java/thaumcraft/api/research/ResearchCategoryList.java deleted file mode 100644 index 7eed0101..00000000 --- a/src/api/java/thaumcraft/api/research/ResearchCategoryList.java +++ /dev/null @@ -1,37 +0,0 @@ -package thaumcraft.api.research; - -import java.util.HashMap; -import java.util.Map; - -import net.minecraft.util.ResourceLocation; - -public class ResearchCategoryList { - - /** Is the smallest column used on the GUI. */ - public int minDisplayColumn; - - /** Is the smallest row used on the GUI. */ - public int minDisplayRow; - - /** Is the biggest column used on the GUI. */ - public int maxDisplayColumn; - - /** Is the biggest row used on the GUI. */ - public int maxDisplayRow; - - /** display variables **/ - public ResourceLocation icon; - public ResourceLocation background; - - public ResearchCategoryList(ResourceLocation icon, ResourceLocation background) { - this.icon = icon; - this.background = background; - } - - //Research - public Map research = new HashMap(); - - - - -} diff --git a/src/api/java/thaumcraft/api/research/ResearchItem.java b/src/api/java/thaumcraft/api/research/ResearchItem.java deleted file mode 100644 index 55b3820c..00000000 --- a/src/api/java/thaumcraft/api/research/ResearchItem.java +++ /dev/null @@ -1,367 +0,0 @@ -package thaumcraft.api.research; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; -import thaumcraft.api.aspects.Aspect; -import thaumcraft.api.aspects.AspectList; - -public class ResearchItem -{ - /** - * A short string used as a key for this research. Must be unique - */ - public final String key; - - /** - * A short string used as a reference to the research category to which this must be added. - */ - public final String category; - - /** - * The aspect tags and their values required to complete this research - */ - public final AspectList tags; - - /** - * This links to any research that needs to be completed before this research can be discovered or learnt. - */ - public String[] parents = null; - - /** - * Like parent above, but a line will not be displayed in the thaumonomicon linking them. Just used to prevent clutter. - */ - public String[] parentsHidden = null; - /** - * any research linked to this that will be unlocked automatically when this research is complete - */ - public String[] siblings = null; - - /** - * the horizontal position of the research icon - */ - public final int displayColumn; - - /** - * the vertical position of the research icon - */ - public final int displayRow; - - /** - * the icon to be used for this research - */ - public final ItemStack icon_item; - - /** - * the icon to be used for this research - */ - public final ResourceLocation icon_resource; - - /** - * How large the research grid is. Valid values are 1 to 3. - */ - private int complexity; - - /** - * Special research has a spiky border. Used for important research milestones. - */ - private boolean isSpecial; - - /** - * Research that can be directly purchased with RP in normal research difficulty. - */ - private boolean isSecondary; - - /** - * This indicates if the research should use a circular icon border. Usually used for "passive" research - * that doesn't have recipes and grants passive effects, or that unlock automatically. - */ - private boolean isRound; - - /** - * Stub research cannot be discovered by normal means, but can be unlocked via the sibling system. - */ - private boolean isStub; - - /** - * This indicated that the research is completely hidden and cannot be discovered by any - * player-controlled means. The recipes will never show up in the thaumonomicon. - * Usually used to unlock "hidden" recipes via sibling unlocking, like - * the various cap and rod combos for wands. - */ - private boolean isVirtual; - - @Deprecated - private boolean isLost; - - /** - * Concealed research does not display in the thaumonomicon until parent researches are discovered. - */ - private boolean isConcealed; - - /** - * Hidden research can only be discovered via scanning or knowledge fragments - */ - private boolean isHidden; - - /** - * These research items will automatically unlock for all players on game start - */ - private boolean isAutoUnlock; - - /** - * Scanning these items will have a chance of revealing hidden knowledge in the thaumonomicon - */ - private ItemStack[] itemTriggers; - - /** - * Scanning these entities will have a chance of revealing hidden knowledge in the thaumonomicon - */ - private String[] entityTriggers; - - /** - * Scanning things with these aspects will have a chance of revealing hidden knowledge in the thaumonomicon - */ - private Aspect[] aspectTriggers; - - private ResearchPage[] pages = null; - - public ResearchItem(String key, String category) - { - this.key = key; - this.category = category; - this.tags = new AspectList(); - this.icon_resource = null; - this.icon_item = null; - this.displayColumn = 0; - this.displayRow = 0; - this.setVirtual(); - - } - - public ResearchItem(String key, String category, AspectList tags, int col, int row, int complex, ResourceLocation icon) - { - this.key = key; - this.category = category; - this.tags = tags; - this.icon_resource = icon; - this.icon_item = null; - this.displayColumn = col; - this.displayRow = row; - this.complexity = complex; - if (complexity < 1) this.complexity = 1; - if (complexity > 3) this.complexity = 3; - } - - public ResearchItem(String key, String category, AspectList tags, int col, int row, int complex, ItemStack icon) - { - this.key = key; - this.category = category; - this.tags = tags; - this.icon_item = icon; - this.icon_resource = null; - this.displayColumn = col; - this.displayRow = row; - this.complexity = complex; - if (complexity < 1) this.complexity = 1; - if (complexity > 3) this.complexity = 3; - } - - public ResearchItem setSpecial() - { - this.isSpecial = true; - return this; - } - - public ResearchItem setStub() - { - this.isStub = true; - return this; - } - - @Deprecated - public ResearchItem setLost() - { - this.isLost = true; - return this; - } - - public ResearchItem setConcealed() - { - this.isConcealed = true; - return this; - } - - public ResearchItem setHidden() - { - this.isHidden = true; - return this; - } - - public ResearchItem setVirtual() - { - this.isVirtual = true; - return this; - } - - public ResearchItem setParents(String... par) - { - this.parents = par; - return this; - } - - - - public ResearchItem setParentsHidden(String... par) - { - this.parentsHidden = par; - return this; - } - - public ResearchItem setSiblings(String... sib) - { - this.siblings = sib; - return this; - } - - public ResearchItem setPages(ResearchPage... par) - { - this.pages = par; - return this; - } - - public ResearchPage[] getPages() { - return pages; - } - - public ResearchItem setItemTriggers(ItemStack... par) - { - this.itemTriggers = par; - return this; - } - - public ResearchItem setEntityTriggers(String... par) - { - this.entityTriggers = par; - return this; - } - - public ResearchItem setAspectTriggers(Aspect... par) - { - this.aspectTriggers = par; - return this; - } - - public ItemStack[] getItemTriggers() { - return itemTriggers; - } - - public String[] getEntityTriggers() { - return entityTriggers; - } - - public Aspect[] getAspectTriggers() { - return aspectTriggers; - } - - public ResearchItem registerResearchItem() - { - ResearchCategories.addResearch(this); - return this; - } - - public String getName() - { - return StatCollector.translateToLocal("tc.research_name."+key); - } - - public String getText() - { - return StatCollector.translateToLocal("tc.research_text."+key); - } - - public boolean isSpecial() - { - return this.isSpecial; - } - - public boolean isStub() - { - return this.isStub; - } - - @Deprecated - public boolean isLost() - { - return this.isLost; - } - - public boolean isConcealed() - { - return this.isConcealed; - } - - public boolean isHidden() - { - return this.isHidden; - } - - public boolean isVirtual() - { - return this.isVirtual; - } - - public boolean isAutoUnlock() { - return isAutoUnlock; - } - - public ResearchItem setAutoUnlock() - { - this.isAutoUnlock = true; - return this; - } - - public boolean isRound() { - return isRound; - } - - public ResearchItem setRound() { - this.isRound = true; - return this; - } - - public boolean isSecondary() { - return isSecondary; - } - - public ResearchItem setSecondary() { - this.isSecondary = true; - return this; - } - - public int getComplexity() { - return complexity; - } - - public ResearchItem setComplexity(int complexity) { - this.complexity = complexity; - return this; - } - - /** - * @return the aspect aspects ordinal with the highest value. Used to determine scroll color and similar things - */ - public Aspect getResearchPrimaryTag() { - Aspect aspect=null; - int highest=0; - if (tags!=null) - for (Aspect tag:tags.getAspects()) { - if (tags.getAmount(tag)>highest) { - aspect=tag; - highest=tags.getAmount(tag); - }; - } - return aspect; - } - -} diff --git a/src/api/java/thaumcraft/api/research/ResearchPage.java b/src/api/java/thaumcraft/api/research/ResearchPage.java deleted file mode 100644 index fdada843..00000000 --- a/src/api/java/thaumcraft/api/research/ResearchPage.java +++ /dev/null @@ -1,193 +0,0 @@ -package thaumcraft.api.research; - -import java.util.List; - -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.FurnaceRecipes; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; -import thaumcraft.api.aspects.AspectList; -import thaumcraft.api.crafting.CrucibleRecipe; -import thaumcraft.api.crafting.IArcaneRecipe; -import thaumcraft.api.crafting.InfusionEnchantmentRecipe; -import thaumcraft.api.crafting.InfusionRecipe; - -public class ResearchPage { - public static enum PageType - { - TEXT, - TEXT_CONCEALED, - IMAGE, - CRUCIBLE_CRAFTING, - ARCANE_CRAFTING, - ASPECTS, - NORMAL_CRAFTING, - INFUSION_CRAFTING, - COMPOUND_CRAFTING, - INFUSION_ENCHANTMENT, - SMELTING - } - - public PageType type = PageType.TEXT; - - public String text=null; - public String research=null; - public ResourceLocation image=null; - public AspectList aspects=null; - public Object recipe=null; - public ItemStack recipeOutput=null; - - /** - * @param text this can (but does not have to) be a reference to a localization variable, not the actual text. - */ - public ResearchPage(String text) { - this.type = PageType.TEXT; - this.text = text; - } - - /** - * @param research this page will only be displayed if the player has discovered this research - * @param text this can (but does not have to) be a reference to a localization variable, not the actual text. - */ - public ResearchPage(String research, String text) { - this.type = PageType.TEXT_CONCEALED; - this.research = research; - this.text = text; - } - - /** - * @param recipe a vanilla crafting recipe. - */ - public ResearchPage(IRecipe recipe) { - this.type = PageType.NORMAL_CRAFTING; - this.recipe = recipe; - this.recipeOutput = recipe.getRecipeOutput(); - } - - /** - * @param recipe a collection of vanilla crafting recipes. - */ - public ResearchPage(IRecipe[] recipe) { - this.type = PageType.NORMAL_CRAFTING; - this.recipe = recipe; - } - - /** - * @param recipe a collection of arcane crafting recipes. - */ - public ResearchPage(IArcaneRecipe[] recipe) { - this.type = PageType.ARCANE_CRAFTING; - this.recipe = recipe; - } - - /** - * @param recipe a collection of arcane crafting recipes. - */ - public ResearchPage(CrucibleRecipe[] recipe) { - this.type = PageType.CRUCIBLE_CRAFTING; - this.recipe = recipe; - } - - /** - * @param recipe a collection of infusion crafting recipes. - */ - public ResearchPage(InfusionRecipe[] recipe) { - this.type = PageType.INFUSION_CRAFTING; - this.recipe = recipe; - } - - /** - * @param recipe a compound crafting recipe. - */ - public ResearchPage(List recipe) { - this.type = PageType.COMPOUND_CRAFTING; - this.recipe = recipe; - } - - /** - * @param recipe an arcane worktable crafting recipe. - */ - public ResearchPage(IArcaneRecipe recipe) { - this.type = PageType.ARCANE_CRAFTING; - this.recipe = recipe; - this.recipeOutput = recipe.getRecipeOutput(); - } - - /** - * @param recipe an alchemy crafting recipe. - */ - public ResearchPage(CrucibleRecipe recipe) { - this.type = PageType.CRUCIBLE_CRAFTING; - this.recipe = recipe; - this.recipeOutput = recipe.getRecipeOutput(); - } - - /** - * @param recipe a furnace smelting crafting recipe. - */ - public ResearchPage(ItemStack input) { - this.type = PageType.SMELTING; - this.recipe = input; - this.recipeOutput = FurnaceRecipes.smelting().getSmeltingResult(input); - } - - /** - * @param recipe an infusion crafting recipe. - */ - public ResearchPage(InfusionRecipe recipe) { - this.type = PageType.INFUSION_CRAFTING; - this.recipe = recipe; - if (recipe.getRecipeOutput() instanceof ItemStack) { - this.recipeOutput = (ItemStack) recipe.getRecipeOutput(); - } else { - this.recipeOutput = recipe.getRecipeInput(); - } - } - - /** - * @param recipe an infusion crafting recipe. - */ - public ResearchPage(InfusionEnchantmentRecipe recipe) { - this.type = PageType.INFUSION_ENCHANTMENT; - this.recipe = recipe; -// if (recipe.recipeOutput instanceof ItemStack) { -// this.recipeOutput = (ItemStack) recipe.recipeOutput; -// } else { -// this.recipeOutput = recipe.recipeInput; -// } - } - - /** - * @param image - * @param caption this can (but does not have to) be a reference to a localization variable, not the actual text. - */ - public ResearchPage(ResourceLocation image, String caption) { - this.type = PageType.IMAGE; - this.image = image; - this.text = caption; - } - - /** - * This function should really not be called directly - used internally - */ - public ResearchPage(AspectList as) { - this.type = PageType.ASPECTS; - this.aspects = as; - } - - /** - * returns a localized text of the text field (if one exists). Returns the text field itself otherwise. - * @return - */ - public String getTranslatedText() { - String ret=""; - if (text != null) { - ret = StatCollector.translateToLocal(text); - if (ret.isEmpty()) ret = text; - } - return ret; - } - - -} diff --git a/src/api/java/thaumcraft/api/research/ScanResult.java b/src/api/java/thaumcraft/api/research/ScanResult.java deleted file mode 100644 index e1498f31..00000000 --- a/src/api/java/thaumcraft/api/research/ScanResult.java +++ /dev/null @@ -1,39 +0,0 @@ -package thaumcraft.api.research; - -import net.minecraft.entity.Entity; - -public class ScanResult { - public byte type = 0; //1=blocks,2=entities,3=phenomena - public int id; - public int meta; - public Entity entity; - public String phenomena; - - public ScanResult(byte type, int blockId, int blockMeta, Entity entity, - String phenomena) { - super(); - this.type = type; - this.id = blockId; - this.meta = blockMeta; - this.entity = entity; - this.phenomena = phenomena; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof ScanResult) { - ScanResult sr = (ScanResult) obj; - if (type != sr.type) - return false; - if (type == 1 - && (id != sr.id || meta != sr.meta)) - return false; - if (type == 2 && entity.getEntityId() != sr.entity.getEntityId()) - return false; - if (type == 3 && !phenomena.equals(sr.phenomena)) - return false; - } - return true; - } - -} diff --git a/src/api/java/thaumcraft/api/visnet/TileVisNode.java b/src/api/java/thaumcraft/api/visnet/TileVisNode.java deleted file mode 100644 index 84b1400d..00000000 --- a/src/api/java/thaumcraft/api/visnet/TileVisNode.java +++ /dev/null @@ -1,188 +0,0 @@ -package thaumcraft.api.visnet; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.HashMap; - -import thaumcraft.api.TileThaumcraft; -import thaumcraft.api.WorldCoordinates; -import thaumcraft.api.aspects.Aspect; - -/** - * @author Azanor - * - * The tile entity used by nodes in the vis energy network. A node is either a source (like an aura node), - * a transport relay or vis receiver (like the infernal furnace). - * - */ -public abstract class TileVisNode extends TileThaumcraft { - - WeakReference parent = null; - ArrayList> children = new ArrayList>(); - - /** - * @return the WorldCoordinates location of where this node is located - */ - public WorldCoordinates getLocation() { - return new WorldCoordinates(this); - } - - /** - * @return the number of blocks away this node will check for parent nodes to connect to. - */ - public abstract int getRange(); - - /** - * @return true if this is the source or root node of the vis network. - */ - public abstract boolean isSource(); - - /** - * This method should never be called directly. Use VisNetHandler.drainVis() instead - * @param aspect what aspect to drain - * @param vis how much to drain - * @return how much was actually drained - */ - public int consumeVis(Aspect aspect, int vis) { - if (VisNetHandler.isNodeValid(getParent())) { - int out = getParent().get().consumeVis(aspect, vis); - if (out>0) { - triggerConsumeEffect(aspect); - } - return out; - } - return 0; - } - - public void removeThisNode() { - for (WeakReference n:getChildren()) { - if (n!=null && n.get()!=null) { - n.get().removeThisNode(); - } - } - - children = new ArrayList>(); - if (VisNetHandler.isNodeValid(this.getParent())) { - this.getParent().get().nodeRefresh=true; - } - this.setParent(null); - this.parentChanged(); - - if (this.isSource()) { - HashMap> sourcelist = VisNetHandler.sources.get(worldObj.provider.dimensionId); - if (sourcelist==null) { - sourcelist = new HashMap>(); - } - sourcelist.remove(getLocation()); - VisNetHandler.sources.put( worldObj.provider.dimensionId, sourcelist ); - } - - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - - - @Override - public void invalidate() { - removeThisNode(); - super.invalidate(); - } - - public void triggerConsumeEffect(Aspect aspect) { } - - /** - * @return - */ - public WeakReference getParent() { - return parent; - } - - /** - * @return - */ - public WeakReference getRootSource() { - return VisNetHandler.isNodeValid(getParent()) ? - getParent().get().getRootSource() : this.isSource() ? - new WeakReference(this) : null; - } - - /** - * @param parent - */ - public void setParent(WeakReference parent) { - this.parent = parent; - } - - /** - * @return - */ - public ArrayList> getChildren() { - return children; - } - - @Override - public boolean canUpdate() { - return true; - } - - protected int nodeCounter = 0; - private boolean nodeRegged = false; - public boolean nodeRefresh = false; - - @Override - public void updateEntity() { - - if (!worldObj.isRemote && ((nodeCounter++) % 40==0 || nodeRefresh)) { - //check for changes - if (!nodeRefresh && children.size()>0) { - for (WeakReference n:children) { - if (n==null || n.get()==null) { - nodeRefresh=true; - break; - } - } - } - - //refresh linked nodes - if (nodeRefresh) { - for (WeakReference n:children) { - if (n.get()!=null) { - n.get().nodeRefresh=true; - } - } - children.clear(); - parent=null; - } - - //redo stuff - if (isSource() && !nodeRegged) { - VisNetHandler.addSource(getWorldObj(), this); - nodeRegged = true; - } else - if (!isSource() && !VisNetHandler.isNodeValid(getParent())) { - setParent(VisNetHandler.addNode(getWorldObj(), this)); - nodeRefresh=true; - } - - if (nodeRefresh) { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - parentChanged(); - } - nodeRefresh=false; - } - - } - - public void parentChanged() { } - - /** - * @return the type of shard this is attuned to: - * none -1, air 0, fire 1, water 2, earth 3, order 4, entropy 5 - * Should return -1 for most implementations - */ - public byte getAttunement() { - return -1; - } - - -} diff --git a/src/api/java/thaumcraft/api/visnet/VisNetHandler.java b/src/api/java/thaumcraft/api/visnet/VisNetHandler.java deleted file mode 100644 index cb9714c4..00000000 --- a/src/api/java/thaumcraft/api/visnet/VisNetHandler.java +++ /dev/null @@ -1,284 +0,0 @@ -package thaumcraft.api.visnet; - -import java.lang.ref.WeakReference; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.HashMap; - -import net.minecraft.world.World; -import thaumcraft.api.WorldCoordinates; -import thaumcraft.api.aspects.Aspect; -import cpw.mods.fml.common.FMLLog; - -public class VisNetHandler { - - // / NODE DRAINING - /** - * This method drains vis from a relay or source near the passed in - * location. The amount received can be less than the amount requested so - * take that into account. - * - * @param world - * @param x the x position of the draining block or entity - * @param y the y position of the draining block or entity - * @param z the z position of the draining block or entity - * @param aspect what aspect to drain - * @param amount how much to drain - * @return how much was actually drained - */ - public static int drainVis(World world, int x, int y, int z, Aspect aspect, int amount) { - - int drainedAmount = 0; - - WorldCoordinates drainer = new WorldCoordinates(x, y, z, - world.provider.dimensionId); - if (!nearbyNodes.containsKey(drainer)) { - calculateNearbyNodes(world, x, y, z); - } - - ArrayList> nodes = nearbyNodes.get(drainer); - if (nodes!=null && nodes.size()>0) - for (WeakReference noderef : nodes) { - - TileVisNode node = noderef.get(); - - if (node == null) continue; - - int a = node.consumeVis(aspect, amount); - drainedAmount += a; - amount -= a; - if (a>0) { - int color = Aspect.getPrimalAspects().indexOf(aspect); - generateVisEffect(world.provider.dimensionId, x, y, z, node.xCoord, node.yCoord, node.zCoord, color); - } - if (amount <= 0) { - break; - } - } - - return drainedAmount; - } - - static Method generateVisEffect; - public static void generateVisEffect(int dim, int x, int y, int z, int x2, int y2, int z2, int color) { - try { - if(generateVisEffect == null) { - Class fake = Class.forName("thaumcraft.common.lib.Utils"); - generateVisEffect = fake.getMethod("generateVisEffect", int.class, int.class, int.class, int.class, int.class, int.class, int.class, int.class); - } - generateVisEffect.invoke(null, dim, x,y,z,x2,y2,z2,color); - } catch(Exception ex) { - FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.lib.Utils method generateVisEffect"); - } - } - - public static HashMap>> sources = new HashMap>>(); - - public static void addSource(World world, TileVisNode vs) { - HashMap> sourcelist = sources - .get(world.provider.dimensionId); - if (sourcelist == null) { - sourcelist = new HashMap>(); - } - sourcelist.put(vs.getLocation(), new WeakReference(vs)); - sources.put(world.provider.dimensionId, sourcelist); - nearbyNodes.clear(); - } - - public static boolean isNodeValid(WeakReference node) { - if (node == null || node.get() == null || node.get().isInvalid()) - return false; - return true; - } - - public static WeakReference addNode(World world, TileVisNode vn) { - WeakReference ref = new WeakReference(vn); - - HashMap> sourcelist = sources - .get(world.provider.dimensionId); - if (sourcelist == null) { - sourcelist = new HashMap>(); - return null; - } - - ArrayList nearby = new ArrayList(); - - for (WeakReference root : sourcelist.values()) { - if (!isNodeValid(root)) - continue; - - TileVisNode source = root.get(); - - float r = inRange(world, vn.getLocation(), source.getLocation(), - vn.getRange()); - if (r > 0) { - nearby.add(new Object[] { source, r - vn.getRange() * 2 }); - } - nearby = findClosestNodes(vn, source, nearby); - } - - float dist = Float.MAX_VALUE; - TileVisNode closest = null; - if (nearby.size() > 0) { - for (Object[] o : nearby) { - if ((Float) o[1] < dist) {// && canNodeBeSeen(vn,(TileVisNode) - // o[0])) { - dist = (Float) o[1]; - closest = (TileVisNode) o[0]; - } - } - } - if (closest != null) { - closest.getChildren().add(ref); - nearbyNodes.clear(); - return new WeakReference(closest); - } - - return null; - } - - public static ArrayList findClosestNodes(TileVisNode target, - TileVisNode root, ArrayList in) { - TileVisNode closestChild = null; - - for (WeakReference child : root.getChildren()) { - TileVisNode n = child.get(); - - if (n != null - && !n.equals(target) - && !n.equals(root) - && (target.getAttunement() == -1 || n.getAttunement() == -1 || n - .getAttunement() == target.getAttunement())) { - - float r2 = inRange(n.getWorldObj(), n.getLocation(), - target.getLocation(), target.getRange()); - if (r2 > 0) { - in.add(new Object[] { n, r2 }); - } - - in = findClosestNodes(target, n, in); - } - } - return in; - } - - private static float inRange(World world, WorldCoordinates cc1, - WorldCoordinates cc2, int range) { - float distance = cc1.getDistanceSquaredToWorldCoordinates(cc2); - return distance > range * range ? -1 : distance; - } - - private static HashMap>> nearbyNodes = new HashMap>>(); - - private static void calculateNearbyNodes(World world, int x, int y, int z) { - - HashMap> sourcelist = sources - .get(world.provider.dimensionId); - if (sourcelist == null) { - sourcelist = new HashMap>(); - return; - } - - ArrayList> cn = new ArrayList>(); - WorldCoordinates drainer = new WorldCoordinates(x, y, z, - world.provider.dimensionId); - - ArrayList nearby = new ArrayList(); - - for (WeakReference root : sourcelist.values()) { - - if (!isNodeValid(root)) - continue; - - TileVisNode source = root.get(); - - TileVisNode closest = null; - float range = Float.MAX_VALUE; - - float r = inRange(world, drainer, source.getLocation(), - source.getRange()); - if (r > 0) { - range = r; - closest = source; - } - - ArrayList> children = new ArrayList>(); - children = getAllChildren(source,children); - - for (WeakReference child : children) { - TileVisNode n = child.get(); - if (n != null && !n.equals(root)) { - - float r2 = inRange(n.getWorldObj(), n.getLocation(), - drainer, n.getRange()); - if (r2 > 0 && r2 < range) { - range = r2; - closest = n; - } - } - } - - if (closest != null) { - - cn.add(new WeakReference(closest)); - } - } - - nearbyNodes.put(drainer, cn); - } - - private static ArrayList> getAllChildren(TileVisNode source, ArrayList> list) { - for (WeakReference child : source.getChildren()) { - TileVisNode n = child.get(); - if (n != null) { - list.add(child); - list = getAllChildren(n,list); - } - } - return list; - } - - // public static boolean canNodeBeSeen(TileVisNode source,TileVisNode - // target) - // { - // double d = Math.sqrt(source.getDistanceFrom(target.xCoord, target.yCoord, - // target.zCoord)); - // double xd = (source.xCoord-target.xCoord) / d; - // double yd = (source.yCoord-target.yCoord) / d; - // double zd = (source.zCoord-target.zCoord) / d; - // return source.getWorldObj().rayTraceBlocks( - // Vec3.createVectorHelper(source.xCoord-xd+.5+.5, source.yCoord-yd, - // source.zCoord-zd), - // Vec3.createVectorHelper(target.xCoord+.5, target.yCoord+.5, - // target.zCoord+.5)) == null; - // } - - // public static HashMap> - // noderef = new HashMap>(); - // - // public static TileVisNode getClosestNodeWithinRadius(World world, int x, - // int y, int z, int radius) { - // TileVisNode out = null; - // WorldCoordinates wc = null; - // float cd = Float.MAX_VALUE; - // for (int sx = x - radius; sx <= x + radius; sx++) { - // for (int sy = y - radius; sy <= y + radius; sy++) { - // for (int sz = z - radius; sz <= z + radius; sz++) { - // wc = new WorldCoordinates(sx,sy,sz,world.provider.dimensionId); - // if (noderef.containsKey(wc)) { - // float d = wc.getDistanceSquared(x, y, z); - // if (dAs a guide build the sort string from two alphanumeric characters followed by - * two numeric characters based on... whatever. - */ - public String getSortingHelper(ItemStack itemstack); - - boolean onFocusBlockStartBreak(ItemStack itemstack, int x, int y, int z, EntityPlayer player); - - public boolean acceptsEnchant(int id); - - - - - -} diff --git a/src/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java b/src/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java deleted file mode 100644 index 4ef8c849..00000000 --- a/src/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java +++ /dev/null @@ -1,16 +0,0 @@ -package thaumcraft.api.wands; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -/** - * - * @author azanor - * - * Implemented by a class that you wish to be called whenever a wand with this rod performs its - * update tick. - * - */ -public interface IWandRodOnUpdate { - void onUpdate(ItemStack itemstack, EntityPlayer player); -} diff --git a/src/api/java/thaumcraft/api/wands/IWandTriggerManager.java b/src/api/java/thaumcraft/api/wands/IWandTriggerManager.java deleted file mode 100644 index 7c299deb..00000000 --- a/src/api/java/thaumcraft/api/wands/IWandTriggerManager.java +++ /dev/null @@ -1,15 +0,0 @@ -package thaumcraft.api.wands; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public interface IWandTriggerManager { - - /** - * This class will be called by wands with the proper parameters. It is up to you to decide what to do with them. - */ - public boolean performTrigger(World world, ItemStack wand, EntityPlayer player, - int x, int y, int z, int side, int event); - -} diff --git a/src/api/java/thaumcraft/api/wands/IWandable.java b/src/api/java/thaumcraft/api/wands/IWandable.java deleted file mode 100644 index aeb9bac7..00000000 --- a/src/api/java/thaumcraft/api/wands/IWandable.java +++ /dev/null @@ -1,25 +0,0 @@ -package thaumcraft.api.wands; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -/** - * - * @author azanor - * - * Add this to a tile entity that you wish wands to interact with in some way. - * - */ - -public interface IWandable { - - public int onWandRightClick(World world, ItemStack wandstack, EntityPlayer player, int x, int y, int z, int side, int md); - - public ItemStack onWandRightClick(World world, ItemStack wandstack, EntityPlayer player); - - public void onUsingWandTick(ItemStack wandstack, EntityPlayer player, int count); - - public void onWandStoppedUsing(ItemStack wandstack, World world, EntityPlayer player, int count); - -} diff --git a/src/api/java/thaumcraft/api/wands/ItemFocusBasic.java b/src/api/java/thaumcraft/api/wands/ItemFocusBasic.java deleted file mode 100644 index 35900520..00000000 --- a/src/api/java/thaumcraft/api/wands/ItemFocusBasic.java +++ /dev/null @@ -1,166 +0,0 @@ -package thaumcraft.api.wands; - -import java.text.DecimalFormat; -import java.util.List; -import java.util.Map; - -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.StatCollector; -import net.minecraft.world.World; -import thaumcraft.api.ThaumcraftApi; -import thaumcraft.api.aspects.Aspect; -import thaumcraft.api.aspects.AspectList; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemFocusBasic extends Item implements IWandFocus { - - public ItemFocusBasic () - { - super(); - maxStackSize = 1; - canRepair=false; - this.setMaxDamage(0); - } - - public IIcon icon; - - @SideOnly(Side.CLIENT) - @Override - public IIcon getIconFromDamage(int par1) { - return icon; - } - - @Override - public boolean isItemTool(ItemStack par1ItemStack) - { - return true; - } - - @Override - public boolean isDamageable() { - return true; - } - - @Override - public void addInformation(ItemStack stack,EntityPlayer player, List list, boolean par4) { - AspectList al = this.getVisCost(); - if (al!=null && al.size()>0) { - list.add(StatCollector.translateToLocal(isVisCostPerTick()?"item.Focus.cost2":"item.Focus.cost1")); - for (Aspect aspect:al.getAspectsSorted()) { - DecimalFormat myFormatter = new DecimalFormat("#####.##"); - String amount = myFormatter.format(al.getAmount(aspect)/100f); - list.add(" \u00A7"+aspect.getChatcolor()+aspect.getName()+"\u00A7r x "+ amount); - - } - } - } - - @Override - public int getItemEnchantability() { - return 5; - } - - @Override - public EnumRarity getRarity(ItemStack itemstack) - { - return EnumRarity.rare; - } - - - @Override - public int getFocusColor() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public AspectList getVisCost() { - // TODO Auto-generated method stub - return null; - } - - @Override - public ItemStack onFocusRightClick(ItemStack itemstack, World world, - EntityPlayer player, MovingObjectPosition movingobjectposition) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void onUsingFocusTick(ItemStack itemstack, EntityPlayer player, - int count) { - // TODO Auto-generated method stub - } - - @Override - public void onPlayerStoppedUsingFocus(ItemStack itemstack, World world, - EntityPlayer player, int count) { - // TODO Auto-generated method stub - - } - - /** - * Just insert two alphanumeric characters before this string in your focus item class - */ - @Override - public String getSortingHelper(ItemStack itemstack) { - Map ench = EnchantmentHelper.getEnchantments(itemstack); - String out=""; - for (Integer lvl:ench.values()) { - out = out + lvl + ""; - } - return out; - } - - @Override - public boolean isVisCostPerTick() { - return false; - } - - @Override - public IIcon getOrnament() { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean onFocusBlockStartBreak(ItemStack itemstack, int x, int y, - int z, EntityPlayer player) { - // TODO Auto-generated method stub - return false; - } - - @Override - public WandFocusAnimation getAnimation() { - return WandFocusAnimation.WAVE; - } - - @Override - public IIcon getFocusDepthLayerIcon() { - // TODO Auto-generated method stub - return null; - } - - /** - * @see thaumcraft.api.wands.IWandFocus#acceptsEnchant(int) - * By default fortune is off for all wands - **/ - @Override - public boolean acceptsEnchant(int id) { - if (id==ThaumcraftApi.enchantFrugal|| - id==ThaumcraftApi.enchantPotency) return true; - return false; - } - - - - - -} diff --git a/src/api/java/thaumcraft/api/wands/StaffRod.java b/src/api/java/thaumcraft/api/wands/StaffRod.java deleted file mode 100644 index e7ae90f0..00000000 --- a/src/api/java/thaumcraft/api/wands/StaffRod.java +++ /dev/null @@ -1,48 +0,0 @@ -package thaumcraft.api.wands; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; - -/** - * - * @author Azanor - * - * This class is used to keep the material information for the various rods. - * It is also used to generate the wand recipes ingame. - * - */ -public class StaffRod extends WandRod { - - boolean runes=false; - - public StaffRod(String tag, int capacity, ItemStack item, int craftCost) { - super(tag+"_staff", capacity, item, craftCost); - this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+tag+".png"); - } - - public StaffRod(String tag, int capacity, ItemStack item, int craftCost, - IWandRodOnUpdate onUpdate, ResourceLocation texture) { - super(tag+"_staff", capacity, item, craftCost, onUpdate, texture); - } - - public StaffRod(String tag, int capacity, ItemStack item, int craftCost, - IWandRodOnUpdate onUpdate) { - super(tag+"_staff", capacity, item, craftCost, onUpdate); - this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+tag+".png"); - } - - public StaffRod(String tag, int capacity, ItemStack item, int craftCost, - ResourceLocation texture) { - super(tag+"_staff", capacity, item, craftCost, texture); - } - - public boolean hasRunes() { - return runes; - } - - public void setRunes(boolean hasRunes) { - this.runes = hasRunes; - } - - -} diff --git a/src/api/java/thaumcraft/api/wands/WandCap.java b/src/api/java/thaumcraft/api/wands/WandCap.java deleted file mode 100644 index 17b4581c..00000000 --- a/src/api/java/thaumcraft/api/wands/WandCap.java +++ /dev/null @@ -1,129 +0,0 @@ -package thaumcraft.api.wands; - -import java.util.LinkedHashMap; -import java.util.List; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import thaumcraft.api.aspects.Aspect; - -/** - * This class is used to keep the material information for the various caps. - * It is also used to generate the wand recipes ingame. - * @author Azanor - * - */ -public class WandCap { - - private String tag; - - /** - * Cost to craft this wand. Combined with the rod cost. - */ - private int craftCost; - - /** - * the amount by which all aspect costs are multiplied - */ - float baseCostModifier; - - /** - * specifies a list of primal aspects that use the special discount figure instead of the normal discount. - */ - List specialCostModifierAspects; - - /** - * the amount by which the specified aspect costs are multiplied - */ - float specialCostModifier; - - /** - * The texture that will be used for the ingame wand cap - */ - ResourceLocation texture; - - /** - * the actual item that makes up this cap and will be used to generate the wand recipes - */ - ItemStack item; - - public static LinkedHashMap caps = new LinkedHashMap(); - - public WandCap (String tag, float discount, ItemStack item, int craftCost) { - this.setTag(tag); - this.baseCostModifier = discount; - this.specialCostModifierAspects = null; - texture = new ResourceLocation("thaumcraft","textures/models/wand_cap_"+getTag()+".png"); - this.item=item; - this.setCraftCost(craftCost); - caps.put(tag, this); - } - - public WandCap (String tag, float discount, List specialAspects, float discountSpecial, ItemStack item, int craftCost) { - this.setTag(tag); - this.baseCostModifier = discount; - this.specialCostModifierAspects = specialAspects; - this.specialCostModifier = discountSpecial; - texture = new ResourceLocation("thaumcraft","textures/models/wand_cap_"+getTag()+".png"); - this.item=item; - this.setCraftCost(craftCost); - caps.put(tag, this); - } - - public float getBaseCostModifier() { - return baseCostModifier; - } - - public List getSpecialCostModifierAspects() { - return specialCostModifierAspects; - } - - public float getSpecialCostModifier() { - return specialCostModifier; - } - - public ResourceLocation getTexture() { - return texture; - } - - public void setTexture(ResourceLocation texture) { - this.texture = texture; - } - - public String getTag() { - return tag; - } - - public void setTag(String tag) { - this.tag = tag; - } - - - public ItemStack getItem() { - return item; - } - - public void setItem(ItemStack item) { - this.item = item; - } - - public int getCraftCost() { - return craftCost; - } - - public void setCraftCost(int craftCost) { - this.craftCost = craftCost; - } - - /** - * The research a player needs to have finished to be able to craft a wand with this cap. - */ - public String getResearch() { - return "CAP_"+getTag(); - } - - // Some examples: - // WandCap WAND_CAP_IRON = new WandCap("iron", 1.1f, Arrays.asList(Aspect.ORDER),1, new ItemStack(ConfigItems.itemWandCap,1,0),1); - // WandCap WAND_CAP_GOLD = new WandCap("gold", 1f, new ItemStack(ConfigItems.itemWandCap,1,1),3); - -} diff --git a/src/api/java/thaumcraft/api/wands/WandRod.java b/src/api/java/thaumcraft/api/wands/WandRod.java deleted file mode 100644 index 85954e46..00000000 --- a/src/api/java/thaumcraft/api/wands/WandRod.java +++ /dev/null @@ -1,158 +0,0 @@ -package thaumcraft.api.wands; - -import java.util.LinkedHashMap; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; - -/** - * - * @author Azanor - * - * This class is used to keep the material information for the various rods. - * It is also used to generate the wand recipes ingame. - * - */ -public class WandRod { - - - private String tag; - - /** - * Cost to craft this wand. Combined with the rod cost. - */ - private int craftCost; - - /** - * The amount of vis that can be stored - this number is actually multiplied - * by 100 for use by the wands internals - */ - int capacity; - - /** - * The texture that will be used for the ingame wand rod - */ - protected ResourceLocation texture; - - /** - * the actual item that makes up this rod and will be used to generate the wand recipes - */ - ItemStack item; - - /** - * A class that will be called whenever the wand onUpdate tick is run - */ - IWandRodOnUpdate onUpdate; - - /** - * Does the rod glow in the dark? - */ - boolean glow; - - public static LinkedHashMap rods = new LinkedHashMap(); - - public WandRod (String tag, int capacity, ItemStack item, int craftCost, ResourceLocation texture) { - this.setTag(tag); - this.capacity = capacity; - this.texture = texture; - this.item=item; - this.setCraftCost(craftCost); - rods.put(tag, this); - } - - public WandRod (String tag, int capacity, ItemStack item, int craftCost, IWandRodOnUpdate onUpdate, ResourceLocation texture) { - this.setTag(tag); - this.capacity = capacity; - this.texture = texture; - this.item=item; - this.setCraftCost(craftCost); - rods.put(tag, this); - this.onUpdate = onUpdate; - } - - public WandRod (String tag, int capacity, ItemStack item, int craftCost) { - this.setTag(tag); - this.capacity = capacity; - this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+getTag()+".png"); - this.item=item; - this.setCraftCost(craftCost); - rods.put(tag, this); - } - - public WandRod (String tag, int capacity, ItemStack item, int craftCost, IWandRodOnUpdate onUpdate) { - this.setTag(tag); - this.capacity = capacity; - this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+getTag()+".png"); - this.item=item; - this.setCraftCost(craftCost); - rods.put(tag, this); - this.onUpdate = onUpdate; - } - - public String getTag() { - return tag; - } - - public void setTag(String tag) { - this.tag = tag; - } - - public int getCapacity() { - return capacity; - } - - public void setCapacity(int capacity) { - this.capacity = capacity; - } - - public ResourceLocation getTexture() { - return texture; - } - - public void setTexture(ResourceLocation texture) { - this.texture = texture; - } - - public ItemStack getItem() { - return item; - } - - public void setItem(ItemStack item) { - this.item = item; - } - - public int getCraftCost() { - return craftCost; - } - - public void setCraftCost(int craftCost) { - this.craftCost = craftCost; - } - - public IWandRodOnUpdate getOnUpdate() { - return onUpdate; - } - - public void setOnUpdate(IWandRodOnUpdate onUpdate) { - this.onUpdate = onUpdate; - } - - public boolean isGlowing() { - return glow; - } - - public void setGlowing(boolean hasGlow) { - this.glow = hasGlow; - } - - /** - * The research a player needs to have finished to be able to craft a wand with this rod. - */ - public String getResearch() { - return "ROD_"+getTag(); - } - - // Some examples: - // WandRod WAND_ROD_WOOD = new WandRod("wood",25,new ItemStack(Item.stick),1); - // WandRod WAND_ROD_BLAZE = new WandRod("blaze",100,new ItemStack(Item.blazeRod),7,new WandRodBlazeOnUpdate()); -} diff --git a/src/api/java/thaumcraft/api/wands/WandTriggerRegistry.java b/src/api/java/thaumcraft/api/wands/WandTriggerRegistry.java deleted file mode 100644 index 7224e12f..00000000 --- a/src/api/java/thaumcraft/api/wands/WandTriggerRegistry.java +++ /dev/null @@ -1,126 +0,0 @@ -package thaumcraft.api.wands; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -/** - * This class serves a similar function to IWandable in that it allows wands to interact - * with object in the world. In this case it is most useful for adding interaction with non-mod - * blocks where you can't control what happens in their code. - * Example where it is used is in crafting the thaumonomicon from a bookshelf and the - * crucible from a cauldron - * - * @author azanor - * - */ -public class WandTriggerRegistry { - - private static HashMap> triggers = new HashMap>(); - private static final String DEFAULT = "default"; - - /** - * Registers an action to perform when a casting wand right clicks on a specific block. - * A manager class needs to be created that implements IWandTriggerManager. - * @param manager - * @param event a logical number that you can use to differentiate different events or actions - * @param block - * @param meta send -1 as a wildcard value for all possible meta values - * @param modid a unique identifier. It is best to register your own triggers using your mod id to avoid conflicts with mods that register triggers for the same block - */ - public static void registerWandBlockTrigger(IWandTriggerManager manager, int event, Block block, int meta, String modid) { - if (!triggers.containsKey(modid)) { - triggers.put(modid, new HashMap()); - } - HashMap temp = triggers.get(modid); - temp.put(Arrays.asList(block,meta),Arrays.asList(manager,event)); - triggers.put(modid, temp); - } - - /** - * for legacy support - */ - public static void registerWandBlockTrigger(IWandTriggerManager manager, int event, Block block, int meta) { - registerWandBlockTrigger(manager, event, block, meta, DEFAULT); - } - - /** - * Checks all trigger registries if one exists for the given block and meta - * @param block - * @param meta - * @return - */ - public static boolean hasTrigger(Block block, int meta) { - for (String modid:triggers.keySet()) { - HashMap temp = triggers.get(modid); - if (temp.containsKey(Arrays.asList(block,meta)) || - temp.containsKey(Arrays.asList(block,-1))) return true; - } - return false; - } - - /** - * modid sensitive version - */ - public static boolean hasTrigger(Block block, int meta, String modid) { - if (!triggers.containsKey(modid)) return false; - HashMap temp = triggers.get(modid); - if (temp.containsKey(Arrays.asList(block,meta)) || - temp.containsKey(Arrays.asList(block,-1))) return true; - return false; - } - - - /** - * This is called by the onItemUseFirst function in wands. - * Parameters and return value functions like you would expect for that function. - * @param world - * @param wand - * @param player - * @param x - * @param y - * @param z - * @param side - * @param block - * @param meta - * @return - */ - public static boolean performTrigger(World world, ItemStack wand, EntityPlayer player, - int x, int y, int z, int side, Block block, int meta) { - - for (String modid:triggers.keySet()) { - HashMap temp = triggers.get(modid); - List l = temp.get(Arrays.asList(block,meta)); - if (l==null) l = temp.get(Arrays.asList(block,-1)); - if (l==null) continue; - - IWandTriggerManager manager = (IWandTriggerManager) l.get(0); - int event = (Integer) l.get(1); - boolean result = manager.performTrigger(world, wand, player, x, y, z, side, event); - if (result) return true; - } - return false; - } - - /** - * modid sensitive version - */ - public static boolean performTrigger(World world, ItemStack wand, EntityPlayer player, - int x, int y, int z, int side, Block block, int meta, String modid) { - if (!triggers.containsKey(modid)) return false; - HashMap temp = triggers.get(modid); - List l = temp.get(Arrays.asList(block,meta)); - if (l==null) l = temp.get(Arrays.asList(block,-1)); - if (l==null) return false; - - IWandTriggerManager manager = (IWandTriggerManager) l.get(0); - int event = (Integer) l.get(1); - return manager.performTrigger(world, wand, player, x, y, z, side, event); - } - -} diff --git a/src/main/java/mods/natura/Natura.java b/src/main/java/mods/natura/Natura.java index 46ff2588..fe52085d 100644 --- a/src/main/java/mods/natura/Natura.java +++ b/src/main/java/mods/natura/Natura.java @@ -49,7 +49,7 @@ import net.minecraftforge.event.world.ChunkDataEvent; import net.minecraftforge.oredict.OreDictionary; -@Mod(modid = "Natura", name = "Natura", version = "2.3.0", acceptedMinecraftVersions = "[1.7.10]", dependencies = "required-after:Mantle") +@Mod(modid = "Natura", name = "Natura", version = "GRADLETOKEN_VERSION", acceptedMinecraftVersions = "[1.7.10]", dependencies = "required-after:Mantle") public class Natura { /* Proxies for sides, used for graphics processing */ @SidedProxy(clientSide = "mods.natura.client.NProxyClient", serverSide = "mods.natura.common.NProxyCommon") diff --git a/src/main/java/mods/natura/plugins/waila/NaturaCropDataProvider.java b/src/main/java/mods/natura/plugins/waila/NaturaCropDataProvider.java index e37c6ab8..8f368dcf 100644 --- a/src/main/java/mods/natura/plugins/waila/NaturaCropDataProvider.java +++ b/src/main/java/mods/natura/plugins/waila/NaturaCropDataProvider.java @@ -7,8 +7,12 @@ import mcp.mobius.waila.api.IWailaDataProvider; import mods.natura.blocks.crops.CropBlock; import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.StatCollector; +import net.minecraft.world.World; public class NaturaCropDataProvider implements IWailaDataProvider { @@ -58,4 +62,9 @@ public List getWailaTail(ItemStack itemStack, List currenttip, I return currenttip; } + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, int x, int y, int z) { + return tag; + } + } diff --git a/resources/assets/natura/lang/de_DE.lang b/src/main/resources/assets/natura/lang/de_DE.lang similarity index 100% rename from resources/assets/natura/lang/de_DE.lang rename to src/main/resources/assets/natura/lang/de_DE.lang diff --git a/resources/assets/natura/lang/en_US.lang b/src/main/resources/assets/natura/lang/en_US.lang similarity index 100% rename from resources/assets/natura/lang/en_US.lang rename to src/main/resources/assets/natura/lang/en_US.lang diff --git a/resources/assets/natura/lang/it_IT.lang b/src/main/resources/assets/natura/lang/it_IT.lang similarity index 100% rename from resources/assets/natura/lang/it_IT.lang rename to src/main/resources/assets/natura/lang/it_IT.lang diff --git a/resources/assets/natura/lang/ko_KR.lang b/src/main/resources/assets/natura/lang/ko_KR.lang similarity index 100% rename from resources/assets/natura/lang/ko_KR.lang rename to src/main/resources/assets/natura/lang/ko_KR.lang diff --git a/resources/assets/natura/lang/pl_PL.lang b/src/main/resources/assets/natura/lang/pl_PL.lang similarity index 100% rename from resources/assets/natura/lang/pl_PL.lang rename to src/main/resources/assets/natura/lang/pl_PL.lang diff --git a/resources/assets/natura/lang/ru_RU.lang b/src/main/resources/assets/natura/lang/ru_RU.lang similarity index 100% rename from resources/assets/natura/lang/ru_RU.lang rename to src/main/resources/assets/natura/lang/ru_RU.lang diff --git a/resources/assets/natura/lang/zh_CN.lang b/src/main/resources/assets/natura/lang/zh_CN.lang similarity index 100% rename from resources/assets/natura/lang/zh_CN.lang rename to src/main/resources/assets/natura/lang/zh_CN.lang diff --git a/resources/assets/natura/textures/armor/imp_1.png b/src/main/resources/assets/natura/textures/armor/imp_1.png similarity index 100% rename from resources/assets/natura/textures/armor/imp_1.png rename to src/main/resources/assets/natura/textures/armor/imp_1.png diff --git a/resources/assets/natura/textures/armor/imp_2.png b/src/main/resources/assets/natura/textures/armor/imp_2.png similarity index 100% rename from resources/assets/natura/textures/armor/imp_2.png rename to src/main/resources/assets/natura/textures/armor/imp_2.png diff --git a/resources/assets/natura/textures/blocks/air_sulfur.png b/src/main/resources/assets/natura/textures/blocks/air_sulfur.png similarity index 100% rename from resources/assets/natura/textures/blocks/air_sulfur.png rename to src/main/resources/assets/natura/textures/blocks/air_sulfur.png diff --git a/resources/assets/natura/textures/blocks/apple_bark.png b/src/main/resources/assets/natura/textures/blocks/apple_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_bark.png rename to src/main/resources/assets/natura/textures/blocks/apple_bark.png diff --git a/resources/assets/natura/textures/blocks/apple_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/apple_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/apple_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/apple_heart.png b/src/main/resources/assets/natura/textures/blocks/apple_heart.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_heart.png rename to src/main/resources/assets/natura/textures/blocks/apple_heart.png diff --git a/resources/assets/natura/textures/blocks/apple_ladder.png b/src/main/resources/assets/natura/textures/blocks/apple_ladder.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_ladder.png rename to src/main/resources/assets/natura/textures/blocks/apple_ladder.png diff --git a/resources/assets/natura/textures/blocks/apple_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/apple_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/apple_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/apple_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/apple_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/apple_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/apple_leaves_flowering_fancy.png b/src/main/resources/assets/natura/textures/blocks/apple_leaves_flowering_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_leaves_flowering_fancy.png rename to src/main/resources/assets/natura/textures/blocks/apple_leaves_flowering_fancy.png diff --git a/resources/assets/natura/textures/blocks/apple_leaves_flowering_fast.png b/src/main/resources/assets/natura/textures/blocks/apple_leaves_flowering_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_leaves_flowering_fast.png rename to src/main/resources/assets/natura/textures/blocks/apple_leaves_flowering_fast.png diff --git a/resources/assets/natura/textures/blocks/apple_leaves_fruit_fancy.png b/src/main/resources/assets/natura/textures/blocks/apple_leaves_fruit_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_leaves_fruit_fancy.png rename to src/main/resources/assets/natura/textures/blocks/apple_leaves_fruit_fancy.png diff --git a/resources/assets/natura/textures/blocks/apple_leaves_fruit_fast.png b/src/main/resources/assets/natura/textures/blocks/apple_leaves_fruit_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_leaves_fruit_fast.png rename to src/main/resources/assets/natura/textures/blocks/apple_leaves_fruit_fast.png diff --git a/resources/assets/natura/textures/blocks/apple_leaves_gold_fancy.png b/src/main/resources/assets/natura/textures/blocks/apple_leaves_gold_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_leaves_gold_fancy.png rename to src/main/resources/assets/natura/textures/blocks/apple_leaves_gold_fancy.png diff --git a/resources/assets/natura/textures/blocks/apple_leaves_gold_fast.png b/src/main/resources/assets/natura/textures/blocks/apple_leaves_gold_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_leaves_gold_fast.png rename to src/main/resources/assets/natura/textures/blocks/apple_leaves_gold_fast.png diff --git a/resources/assets/natura/textures/blocks/apple_planks.png b/src/main/resources/assets/natura/textures/blocks/apple_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_planks.png rename to src/main/resources/assets/natura/textures/blocks/apple_planks.png diff --git a/resources/assets/natura/textures/blocks/apple_sapling.png b/src/main/resources/assets/natura/textures/blocks/apple_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_sapling.png rename to src/main/resources/assets/natura/textures/blocks/apple_sapling.png diff --git a/resources/assets/natura/textures/blocks/apple_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/apple_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/apple_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/apple_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/barley_1.png b/src/main/resources/assets/natura/textures/blocks/barley_1.png similarity index 100% rename from resources/assets/natura/textures/blocks/barley_1.png rename to src/main/resources/assets/natura/textures/blocks/barley_1.png diff --git a/resources/assets/natura/textures/blocks/barley_2.png b/src/main/resources/assets/natura/textures/blocks/barley_2.png similarity index 100% rename from resources/assets/natura/textures/blocks/barley_2.png rename to src/main/resources/assets/natura/textures/blocks/barley_2.png diff --git a/resources/assets/natura/textures/blocks/barley_3.png b/src/main/resources/assets/natura/textures/blocks/barley_3.png similarity index 100% rename from resources/assets/natura/textures/blocks/barley_3.png rename to src/main/resources/assets/natura/textures/blocks/barley_3.png diff --git a/resources/assets/natura/textures/blocks/barley_4.png b/src/main/resources/assets/natura/textures/blocks/barley_4.png similarity index 100% rename from resources/assets/natura/textures/blocks/barley_4.png rename to src/main/resources/assets/natura/textures/blocks/barley_4.png diff --git a/resources/assets/natura/textures/blocks/birch_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/birch_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/birch_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/birch_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/birch_door_top.png b/src/main/resources/assets/natura/textures/blocks/birch_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/birch_door_top.png rename to src/main/resources/assets/natura/textures/blocks/birch_door_top.png diff --git a/resources/assets/natura/textures/blocks/blackberry_fancy.png b/src/main/resources/assets/natura/textures/blocks/blackberry_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/blackberry_fancy.png rename to src/main/resources/assets/natura/textures/blocks/blackberry_fancy.png diff --git a/resources/assets/natura/textures/blocks/blackberry_fast.png b/src/main/resources/assets/natura/textures/blocks/blackberry_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/blackberry_fast.png rename to src/main/resources/assets/natura/textures/blocks/blackberry_fast.png diff --git a/resources/assets/natura/textures/blocks/blackberry_ripe_fancy.png b/src/main/resources/assets/natura/textures/blocks/blackberry_ripe_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/blackberry_ripe_fancy.png rename to src/main/resources/assets/natura/textures/blocks/blackberry_ripe_fancy.png diff --git a/resources/assets/natura/textures/blocks/blackberry_ripe_fast.png b/src/main/resources/assets/natura/textures/blocks/blackberry_ripe_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/blackberry_ripe_fast.png rename to src/main/resources/assets/natura/textures/blocks/blackberry_ripe_fast.png diff --git a/resources/assets/natura/textures/blocks/blightberry_fancy.png b/src/main/resources/assets/natura/textures/blocks/blightberry_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/blightberry_fancy.png rename to src/main/resources/assets/natura/textures/blocks/blightberry_fancy.png diff --git a/resources/assets/natura/textures/blocks/blightberry_fast.png b/src/main/resources/assets/natura/textures/blocks/blightberry_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/blightberry_fast.png rename to src/main/resources/assets/natura/textures/blocks/blightberry_fast.png diff --git a/resources/assets/natura/textures/blocks/blightberry_ripe_fancy.png b/src/main/resources/assets/natura/textures/blocks/blightberry_ripe_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/blightberry_ripe_fancy.png rename to src/main/resources/assets/natura/textures/blocks/blightberry_ripe_fancy.png diff --git a/resources/assets/natura/textures/blocks/blightberry_ripe_fast.png b/src/main/resources/assets/natura/textures/blocks/blightberry_ripe_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/blightberry_ripe_fast.png rename to src/main/resources/assets/natura/textures/blocks/blightberry_ripe_fast.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_bark.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_bark.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_bark.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_door_top.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_door_top.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_door_top.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_heart_small.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_heart_small.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_heart_small.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_heart_small.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_ladder.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_ladder.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_ladder.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_ladder.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_lower_left.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_lower_left.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_lower_left.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_lower_left.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_lower_right.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_lower_right.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_lower_right.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_lower_right.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_planks.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_planks.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_planks.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_sapling.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_sapling.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_sapling.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_side_left.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_side_left.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_side_left.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_side_left.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_side_right.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_side_right.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_side_right.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_side_right.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_upper_left.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_upper_left.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_upper_left.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_upper_left.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_upper_right.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_upper_right.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_upper_right.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_upper_right.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_workbench_face.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_workbench_face.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_workbench_face.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_workbench_face.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_workbench_side.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_workbench_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_workbench_side.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_workbench_side.png diff --git a/resources/assets/natura/textures/blocks/bloodwood_workbench_top.png b/src/main/resources/assets/natura/textures/blocks/bloodwood_workbench_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/bloodwood_workbench_top.png rename to src/main/resources/assets/natura/textures/blocks/bloodwood_workbench_top.png diff --git a/resources/assets/natura/textures/blocks/blueberry_fancy.png b/src/main/resources/assets/natura/textures/blocks/blueberry_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/blueberry_fancy.png rename to src/main/resources/assets/natura/textures/blocks/blueberry_fancy.png diff --git a/resources/assets/natura/textures/blocks/blueberry_fast.png b/src/main/resources/assets/natura/textures/blocks/blueberry_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/blueberry_fast.png rename to src/main/resources/assets/natura/textures/blocks/blueberry_fast.png diff --git a/resources/assets/natura/textures/blocks/blueberry_ripe_fancy.png b/src/main/resources/assets/natura/textures/blocks/blueberry_ripe_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/blueberry_ripe_fancy.png rename to src/main/resources/assets/natura/textures/blocks/blueberry_ripe_fancy.png diff --git a/resources/assets/natura/textures/blocks/blueberry_ripe_fast.png b/src/main/resources/assets/natura/textures/blocks/blueberry_ripe_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/blueberry_ripe_fast.png rename to src/main/resources/assets/natura/textures/blocks/blueberry_ripe_fast.png diff --git a/resources/assets/natura/textures/blocks/brail_activator.png b/src/main/resources/assets/natura/textures/blocks/brail_activator.png similarity index 100% rename from resources/assets/natura/textures/blocks/brail_activator.png rename to src/main/resources/assets/natura/textures/blocks/brail_activator.png diff --git a/resources/assets/natura/textures/blocks/brail_activator_powered.png b/src/main/resources/assets/natura/textures/blocks/brail_activator_powered.png similarity index 100% rename from resources/assets/natura/textures/blocks/brail_activator_powered.png rename to src/main/resources/assets/natura/textures/blocks/brail_activator_powered.png diff --git a/resources/assets/natura/textures/blocks/brail_detector.png b/src/main/resources/assets/natura/textures/blocks/brail_detector.png similarity index 100% rename from resources/assets/natura/textures/blocks/brail_detector.png rename to src/main/resources/assets/natura/textures/blocks/brail_detector.png diff --git a/resources/assets/natura/textures/blocks/brail_detector_powered.png b/src/main/resources/assets/natura/textures/blocks/brail_detector_powered.png similarity index 100% rename from resources/assets/natura/textures/blocks/brail_detector_powered.png rename to src/main/resources/assets/natura/textures/blocks/brail_detector_powered.png diff --git a/resources/assets/natura/textures/blocks/brail_golden.png b/src/main/resources/assets/natura/textures/blocks/brail_golden.png similarity index 100% rename from resources/assets/natura/textures/blocks/brail_golden.png rename to src/main/resources/assets/natura/textures/blocks/brail_golden.png diff --git a/resources/assets/natura/textures/blocks/brail_golden_powered.png b/src/main/resources/assets/natura/textures/blocks/brail_golden_powered.png similarity index 100% rename from resources/assets/natura/textures/blocks/brail_golden_powered.png rename to src/main/resources/assets/natura/textures/blocks/brail_golden_powered.png diff --git a/resources/assets/natura/textures/blocks/brail_normal.png b/src/main/resources/assets/natura/textures/blocks/brail_normal.png similarity index 100% rename from resources/assets/natura/textures/blocks/brail_normal.png rename to src/main/resources/assets/natura/textures/blocks/brail_normal.png diff --git a/resources/assets/natura/textures/blocks/brail_normal_turned.png b/src/main/resources/assets/natura/textures/blocks/brail_normal_turned.png similarity index 100% rename from resources/assets/natura/textures/blocks/brail_normal_turned.png rename to src/main/resources/assets/natura/textures/blocks/brail_normal_turned.png diff --git a/resources/assets/natura/textures/blocks/cloud_dark.png b/src/main/resources/assets/natura/textures/blocks/cloud_dark.png similarity index 100% rename from resources/assets/natura/textures/blocks/cloud_dark.png rename to src/main/resources/assets/natura/textures/blocks/cloud_dark.png diff --git a/resources/assets/natura/textures/blocks/cloud_gray.png b/src/main/resources/assets/natura/textures/blocks/cloud_gray.png similarity index 100% rename from resources/assets/natura/textures/blocks/cloud_gray.png rename to src/main/resources/assets/natura/textures/blocks/cloud_gray.png diff --git a/resources/assets/natura/textures/blocks/cloud_sulfur.png b/src/main/resources/assets/natura/textures/blocks/cloud_sulfur.png similarity index 100% rename from resources/assets/natura/textures/blocks/cloud_sulfur.png rename to src/main/resources/assets/natura/textures/blocks/cloud_sulfur.png diff --git a/resources/assets/natura/textures/blocks/cloud_white.png b/src/main/resources/assets/natura/textures/blocks/cloud_white.png similarity index 100% rename from resources/assets/natura/textures/blocks/cloud_white.png rename to src/main/resources/assets/natura/textures/blocks/cloud_white.png diff --git a/resources/assets/natura/textures/blocks/corrupt_brick_amber.png b/src/main/resources/assets/natura/textures/blocks/corrupt_brick_amber.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_brick_amber.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_brick_amber.png diff --git a/resources/assets/natura/textures/blocks/corrupt_brick_blue.png b/src/main/resources/assets/natura/textures/blocks/corrupt_brick_blue.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_brick_blue.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_brick_blue.png diff --git a/resources/assets/natura/textures/blocks/corrupt_brick_green.png b/src/main/resources/assets/natura/textures/blocks/corrupt_brick_green.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_brick_green.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_brick_green.png diff --git a/resources/assets/natura/textures/blocks/corrupt_brick_magenta.png b/src/main/resources/assets/natura/textures/blocks/corrupt_brick_magenta.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_brick_magenta.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_brick_magenta.png diff --git a/resources/assets/natura/textures/blocks/corrupt_brick_purple.png b/src/main/resources/assets/natura/textures/blocks/corrupt_brick_purple.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_brick_purple.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_brick_purple.png diff --git a/resources/assets/natura/textures/blocks/corrupt_brick_red.png b/src/main/resources/assets/natura/textures/blocks/corrupt_brick_red.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_brick_red.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_brick_red.png diff --git a/resources/assets/natura/textures/blocks/corrupt_brick_silver.png b/src/main/resources/assets/natura/textures/blocks/corrupt_brick_silver.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_brick_silver.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_brick_silver.png diff --git a/resources/assets/natura/textures/blocks/corrupt_brick_yellow.png b/src/main/resources/assets/natura/textures/blocks/corrupt_brick_yellow.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_brick_yellow.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_brick_yellow.png diff --git a/resources/assets/natura/textures/blocks/corrupt_stone_amber.png b/src/main/resources/assets/natura/textures/blocks/corrupt_stone_amber.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_stone_amber.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_stone_amber.png diff --git a/resources/assets/natura/textures/blocks/corrupt_stone_blue.png b/src/main/resources/assets/natura/textures/blocks/corrupt_stone_blue.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_stone_blue.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_stone_blue.png diff --git a/resources/assets/natura/textures/blocks/corrupt_stone_green.png b/src/main/resources/assets/natura/textures/blocks/corrupt_stone_green.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_stone_green.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_stone_green.png diff --git a/resources/assets/natura/textures/blocks/corrupt_stone_magenta.png b/src/main/resources/assets/natura/textures/blocks/corrupt_stone_magenta.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_stone_magenta.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_stone_magenta.png diff --git a/resources/assets/natura/textures/blocks/corrupt_stone_purple.png b/src/main/resources/assets/natura/textures/blocks/corrupt_stone_purple.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_stone_purple.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_stone_purple.png diff --git a/resources/assets/natura/textures/blocks/corrupt_stone_red.png b/src/main/resources/assets/natura/textures/blocks/corrupt_stone_red.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_stone_red.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_stone_red.png diff --git a/resources/assets/natura/textures/blocks/corrupt_stone_silver.png b/src/main/resources/assets/natura/textures/blocks/corrupt_stone_silver.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_stone_silver.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_stone_silver.png diff --git a/resources/assets/natura/textures/blocks/corrupt_stone_yellow.png b/src/main/resources/assets/natura/textures/blocks/corrupt_stone_yellow.png similarity index 100% rename from resources/assets/natura/textures/blocks/corrupt_stone_yellow.png rename to src/main/resources/assets/natura/textures/blocks/corrupt_stone_yellow.png diff --git a/resources/assets/natura/textures/blocks/corruptor_amber.png b/src/main/resources/assets/natura/textures/blocks/corruptor_amber.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_amber.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_amber.png diff --git a/resources/assets/natura/textures/blocks/corruptor_blue.png b/src/main/resources/assets/natura/textures/blocks/corruptor_blue.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_blue.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_blue.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_side_amber.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_amber.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_side_amber.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_amber.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_side_blue.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_blue.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_side_blue.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_blue.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_side_green.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_green.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_side_green.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_green.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_side_magenta.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_magenta.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_side_magenta.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_magenta.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_side_purple.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_purple.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_side_purple.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_purple.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_side_red.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_red.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_side_red.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_red.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_side_silver.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_silver.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_side_silver.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_silver.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_side_yellow.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_yellow.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_side_yellow.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_side_yellow.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_top_amber.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_amber.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_top_amber.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_amber.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_top_blue.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_blue.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_top_blue.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_blue.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_top_green.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_green.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_top_green.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_green.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_top_magenta.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_magenta.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_top_magenta.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_magenta.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_top_purple.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_purple.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_top_purple.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_purple.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_top_red.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_red.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_top_red.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_red.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_top_silver.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_silver.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_top_silver.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_silver.png diff --git a/resources/assets/natura/textures/blocks/corruptor_grass_top_yellow.png b/src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_yellow.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_grass_top_yellow.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_grass_top_yellow.png diff --git a/resources/assets/natura/textures/blocks/corruptor_green.png b/src/main/resources/assets/natura/textures/blocks/corruptor_green.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_green.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_green.png diff --git a/resources/assets/natura/textures/blocks/corruptor_magenta.png b/src/main/resources/assets/natura/textures/blocks/corruptor_magenta.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_magenta.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_magenta.png diff --git a/resources/assets/natura/textures/blocks/corruptor_purple.png b/src/main/resources/assets/natura/textures/blocks/corruptor_purple.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_purple.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_purple.png diff --git a/resources/assets/natura/textures/blocks/corruptor_red.png b/src/main/resources/assets/natura/textures/blocks/corruptor_red.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_red.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_red.png diff --git a/resources/assets/natura/textures/blocks/corruptor_silver.png b/src/main/resources/assets/natura/textures/blocks/corruptor_silver.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_silver.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_silver.png diff --git a/resources/assets/natura/textures/blocks/corruptor_yellow.png b/src/main/resources/assets/natura/textures/blocks/corruptor_yellow.png similarity index 100% rename from resources/assets/natura/textures/blocks/corruptor_yellow.png rename to src/main/resources/assets/natura/textures/blocks/corruptor_yellow.png diff --git a/resources/assets/natura/textures/blocks/cotton_1.png b/src/main/resources/assets/natura/textures/blocks/cotton_1.png similarity index 100% rename from resources/assets/natura/textures/blocks/cotton_1.png rename to src/main/resources/assets/natura/textures/blocks/cotton_1.png diff --git a/resources/assets/natura/textures/blocks/cotton_2.png b/src/main/resources/assets/natura/textures/blocks/cotton_2.png similarity index 100% rename from resources/assets/natura/textures/blocks/cotton_2.png rename to src/main/resources/assets/natura/textures/blocks/cotton_2.png diff --git a/resources/assets/natura/textures/blocks/cotton_3.png b/src/main/resources/assets/natura/textures/blocks/cotton_3.png similarity index 100% rename from resources/assets/natura/textures/blocks/cotton_3.png rename to src/main/resources/assets/natura/textures/blocks/cotton_3.png diff --git a/resources/assets/natura/textures/blocks/cotton_4.png b/src/main/resources/assets/natura/textures/blocks/cotton_4.png similarity index 100% rename from resources/assets/natura/textures/blocks/cotton_4.png rename to src/main/resources/assets/natura/textures/blocks/cotton_4.png diff --git a/resources/assets/natura/textures/blocks/cotton_5.png b/src/main/resources/assets/natura/textures/blocks/cotton_5.png similarity index 100% rename from resources/assets/natura/textures/blocks/cotton_5.png rename to src/main/resources/assets/natura/textures/blocks/cotton_5.png diff --git a/resources/assets/natura/textures/blocks/darkwood_bark.png b/src/main/resources/assets/natura/textures/blocks/darkwood_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_bark.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_bark.png diff --git a/resources/assets/natura/textures/blocks/darkwood_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/darkwood_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/darkwood_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/darkwood_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/darkwood_door_item.png b/src/main/resources/assets/natura/textures/blocks/darkwood_door_item.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_door_item.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_door_item.png diff --git a/resources/assets/natura/textures/blocks/darkwood_door_top.png b/src/main/resources/assets/natura/textures/blocks/darkwood_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_door_top.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_door_top.png diff --git a/resources/assets/natura/textures/blocks/darkwood_flowering_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/darkwood_flowering_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_flowering_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_flowering_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/darkwood_flowering_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/darkwood_flowering_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_flowering_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_flowering_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/darkwood_fruit_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/darkwood_fruit_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_fruit_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_fruit_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/darkwood_fruit_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/darkwood_fruit_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_fruit_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_fruit_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/darkwood_heart.png b/src/main/resources/assets/natura/textures/blocks/darkwood_heart.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_heart.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_heart.png diff --git a/resources/assets/natura/textures/blocks/darkwood_ladder.png b/src/main/resources/assets/natura/textures/blocks/darkwood_ladder.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_ladder.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_ladder.png diff --git a/resources/assets/natura/textures/blocks/darkwood_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/darkwood_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/darkwood_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/darkwood_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/darkwood_planks.png b/src/main/resources/assets/natura/textures/blocks/darkwood_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_planks.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_planks.png diff --git a/resources/assets/natura/textures/blocks/darkwood_sapling.png b/src/main/resources/assets/natura/textures/blocks/darkwood_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_sapling.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_sapling.png diff --git a/resources/assets/natura/textures/blocks/darkwood_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/darkwood_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/darkwood_workbench_face.png b/src/main/resources/assets/natura/textures/blocks/darkwood_workbench_face.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_workbench_face.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_workbench_face.png diff --git a/resources/assets/natura/textures/blocks/darkwood_workbench_side.png b/src/main/resources/assets/natura/textures/blocks/darkwood_workbench_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_workbench_side.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_workbench_side.png diff --git a/resources/assets/natura/textures/blocks/darkwood_workbench_top.png b/src/main/resources/assets/natura/textures/blocks/darkwood_workbench_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/darkwood_workbench_top.png rename to src/main/resources/assets/natura/textures/blocks/darkwood_workbench_top.png diff --git a/resources/assets/natura/textures/blocks/duskberry_fancy.png b/src/main/resources/assets/natura/textures/blocks/duskberry_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/duskberry_fancy.png rename to src/main/resources/assets/natura/textures/blocks/duskberry_fancy.png diff --git a/resources/assets/natura/textures/blocks/duskberry_fast.png b/src/main/resources/assets/natura/textures/blocks/duskberry_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/duskberry_fast.png rename to src/main/resources/assets/natura/textures/blocks/duskberry_fast.png diff --git a/resources/assets/natura/textures/blocks/duskberry_ripe_fancy.png b/src/main/resources/assets/natura/textures/blocks/duskberry_ripe_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/duskberry_ripe_fancy.png rename to src/main/resources/assets/natura/textures/blocks/duskberry_ripe_fancy.png diff --git a/resources/assets/natura/textures/blocks/duskberry_ripe_fast.png b/src/main/resources/assets/natura/textures/blocks/duskberry_ripe_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/duskberry_ripe_fast.png rename to src/main/resources/assets/natura/textures/blocks/duskberry_ripe_fast.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_bark.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_bark.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_bark.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_door_top.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_door_top.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_door_top.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_heart.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_heart.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_heart.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_heart.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_ladder.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_ladder.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_ladder.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_ladder.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_planks.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_planks.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_planks.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_sapling.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_sapling.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_sapling.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_workbench_face.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_workbench_face.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_workbench_face.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_workbench_face.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_workbench_side.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_workbench_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_workbench_side.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_workbench_side.png diff --git a/resources/assets/natura/textures/blocks/eucalyptus_workbench_top.png b/src/main/resources/assets/natura/textures/blocks/eucalyptus_workbench_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/eucalyptus_workbench_top.png rename to src/main/resources/assets/natura/textures/blocks/eucalyptus_workbench_top.png diff --git a/resources/assets/natura/textures/blocks/flower_bluebells.png b/src/main/resources/assets/natura/textures/blocks/flower_bluebells.png similarity index 100% rename from resources/assets/natura/textures/blocks/flower_bluebells.png rename to src/main/resources/assets/natura/textures/blocks/flower_bluebells.png diff --git a/resources/assets/natura/textures/blocks/fusewood_bark.png b/src/main/resources/assets/natura/textures/blocks/fusewood_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_bark.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_bark.png diff --git a/resources/assets/natura/textures/blocks/fusewood_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/fusewood_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/fusewood_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/fusewood_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/fusewood_door_top.png b/src/main/resources/assets/natura/textures/blocks/fusewood_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_door_top.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_door_top.png diff --git a/resources/assets/natura/textures/blocks/fusewood_heart.png b/src/main/resources/assets/natura/textures/blocks/fusewood_heart.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_heart.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_heart.png diff --git a/resources/assets/natura/textures/blocks/fusewood_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/fusewood_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/fusewood_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/fusewood_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/fusewood_planks.png b/src/main/resources/assets/natura/textures/blocks/fusewood_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_planks.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_planks.png diff --git a/resources/assets/natura/textures/blocks/fusewood_sapling.png b/src/main/resources/assets/natura/textures/blocks/fusewood_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_sapling.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_sapling.png diff --git a/resources/assets/natura/textures/blocks/fusewood_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/fusewood_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/fusewood_window.png b/src/main/resources/assets/natura/textures/blocks/fusewood_window.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_window.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_window.png diff --git a/resources/assets/natura/textures/blocks/fusewood_workbench_face.png b/src/main/resources/assets/natura/textures/blocks/fusewood_workbench_face.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_workbench_face.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_workbench_face.png diff --git a/resources/assets/natura/textures/blocks/fusewood_workbench_side.png b/src/main/resources/assets/natura/textures/blocks/fusewood_workbench_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_workbench_side.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_workbench_side.png diff --git a/resources/assets/natura/textures/blocks/fusewood_workbench_top.png b/src/main/resources/assets/natura/textures/blocks/fusewood_workbench_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/fusewood_workbench_top.png rename to src/main/resources/assets/natura/textures/blocks/fusewood_workbench_top.png diff --git a/resources/assets/natura/textures/blocks/geoberry_fancy.png b/src/main/resources/assets/natura/textures/blocks/geoberry_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/geoberry_fancy.png rename to src/main/resources/assets/natura/textures/blocks/geoberry_fancy.png diff --git a/resources/assets/natura/textures/blocks/geoberry_fast.png b/src/main/resources/assets/natura/textures/blocks/geoberry_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/geoberry_fast.png rename to src/main/resources/assets/natura/textures/blocks/geoberry_fast.png diff --git a/resources/assets/natura/textures/blocks/geoberry_ripe_fancy.png b/src/main/resources/assets/natura/textures/blocks/geoberry_ripe_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/geoberry_ripe_fancy.png rename to src/main/resources/assets/natura/textures/blocks/geoberry_ripe_fancy.png diff --git a/resources/assets/natura/textures/blocks/geoberry_ripe_fast.png b/src/main/resources/assets/natura/textures/blocks/geoberry_ripe_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/geoberry_ripe_fast.png rename to src/main/resources/assets/natura/textures/blocks/geoberry_ripe_fast.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_bark.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_bark.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_bark.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_door_top.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_door_top.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_door_top.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_heart.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_heart.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_heart.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_heart.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_ladder.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_ladder.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_ladder.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_ladder.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_planks.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_planks.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_planks.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_sapling.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_sapling.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_sapling.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_workbench_face.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_workbench_face.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_workbench_face.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_workbench_face.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_workbench_side.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_workbench_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_workbench_side.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_workbench_side.png diff --git a/resources/assets/natura/textures/blocks/ghostwood_workbench_top.png b/src/main/resources/assets/natura/textures/blocks/ghostwood_workbench_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/ghostwood_workbench_top.png rename to src/main/resources/assets/natura/textures/blocks/ghostwood_workbench_top.png diff --git a/resources/assets/natura/textures/blocks/glass_heat.png b/src/main/resources/assets/natura/textures/blocks/glass_heat.png similarity index 100% rename from resources/assets/natura/textures/blocks/glass_heat.png rename to src/main/resources/assets/natura/textures/blocks/glass_heat.png diff --git a/resources/assets/natura/textures/blocks/glass_heat_item.png b/src/main/resources/assets/natura/textures/blocks/glass_heat_item.png similarity index 100% rename from resources/assets/natura/textures/blocks/glass_heat_item.png rename to src/main/resources/assets/natura/textures/blocks/glass_heat_item.png diff --git a/resources/assets/natura/textures/blocks/glass_soul.png b/src/main/resources/assets/natura/textures/blocks/glass_soul.png similarity index 100% rename from resources/assets/natura/textures/blocks/glass_soul.png rename to src/main/resources/assets/natura/textures/blocks/glass_soul.png diff --git a/resources/assets/natura/textures/blocks/glass_soul_item.png b/src/main/resources/assets/natura/textures/blocks/glass_soul_item.png similarity index 100% rename from resources/assets/natura/textures/blocks/glass_soul_item.png rename to src/main/resources/assets/natura/textures/blocks/glass_soul_item.png diff --git a/resources/assets/natura/textures/blocks/glass_soulbak.png b/src/main/resources/assets/natura/textures/blocks/glass_soulbak.png similarity index 100% rename from resources/assets/natura/textures/blocks/glass_soulbak.png rename to src/main/resources/assets/natura/textures/blocks/glass_soulbak.png diff --git a/resources/assets/natura/textures/blocks/grass_top.png b/src/main/resources/assets/natura/textures/blocks/grass_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/grass_top.png rename to src/main/resources/assets/natura/textures/blocks/grass_top.png diff --git a/resources/assets/natura/textures/blocks/heatsand.png b/src/main/resources/assets/natura/textures/blocks/heatsand.png similarity index 100% rename from resources/assets/natura/textures/blocks/heatsand.png rename to src/main/resources/assets/natura/textures/blocks/heatsand.png diff --git a/resources/assets/natura/textures/blocks/hopseed_bark.png b/src/main/resources/assets/natura/textures/blocks/hopseed_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_bark.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_bark.png diff --git a/resources/assets/natura/textures/blocks/hopseed_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/hopseed_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/hopseed_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/hopseed_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/hopseed_door_top.png b/src/main/resources/assets/natura/textures/blocks/hopseed_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_door_top.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_door_top.png diff --git a/resources/assets/natura/textures/blocks/hopseed_heart.png b/src/main/resources/assets/natura/textures/blocks/hopseed_heart.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_heart.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_heart.png diff --git a/resources/assets/natura/textures/blocks/hopseed_ladder.png b/src/main/resources/assets/natura/textures/blocks/hopseed_ladder.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_ladder.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_ladder.png diff --git a/resources/assets/natura/textures/blocks/hopseed_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/hopseed_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/hopseed_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/hopseed_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/hopseed_planks.png b/src/main/resources/assets/natura/textures/blocks/hopseed_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_planks.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_planks.png diff --git a/resources/assets/natura/textures/blocks/hopseed_sapling.png b/src/main/resources/assets/natura/textures/blocks/hopseed_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_sapling.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_sapling.png diff --git a/resources/assets/natura/textures/blocks/hopseed_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/hopseed_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/hopseed_workbench_face.png b/src/main/resources/assets/natura/textures/blocks/hopseed_workbench_face.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_workbench_face.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_workbench_face.png diff --git a/resources/assets/natura/textures/blocks/hopseed_workbench_side.png b/src/main/resources/assets/natura/textures/blocks/hopseed_workbench_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_workbench_side.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_workbench_side.png diff --git a/resources/assets/natura/textures/blocks/hopseed_workbench_top.png b/src/main/resources/assets/natura/textures/blocks/hopseed_workbench_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/hopseed_workbench_top.png rename to src/main/resources/assets/natura/textures/blocks/hopseed_workbench_top.png diff --git a/resources/assets/natura/textures/blocks/infernal_stone.png b/src/main/resources/assets/natura/textures/blocks/infernal_stone.png similarity index 100% rename from resources/assets/natura/textures/blocks/infernal_stone.png rename to src/main/resources/assets/natura/textures/blocks/infernal_stone.png diff --git a/resources/assets/natura/textures/blocks/maple_bark.png b/src/main/resources/assets/natura/textures/blocks/maple_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_bark.png rename to src/main/resources/assets/natura/textures/blocks/maple_bark.png diff --git a/resources/assets/natura/textures/blocks/maple_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/maple_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/maple_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/maple_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/maple_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/maple_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/maple_door_top.png b/src/main/resources/assets/natura/textures/blocks/maple_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_door_top.png rename to src/main/resources/assets/natura/textures/blocks/maple_door_top.png diff --git a/resources/assets/natura/textures/blocks/maple_heart.png b/src/main/resources/assets/natura/textures/blocks/maple_heart.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_heart.png rename to src/main/resources/assets/natura/textures/blocks/maple_heart.png diff --git a/resources/assets/natura/textures/blocks/maple_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/maple_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/maple_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/maple_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/maple_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/maple_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/maple_planks.png b/src/main/resources/assets/natura/textures/blocks/maple_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_planks.png rename to src/main/resources/assets/natura/textures/blocks/maple_planks.png diff --git a/resources/assets/natura/textures/blocks/maple_sapling.png b/src/main/resources/assets/natura/textures/blocks/maple_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_sapling.png rename to src/main/resources/assets/natura/textures/blocks/maple_sapling.png diff --git a/resources/assets/natura/textures/blocks/maple_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/maple_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/maple_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/maple_window.png b/src/main/resources/assets/natura/textures/blocks/maple_window.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_window.png rename to src/main/resources/assets/natura/textures/blocks/maple_window.png diff --git a/resources/assets/natura/textures/blocks/maple_workbench_face.png b/src/main/resources/assets/natura/textures/blocks/maple_workbench_face.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_workbench_face.png rename to src/main/resources/assets/natura/textures/blocks/maple_workbench_face.png diff --git a/resources/assets/natura/textures/blocks/maple_workbench_side.png b/src/main/resources/assets/natura/textures/blocks/maple_workbench_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_workbench_side.png rename to src/main/resources/assets/natura/textures/blocks/maple_workbench_side.png diff --git a/resources/assets/natura/textures/blocks/maple_workbench_top.png b/src/main/resources/assets/natura/textures/blocks/maple_workbench_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/maple_workbench_top.png rename to src/main/resources/assets/natura/textures/blocks/maple_workbench_top.png diff --git a/resources/assets/natura/textures/blocks/mushroom_amber.png b/src/main/resources/assets/natura/textures/blocks/mushroom_amber.png similarity index 100% rename from resources/assets/natura/textures/blocks/mushroom_amber.png rename to src/main/resources/assets/natura/textures/blocks/mushroom_amber.png diff --git a/resources/assets/natura/textures/blocks/mushroom_blue.png b/src/main/resources/assets/natura/textures/blocks/mushroom_blue.png similarity index 100% rename from resources/assets/natura/textures/blocks/mushroom_blue.png rename to src/main/resources/assets/natura/textures/blocks/mushroom_blue.png diff --git a/resources/assets/natura/textures/blocks/mushroom_green.png b/src/main/resources/assets/natura/textures/blocks/mushroom_green.png similarity index 100% rename from resources/assets/natura/textures/blocks/mushroom_green.png rename to src/main/resources/assets/natura/textures/blocks/mushroom_green.png diff --git a/resources/assets/natura/textures/blocks/mushroom_inside_blue.png b/src/main/resources/assets/natura/textures/blocks/mushroom_inside_blue.png similarity index 100% rename from resources/assets/natura/textures/blocks/mushroom_inside_blue.png rename to src/main/resources/assets/natura/textures/blocks/mushroom_inside_blue.png diff --git a/resources/assets/natura/textures/blocks/mushroom_inside_green.png b/src/main/resources/assets/natura/textures/blocks/mushroom_inside_green.png similarity index 100% rename from resources/assets/natura/textures/blocks/mushroom_inside_green.png rename to src/main/resources/assets/natura/textures/blocks/mushroom_inside_green.png diff --git a/resources/assets/natura/textures/blocks/mushroom_inside_purple.png b/src/main/resources/assets/natura/textures/blocks/mushroom_inside_purple.png similarity index 100% rename from resources/assets/natura/textures/blocks/mushroom_inside_purple.png rename to src/main/resources/assets/natura/textures/blocks/mushroom_inside_purple.png diff --git a/resources/assets/natura/textures/blocks/mushroom_purple.png b/src/main/resources/assets/natura/textures/blocks/mushroom_purple.png similarity index 100% rename from resources/assets/natura/textures/blocks/mushroom_purple.png rename to src/main/resources/assets/natura/textures/blocks/mushroom_purple.png diff --git a/resources/assets/natura/textures/blocks/mushroom_skin_blue.png b/src/main/resources/assets/natura/textures/blocks/mushroom_skin_blue.png similarity index 100% rename from resources/assets/natura/textures/blocks/mushroom_skin_blue.png rename to src/main/resources/assets/natura/textures/blocks/mushroom_skin_blue.png diff --git a/resources/assets/natura/textures/blocks/mushroom_skin_green.png b/src/main/resources/assets/natura/textures/blocks/mushroom_skin_green.png similarity index 100% rename from resources/assets/natura/textures/blocks/mushroom_skin_green.png rename to src/main/resources/assets/natura/textures/blocks/mushroom_skin_green.png diff --git a/resources/assets/natura/textures/blocks/mushroom_skin_purple.png b/src/main/resources/assets/natura/textures/blocks/mushroom_skin_purple.png similarity index 100% rename from resources/assets/natura/textures/blocks/mushroom_skin_purple.png rename to src/main/resources/assets/natura/textures/blocks/mushroom_skin_purple.png diff --git a/resources/assets/natura/textures/blocks/mushroom_stem_blue.png b/src/main/resources/assets/natura/textures/blocks/mushroom_stem_blue.png similarity index 100% rename from resources/assets/natura/textures/blocks/mushroom_stem_blue.png rename to src/main/resources/assets/natura/textures/blocks/mushroom_stem_blue.png diff --git a/resources/assets/natura/textures/blocks/mushroom_stem_green.png b/src/main/resources/assets/natura/textures/blocks/mushroom_stem_green.png similarity index 100% rename from resources/assets/natura/textures/blocks/mushroom_stem_green.png rename to src/main/resources/assets/natura/textures/blocks/mushroom_stem_green.png diff --git a/resources/assets/natura/textures/blocks/mushroom_stem_purple.png b/src/main/resources/assets/natura/textures/blocks/mushroom_stem_purple.png similarity index 100% rename from resources/assets/natura/textures/blocks/mushroom_stem_purple.png rename to src/main/resources/assets/natura/textures/blocks/mushroom_stem_purple.png diff --git a/resources/assets/natura/textures/blocks/ndispenser_front_horizontal.png b/src/main/resources/assets/natura/textures/blocks/ndispenser_front_horizontal.png similarity index 100% rename from resources/assets/natura/textures/blocks/ndispenser_front_horizontal.png rename to src/main/resources/assets/natura/textures/blocks/ndispenser_front_horizontal.png diff --git a/resources/assets/natura/textures/blocks/ndispenser_front_vertical.png b/src/main/resources/assets/natura/textures/blocks/ndispenser_front_vertical.png similarity index 100% rename from resources/assets/natura/textures/blocks/ndispenser_front_vertical.png rename to src/main/resources/assets/natura/textures/blocks/ndispenser_front_vertical.png diff --git a/resources/assets/natura/textures/blocks/ndropper_front_horizontal.png b/src/main/resources/assets/natura/textures/blocks/ndropper_front_horizontal.png similarity index 100% rename from resources/assets/natura/textures/blocks/ndropper_front_horizontal.png rename to src/main/resources/assets/natura/textures/blocks/ndropper_front_horizontal.png diff --git a/resources/assets/natura/textures/blocks/ndropper_front_vertical.png b/src/main/resources/assets/natura/textures/blocks/ndropper_front_vertical.png similarity index 100% rename from resources/assets/natura/textures/blocks/ndropper_front_vertical.png rename to src/main/resources/assets/natura/textures/blocks/ndropper_front_vertical.png diff --git a/resources/assets/natura/textures/blocks/nfurnace_off.png b/src/main/resources/assets/natura/textures/blocks/nfurnace_off.png similarity index 100% rename from resources/assets/natura/textures/blocks/nfurnace_off.png rename to src/main/resources/assets/natura/textures/blocks/nfurnace_off.png diff --git a/resources/assets/natura/textures/blocks/nfurnace_on.png b/src/main/resources/assets/natura/textures/blocks/nfurnace_on.png similarity index 100% rename from resources/assets/natura/textures/blocks/nfurnace_on.png rename to src/main/resources/assets/natura/textures/blocks/nfurnace_on.png diff --git a/resources/assets/natura/textures/blocks/nfurnace_side.png b/src/main/resources/assets/natura/textures/blocks/nfurnace_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/nfurnace_side.png rename to src/main/resources/assets/natura/textures/blocks/nfurnace_side.png diff --git a/resources/assets/natura/textures/blocks/nfurnace_top.png b/src/main/resources/assets/natura/textures/blocks/nfurnace_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/nfurnace_top.png rename to src/main/resources/assets/natura/textures/blocks/nfurnace_top.png diff --git a/resources/assets/natura/textures/blocks/nhopper_inside.png b/src/main/resources/assets/natura/textures/blocks/nhopper_inside.png similarity index 100% rename from resources/assets/natura/textures/blocks/nhopper_inside.png rename to src/main/resources/assets/natura/textures/blocks/nhopper_inside.png diff --git a/resources/assets/natura/textures/blocks/nhopper_outside.png b/src/main/resources/assets/natura/textures/blocks/nhopper_outside.png similarity index 100% rename from resources/assets/natura/textures/blocks/nhopper_outside.png rename to src/main/resources/assets/natura/textures/blocks/nhopper_outside.png diff --git a/resources/assets/natura/textures/blocks/nhopper_top.png b/src/main/resources/assets/natura/textures/blocks/nhopper_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/nhopper_top.png rename to src/main/resources/assets/natura/textures/blocks/nhopper_top.png diff --git a/resources/assets/natura/textures/blocks/nlever.png b/src/main/resources/assets/natura/textures/blocks/nlever.png similarity index 100% rename from resources/assets/natura/textures/blocks/nlever.png rename to src/main/resources/assets/natura/textures/blocks/nlever.png diff --git a/resources/assets/natura/textures/blocks/oak_window.png b/src/main/resources/assets/natura/textures/blocks/oak_window.png similarity index 100% rename from resources/assets/natura/textures/blocks/oak_window.png rename to src/main/resources/assets/natura/textures/blocks/oak_window.png diff --git a/resources/assets/natura/textures/blocks/obelisk.png b/src/main/resources/assets/natura/textures/blocks/obelisk.png similarity index 100% rename from resources/assets/natura/textures/blocks/obelisk.png rename to src/main/resources/assets/natura/textures/blocks/obelisk.png diff --git a/resources/assets/natura/textures/blocks/obelisk_active.png b/src/main/resources/assets/natura/textures/blocks/obelisk_active.png similarity index 100% rename from resources/assets/natura/textures/blocks/obelisk_active.png rename to src/main/resources/assets/natura/textures/blocks/obelisk_active.png diff --git a/resources/assets/natura/textures/blocks/pine_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/pine_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/pine_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/pine_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/pine_door_top.png b/src/main/resources/assets/natura/textures/blocks/pine_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/pine_door_top.png rename to src/main/resources/assets/natura/textures/blocks/pine_door_top.png diff --git a/resources/assets/natura/textures/blocks/pine_window.png b/src/main/resources/assets/natura/textures/blocks/pine_window.png similarity index 100% rename from resources/assets/natura/textures/blocks/pine_window.png rename to src/main/resources/assets/natura/textures/blocks/pine_window.png diff --git a/resources/assets/natura/textures/blocks/piston_bottom.png b/src/main/resources/assets/natura/textures/blocks/piston_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/piston_bottom.png rename to src/main/resources/assets/natura/textures/blocks/piston_bottom.png diff --git a/resources/assets/natura/textures/blocks/piston_inner.png b/src/main/resources/assets/natura/textures/blocks/piston_inner.png similarity index 100% rename from resources/assets/natura/textures/blocks/piston_inner.png rename to src/main/resources/assets/natura/textures/blocks/piston_inner.png diff --git a/resources/assets/natura/textures/blocks/piston_side.png b/src/main/resources/assets/natura/textures/blocks/piston_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/piston_side.png rename to src/main/resources/assets/natura/textures/blocks/piston_side.png diff --git a/resources/assets/natura/textures/blocks/piston_top_normal.png b/src/main/resources/assets/natura/textures/blocks/piston_top_normal.png similarity index 100% rename from resources/assets/natura/textures/blocks/piston_top_normal.png rename to src/main/resources/assets/natura/textures/blocks/piston_top_normal.png diff --git a/resources/assets/natura/textures/blocks/piston_top_sticky.png b/src/main/resources/assets/natura/textures/blocks/piston_top_sticky.png similarity index 100% rename from resources/assets/natura/textures/blocks/piston_top_sticky.png rename to src/main/resources/assets/natura/textures/blocks/piston_top_sticky.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_bark.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_bark.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_bark.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_door_top.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_door_top.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_door_top.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_heart.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_heart.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_heart.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_heart.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_planks.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_planks.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_planks.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_planks_dark.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_planks_dark.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_planks_dark.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_planks_dark.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_planks_light.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_planks_light.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_planks_light.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_planks_light.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_sapling.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_sapling.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_sapling.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_window.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_window.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_window.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_window.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_workbench_face.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_workbench_face.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_workbench_face.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_workbench_face.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_workbench_side.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_workbench_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_workbench_side.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_workbench_side.png diff --git a/resources/assets/natura/textures/blocks/purpleheart_workbench_top.png b/src/main/resources/assets/natura/textures/blocks/purpleheart_workbench_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/purpleheart_workbench_top.png rename to src/main/resources/assets/natura/textures/blocks/purpleheart_workbench_top.png diff --git a/resources/assets/natura/textures/blocks/raspberry_fancy.png b/src/main/resources/assets/natura/textures/blocks/raspberry_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/raspberry_fancy.png rename to src/main/resources/assets/natura/textures/blocks/raspberry_fancy.png diff --git a/resources/assets/natura/textures/blocks/raspberry_fast.png b/src/main/resources/assets/natura/textures/blocks/raspberry_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/raspberry_fast.png rename to src/main/resources/assets/natura/textures/blocks/raspberry_fast.png diff --git a/resources/assets/natura/textures/blocks/raspberry_ripe_fancy.png b/src/main/resources/assets/natura/textures/blocks/raspberry_ripe_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/raspberry_ripe_fancy.png rename to src/main/resources/assets/natura/textures/blocks/raspberry_ripe_fancy.png diff --git a/resources/assets/natura/textures/blocks/raspberry_ripe_fast.png b/src/main/resources/assets/natura/textures/blocks/raspberry_ripe_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/raspberry_ripe_fast.png rename to src/main/resources/assets/natura/textures/blocks/raspberry_ripe_fast.png diff --git a/resources/assets/natura/textures/blocks/redwood_bark.png b/src/main/resources/assets/natura/textures/blocks/redwood_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_bark.png rename to src/main/resources/assets/natura/textures/blocks/redwood_bark.png diff --git a/resources/assets/natura/textures/blocks/redwood_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/redwood_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/redwood_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/redwood_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/redwood_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/redwood_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/redwood_door_top.png b/src/main/resources/assets/natura/textures/blocks/redwood_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_door_top.png rename to src/main/resources/assets/natura/textures/blocks/redwood_door_top.png diff --git a/resources/assets/natura/textures/blocks/redwood_heart.png b/src/main/resources/assets/natura/textures/blocks/redwood_heart.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_heart.png rename to src/main/resources/assets/natura/textures/blocks/redwood_heart.png diff --git a/resources/assets/natura/textures/blocks/redwood_ladder.png b/src/main/resources/assets/natura/textures/blocks/redwood_ladder.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_ladder.png rename to src/main/resources/assets/natura/textures/blocks/redwood_ladder.png diff --git a/resources/assets/natura/textures/blocks/redwood_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/redwood_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/redwood_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/redwood_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/redwood_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/redwood_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/redwood_planks.png b/src/main/resources/assets/natura/textures/blocks/redwood_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_planks.png rename to src/main/resources/assets/natura/textures/blocks/redwood_planks.png diff --git a/resources/assets/natura/textures/blocks/redwood_root.png b/src/main/resources/assets/natura/textures/blocks/redwood_root.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_root.png rename to src/main/resources/assets/natura/textures/blocks/redwood_root.png diff --git a/resources/assets/natura/textures/blocks/redwood_sapling.png b/src/main/resources/assets/natura/textures/blocks/redwood_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_sapling.png rename to src/main/resources/assets/natura/textures/blocks/redwood_sapling.png diff --git a/resources/assets/natura/textures/blocks/redwood_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/redwood_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/redwood_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/redwood_workbench_face.png b/src/main/resources/assets/natura/textures/blocks/redwood_workbench_face.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_workbench_face.png rename to src/main/resources/assets/natura/textures/blocks/redwood_workbench_face.png diff --git a/resources/assets/natura/textures/blocks/redwood_workbench_side.png b/src/main/resources/assets/natura/textures/blocks/redwood_workbench_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_workbench_side.png rename to src/main/resources/assets/natura/textures/blocks/redwood_workbench_side.png diff --git a/resources/assets/natura/textures/blocks/redwood_workbench_top.png b/src/main/resources/assets/natura/textures/blocks/redwood_workbench_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwood_workbench_top.png rename to src/main/resources/assets/natura/textures/blocks/redwood_workbench_top.png diff --git a/resources/assets/natura/textures/blocks/redwoodbark_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/redwoodbark_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwoodbark_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/redwoodbark_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/redwoodbark_door_top.png b/src/main/resources/assets/natura/textures/blocks/redwoodbark_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/redwoodbark_door_top.png rename to src/main/resources/assets/natura/textures/blocks/redwoodbark_door_top.png diff --git a/resources/assets/natura/textures/blocks/saguaro_bottom.png b/src/main/resources/assets/natura/textures/blocks/saguaro_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/saguaro_bottom.png rename to src/main/resources/assets/natura/textures/blocks/saguaro_bottom.png diff --git a/resources/assets/natura/textures/blocks/saguaro_fruit.png b/src/main/resources/assets/natura/textures/blocks/saguaro_fruit.png similarity index 100% rename from resources/assets/natura/textures/blocks/saguaro_fruit.png rename to src/main/resources/assets/natura/textures/blocks/saguaro_fruit.png diff --git a/resources/assets/natura/textures/blocks/saguaro_side.png b/src/main/resources/assets/natura/textures/blocks/saguaro_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/saguaro_side.png rename to src/main/resources/assets/natura/textures/blocks/saguaro_side.png diff --git a/resources/assets/natura/textures/blocks/saguaro_top.png b/src/main/resources/assets/natura/textures/blocks/saguaro_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/saguaro_top.png rename to src/main/resources/assets/natura/textures/blocks/saguaro_top.png diff --git a/resources/assets/natura/textures/blocks/sakura_bark.png b/src/main/resources/assets/natura/textures/blocks/sakura_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_bark.png rename to src/main/resources/assets/natura/textures/blocks/sakura_bark.png diff --git a/resources/assets/natura/textures/blocks/sakura_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/sakura_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/sakura_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/sakura_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/sakura_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/sakura_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/sakura_door_top.png b/src/main/resources/assets/natura/textures/blocks/sakura_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_door_top.png rename to src/main/resources/assets/natura/textures/blocks/sakura_door_top.png diff --git a/resources/assets/natura/textures/blocks/sakura_heart.png b/src/main/resources/assets/natura/textures/blocks/sakura_heart.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_heart.png rename to src/main/resources/assets/natura/textures/blocks/sakura_heart.png diff --git a/resources/assets/natura/textures/blocks/sakura_ladder.png b/src/main/resources/assets/natura/textures/blocks/sakura_ladder.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_ladder.png rename to src/main/resources/assets/natura/textures/blocks/sakura_ladder.png diff --git a/resources/assets/natura/textures/blocks/sakura_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/sakura_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/sakura_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/sakura_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/sakura_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/sakura_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/sakura_planks.png b/src/main/resources/assets/natura/textures/blocks/sakura_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_planks.png rename to src/main/resources/assets/natura/textures/blocks/sakura_planks.png diff --git a/resources/assets/natura/textures/blocks/sakura_sapling.png b/src/main/resources/assets/natura/textures/blocks/sakura_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_sapling.png rename to src/main/resources/assets/natura/textures/blocks/sakura_sapling.png diff --git a/resources/assets/natura/textures/blocks/sakura_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/sakura_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/sakura_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/sakura_workbench_face.png b/src/main/resources/assets/natura/textures/blocks/sakura_workbench_face.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_workbench_face.png rename to src/main/resources/assets/natura/textures/blocks/sakura_workbench_face.png diff --git a/resources/assets/natura/textures/blocks/sakura_workbench_side.png b/src/main/resources/assets/natura/textures/blocks/sakura_workbench_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_workbench_side.png rename to src/main/resources/assets/natura/textures/blocks/sakura_workbench_side.png diff --git a/resources/assets/natura/textures/blocks/sakura_workbench_top.png b/src/main/resources/assets/natura/textures/blocks/sakura_workbench_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/sakura_workbench_top.png rename to src/main/resources/assets/natura/textures/blocks/sakura_workbench_top.png diff --git a/resources/assets/natura/textures/blocks/silt_1.png b/src/main/resources/assets/natura/textures/blocks/silt_1.png similarity index 100% rename from resources/assets/natura/textures/blocks/silt_1.png rename to src/main/resources/assets/natura/textures/blocks/silt_1.png diff --git a/resources/assets/natura/textures/blocks/silt_2.png b/src/main/resources/assets/natura/textures/blocks/silt_2.png similarity index 100% rename from resources/assets/natura/textures/blocks/silt_2.png rename to src/main/resources/assets/natura/textures/blocks/silt_2.png diff --git a/resources/assets/natura/textures/blocks/silt_3.png b/src/main/resources/assets/natura/textures/blocks/silt_3.png similarity index 100% rename from resources/assets/natura/textures/blocks/silt_3.png rename to src/main/resources/assets/natura/textures/blocks/silt_3.png diff --git a/resources/assets/natura/textures/blocks/silt_4.png b/src/main/resources/assets/natura/textures/blocks/silt_4.png similarity index 100% rename from resources/assets/natura/textures/blocks/silt_4.png rename to src/main/resources/assets/natura/textures/blocks/silt_4.png diff --git a/resources/assets/natura/textures/blocks/silt_5.png b/src/main/resources/assets/natura/textures/blocks/silt_5.png similarity index 100% rename from resources/assets/natura/textures/blocks/silt_5.png rename to src/main/resources/assets/natura/textures/blocks/silt_5.png diff --git a/resources/assets/natura/textures/blocks/silt_6.png b/src/main/resources/assets/natura/textures/blocks/silt_6.png similarity index 100% rename from resources/assets/natura/textures/blocks/silt_6.png rename to src/main/resources/assets/natura/textures/blocks/silt_6.png diff --git a/resources/assets/natura/textures/blocks/silt_7.png b/src/main/resources/assets/natura/textures/blocks/silt_7.png similarity index 100% rename from resources/assets/natura/textures/blocks/silt_7.png rename to src/main/resources/assets/natura/textures/blocks/silt_7.png diff --git a/resources/assets/natura/textures/blocks/silt_8.png b/src/main/resources/assets/natura/textures/blocks/silt_8.png similarity index 100% rename from resources/assets/natura/textures/blocks/silt_8.png rename to src/main/resources/assets/natura/textures/blocks/silt_8.png diff --git a/resources/assets/natura/textures/blocks/silverbell_bark.png b/src/main/resources/assets/natura/textures/blocks/silverbell_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_bark.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_bark.png diff --git a/resources/assets/natura/textures/blocks/silverbell_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/silverbell_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/silverbell_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/silverbell_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/silverbell_door_top.png b/src/main/resources/assets/natura/textures/blocks/silverbell_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_door_top.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_door_top.png diff --git a/resources/assets/natura/textures/blocks/silverbell_heart.png b/src/main/resources/assets/natura/textures/blocks/silverbell_heart.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_heart.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_heart.png diff --git a/resources/assets/natura/textures/blocks/silverbell_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/silverbell_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/silverbell_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/silverbell_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/silverbell_planks.png b/src/main/resources/assets/natura/textures/blocks/silverbell_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_planks.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_planks.png diff --git a/resources/assets/natura/textures/blocks/silverbell_sapling.png b/src/main/resources/assets/natura/textures/blocks/silverbell_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_sapling.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_sapling.png diff --git a/resources/assets/natura/textures/blocks/silverbell_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/silverbell_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/silverbell_window.png b/src/main/resources/assets/natura/textures/blocks/silverbell_window.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_window.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_window.png diff --git a/resources/assets/natura/textures/blocks/silverbell_workbench_face.png b/src/main/resources/assets/natura/textures/blocks/silverbell_workbench_face.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_workbench_face.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_workbench_face.png diff --git a/resources/assets/natura/textures/blocks/silverbell_workbench_side.png b/src/main/resources/assets/natura/textures/blocks/silverbell_workbench_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_workbench_side.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_workbench_side.png diff --git a/resources/assets/natura/textures/blocks/silverbell_workbench_top.png b/src/main/resources/assets/natura/textures/blocks/silverbell_workbench_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/silverbell_workbench_top.png rename to src/main/resources/assets/natura/textures/blocks/silverbell_workbench_top.png diff --git a/resources/assets/natura/textures/blocks/skyberry_fancy.png b/src/main/resources/assets/natura/textures/blocks/skyberry_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/skyberry_fancy.png rename to src/main/resources/assets/natura/textures/blocks/skyberry_fancy.png diff --git a/resources/assets/natura/textures/blocks/skyberry_fast.png b/src/main/resources/assets/natura/textures/blocks/skyberry_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/skyberry_fast.png rename to src/main/resources/assets/natura/textures/blocks/skyberry_fast.png diff --git a/resources/assets/natura/textures/blocks/skyberry_ripe_fancy.png b/src/main/resources/assets/natura/textures/blocks/skyberry_ripe_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/skyberry_ripe_fancy.png rename to src/main/resources/assets/natura/textures/blocks/skyberry_ripe_fancy.png diff --git a/resources/assets/natura/textures/blocks/skyberry_ripe_fast.png b/src/main/resources/assets/natura/textures/blocks/skyberry_ripe_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/skyberry_ripe_fast.png rename to src/main/resources/assets/natura/textures/blocks/skyberry_ripe_fast.png diff --git a/resources/assets/natura/textures/blocks/spruce_window.png b/src/main/resources/assets/natura/textures/blocks/spruce_window.png similarity index 100% rename from resources/assets/natura/textures/blocks/spruce_window.png rename to src/main/resources/assets/natura/textures/blocks/spruce_window.png diff --git a/resources/assets/natura/textures/blocks/stingberry_fancy.png b/src/main/resources/assets/natura/textures/blocks/stingberry_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/stingberry_fancy.png rename to src/main/resources/assets/natura/textures/blocks/stingberry_fancy.png diff --git a/resources/assets/natura/textures/blocks/stingberry_fast.png b/src/main/resources/assets/natura/textures/blocks/stingberry_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/stingberry_fast.png rename to src/main/resources/assets/natura/textures/blocks/stingberry_fast.png diff --git a/resources/assets/natura/textures/blocks/stingberry_ripe_fancy.png b/src/main/resources/assets/natura/textures/blocks/stingberry_ripe_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/stingberry_ripe_fancy.png rename to src/main/resources/assets/natura/textures/blocks/stingberry_ripe_fancy.png diff --git a/resources/assets/natura/textures/blocks/stingberry_ripe_fast.png b/src/main/resources/assets/natura/textures/blocks/stingberry_ripe_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/stingberry_ripe_fast.png rename to src/main/resources/assets/natura/textures/blocks/stingberry_ripe_fast.png diff --git a/resources/assets/natura/textures/blocks/tainted_farmland_dry.png b/src/main/resources/assets/natura/textures/blocks/tainted_farmland_dry.png similarity index 100% rename from resources/assets/natura/textures/blocks/tainted_farmland_dry.png rename to src/main/resources/assets/natura/textures/blocks/tainted_farmland_dry.png diff --git a/resources/assets/natura/textures/blocks/tainted_farmland_heated.png b/src/main/resources/assets/natura/textures/blocks/tainted_farmland_heated.png similarity index 100% rename from resources/assets/natura/textures/blocks/tainted_farmland_heated.png rename to src/main/resources/assets/natura/textures/blocks/tainted_farmland_heated.png diff --git a/resources/assets/natura/textures/blocks/tainted_soil.png b/src/main/resources/assets/natura/textures/blocks/tainted_soil.png similarity index 100% rename from resources/assets/natura/textures/blocks/tainted_soil.png rename to src/main/resources/assets/natura/textures/blocks/tainted_soil.png diff --git a/resources/assets/natura/textures/blocks/thornvine.png b/src/main/resources/assets/natura/textures/blocks/thornvine.png similarity index 100% rename from resources/assets/natura/textures/blocks/thornvine.png rename to src/main/resources/assets/natura/textures/blocks/thornvine.png diff --git a/resources/assets/natura/textures/blocks/tiger_bark.png b/src/main/resources/assets/natura/textures/blocks/tiger_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_bark.png rename to src/main/resources/assets/natura/textures/blocks/tiger_bark.png diff --git a/resources/assets/natura/textures/blocks/tiger_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/tiger_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/tiger_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/tiger_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/tiger_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/tiger_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/tiger_door_top.png b/src/main/resources/assets/natura/textures/blocks/tiger_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_door_top.png rename to src/main/resources/assets/natura/textures/blocks/tiger_door_top.png diff --git a/resources/assets/natura/textures/blocks/tiger_heart.png b/src/main/resources/assets/natura/textures/blocks/tiger_heart.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_heart.png rename to src/main/resources/assets/natura/textures/blocks/tiger_heart.png diff --git a/resources/assets/natura/textures/blocks/tiger_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/tiger_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/tiger_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/tiger_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/tiger_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/tiger_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/tiger_planks.png b/src/main/resources/assets/natura/textures/blocks/tiger_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_planks.png rename to src/main/resources/assets/natura/textures/blocks/tiger_planks.png diff --git a/resources/assets/natura/textures/blocks/tiger_sapling.png b/src/main/resources/assets/natura/textures/blocks/tiger_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_sapling.png rename to src/main/resources/assets/natura/textures/blocks/tiger_sapling.png diff --git a/resources/assets/natura/textures/blocks/tiger_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/tiger_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/tiger_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/tiger_window.png b/src/main/resources/assets/natura/textures/blocks/tiger_window.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_window.png rename to src/main/resources/assets/natura/textures/blocks/tiger_window.png diff --git a/resources/assets/natura/textures/blocks/tiger_workbench_face.png b/src/main/resources/assets/natura/textures/blocks/tiger_workbench_face.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_workbench_face.png rename to src/main/resources/assets/natura/textures/blocks/tiger_workbench_face.png diff --git a/resources/assets/natura/textures/blocks/tiger_workbench_side.png b/src/main/resources/assets/natura/textures/blocks/tiger_workbench_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_workbench_side.png rename to src/main/resources/assets/natura/textures/blocks/tiger_workbench_side.png diff --git a/resources/assets/natura/textures/blocks/tiger_workbench_top.png b/src/main/resources/assets/natura/textures/blocks/tiger_workbench_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/tiger_workbench_top.png rename to src/main/resources/assets/natura/textures/blocks/tiger_workbench_top.png diff --git a/resources/assets/natura/textures/blocks/willow_bark.png b/src/main/resources/assets/natura/textures/blocks/willow_bark.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_bark.png rename to src/main/resources/assets/natura/textures/blocks/willow_bark.png diff --git a/resources/assets/natura/textures/blocks/willow_bookshelf.png b/src/main/resources/assets/natura/textures/blocks/willow_bookshelf.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_bookshelf.png rename to src/main/resources/assets/natura/textures/blocks/willow_bookshelf.png diff --git a/resources/assets/natura/textures/blocks/willow_door_bottom.png b/src/main/resources/assets/natura/textures/blocks/willow_door_bottom.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_door_bottom.png rename to src/main/resources/assets/natura/textures/blocks/willow_door_bottom.png diff --git a/resources/assets/natura/textures/blocks/willow_door_top.png b/src/main/resources/assets/natura/textures/blocks/willow_door_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_door_top.png rename to src/main/resources/assets/natura/textures/blocks/willow_door_top.png diff --git a/resources/assets/natura/textures/blocks/willow_heart.png b/src/main/resources/assets/natura/textures/blocks/willow_heart.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_heart.png rename to src/main/resources/assets/natura/textures/blocks/willow_heart.png diff --git a/resources/assets/natura/textures/blocks/willow_leaves_fancy.png b/src/main/resources/assets/natura/textures/blocks/willow_leaves_fancy.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_leaves_fancy.png rename to src/main/resources/assets/natura/textures/blocks/willow_leaves_fancy.png diff --git a/resources/assets/natura/textures/blocks/willow_leaves_fast.png b/src/main/resources/assets/natura/textures/blocks/willow_leaves_fast.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_leaves_fast.png rename to src/main/resources/assets/natura/textures/blocks/willow_leaves_fast.png diff --git a/resources/assets/natura/textures/blocks/willow_planks.png b/src/main/resources/assets/natura/textures/blocks/willow_planks.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_planks.png rename to src/main/resources/assets/natura/textures/blocks/willow_planks.png diff --git a/resources/assets/natura/textures/blocks/willow_sapling.png b/src/main/resources/assets/natura/textures/blocks/willow_sapling.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_sapling.png rename to src/main/resources/assets/natura/textures/blocks/willow_sapling.png diff --git a/resources/assets/natura/textures/blocks/willow_trapdoor.png b/src/main/resources/assets/natura/textures/blocks/willow_trapdoor.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_trapdoor.png rename to src/main/resources/assets/natura/textures/blocks/willow_trapdoor.png diff --git a/resources/assets/natura/textures/blocks/willow_window.png b/src/main/resources/assets/natura/textures/blocks/willow_window.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_window.png rename to src/main/resources/assets/natura/textures/blocks/willow_window.png diff --git a/resources/assets/natura/textures/blocks/willow_workbench_face.png b/src/main/resources/assets/natura/textures/blocks/willow_workbench_face.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_workbench_face.png rename to src/main/resources/assets/natura/textures/blocks/willow_workbench_face.png diff --git a/resources/assets/natura/textures/blocks/willow_workbench_side.png b/src/main/resources/assets/natura/textures/blocks/willow_workbench_side.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_workbench_side.png rename to src/main/resources/assets/natura/textures/blocks/willow_workbench_side.png diff --git a/resources/assets/natura/textures/blocks/willow_workbench_top.png b/src/main/resources/assets/natura/textures/blocks/willow_workbench_top.png similarity index 100% rename from resources/assets/natura/textures/blocks/willow_workbench_top.png rename to src/main/resources/assets/natura/textures/blocks/willow_workbench_top.png diff --git a/resources/assets/natura/textures/boats/mapleboat.png b/src/main/resources/assets/natura/textures/boats/mapleboat.png similarity index 100% rename from resources/assets/natura/textures/boats/mapleboat.png rename to src/main/resources/assets/natura/textures/boats/mapleboat.png diff --git a/resources/assets/natura/textures/boats/purpleboat.png b/src/main/resources/assets/natura/textures/boats/purpleboat.png similarity index 100% rename from resources/assets/natura/textures/boats/purpleboat.png rename to src/main/resources/assets/natura/textures/boats/purpleboat.png diff --git a/resources/assets/natura/textures/boats/silverboat.png b/src/main/resources/assets/natura/textures/boats/silverboat.png similarity index 100% rename from resources/assets/natura/textures/boats/silverboat.png rename to src/main/resources/assets/natura/textures/boats/silverboat.png diff --git a/resources/assets/natura/textures/boats/tigerboat.png b/src/main/resources/assets/natura/textures/boats/tigerboat.png similarity index 100% rename from resources/assets/natura/textures/boats/tigerboat.png rename to src/main/resources/assets/natura/textures/boats/tigerboat.png diff --git a/resources/assets/natura/textures/boats/willowboat.png b/src/main/resources/assets/natura/textures/boats/willowboat.png similarity index 100% rename from resources/assets/natura/textures/boats/willowboat.png rename to src/main/resources/assets/natura/textures/boats/willowboat.png diff --git a/resources/assets/natura/textures/items/armor_imp_body.png b/src/main/resources/assets/natura/textures/items/armor_imp_body.png similarity index 100% rename from resources/assets/natura/textures/items/armor_imp_body.png rename to src/main/resources/assets/natura/textures/items/armor_imp_body.png diff --git a/resources/assets/natura/textures/items/armor_imp_boots.png b/src/main/resources/assets/natura/textures/items/armor_imp_boots.png similarity index 100% rename from resources/assets/natura/textures/items/armor_imp_boots.png rename to src/main/resources/assets/natura/textures/items/armor_imp_boots.png diff --git a/resources/assets/natura/textures/items/armor_imp_helmet.png b/src/main/resources/assets/natura/textures/items/armor_imp_helmet.png similarity index 100% rename from resources/assets/natura/textures/items/armor_imp_helmet.png rename to src/main/resources/assets/natura/textures/items/armor_imp_helmet.png diff --git a/resources/assets/natura/textures/items/armor_imp_leggings.png b/src/main/resources/assets/natura/textures/items/armor_imp_leggings.png similarity index 100% rename from resources/assets/natura/textures/items/armor_imp_leggings.png rename to src/main/resources/assets/natura/textures/items/armor_imp_leggings.png diff --git a/resources/assets/natura/textures/items/barley_flour.png b/src/main/resources/assets/natura/textures/items/barley_flour.png similarity index 100% rename from resources/assets/natura/textures/items/barley_flour.png rename to src/main/resources/assets/natura/textures/items/barley_flour.png diff --git a/resources/assets/natura/textures/items/barley_plant.png b/src/main/resources/assets/natura/textures/items/barley_plant.png similarity index 100% rename from resources/assets/natura/textures/items/barley_plant.png rename to src/main/resources/assets/natura/textures/items/barley_plant.png diff --git a/resources/assets/natura/textures/items/barley_seeds.png b/src/main/resources/assets/natura/textures/items/barley_seeds.png similarity index 100% rename from resources/assets/natura/textures/items/barley_seeds.png rename to src/main/resources/assets/natura/textures/items/barley_seeds.png diff --git a/resources/assets/natura/textures/items/berry_black.png b/src/main/resources/assets/natura/textures/items/berry_black.png similarity index 100% rename from resources/assets/natura/textures/items/berry_black.png rename to src/main/resources/assets/natura/textures/items/berry_black.png diff --git a/resources/assets/natura/textures/items/berry_blight.png b/src/main/resources/assets/natura/textures/items/berry_blight.png similarity index 100% rename from resources/assets/natura/textures/items/berry_blight.png rename to src/main/resources/assets/natura/textures/items/berry_blight.png diff --git a/resources/assets/natura/textures/items/berry_blue.png b/src/main/resources/assets/natura/textures/items/berry_blue.png similarity index 100% rename from resources/assets/natura/textures/items/berry_blue.png rename to src/main/resources/assets/natura/textures/items/berry_blue.png diff --git a/resources/assets/natura/textures/items/berry_dusk.png b/src/main/resources/assets/natura/textures/items/berry_dusk.png similarity index 100% rename from resources/assets/natura/textures/items/berry_dusk.png rename to src/main/resources/assets/natura/textures/items/berry_dusk.png diff --git a/resources/assets/natura/textures/items/berry_geo.png b/src/main/resources/assets/natura/textures/items/berry_geo.png similarity index 100% rename from resources/assets/natura/textures/items/berry_geo.png rename to src/main/resources/assets/natura/textures/items/berry_geo.png diff --git a/resources/assets/natura/textures/items/berry_medley.png b/src/main/resources/assets/natura/textures/items/berry_medley.png similarity index 100% rename from resources/assets/natura/textures/items/berry_medley.png rename to src/main/resources/assets/natura/textures/items/berry_medley.png diff --git a/resources/assets/natura/textures/items/berry_rasp.png b/src/main/resources/assets/natura/textures/items/berry_rasp.png similarity index 100% rename from resources/assets/natura/textures/items/berry_rasp.png rename to src/main/resources/assets/natura/textures/items/berry_rasp.png diff --git a/resources/assets/natura/textures/items/berry_sky.png b/src/main/resources/assets/natura/textures/items/berry_sky.png similarity index 100% rename from resources/assets/natura/textures/items/berry_sky.png rename to src/main/resources/assets/natura/textures/items/berry_sky.png diff --git a/resources/assets/natura/textures/items/berry_sting.png b/src/main/resources/assets/natura/textures/items/berry_sting.png similarity index 100% rename from resources/assets/natura/textures/items/berry_sting.png rename to src/main/resources/assets/natura/textures/items/berry_sting.png diff --git a/resources/assets/natura/textures/items/birch_stick.png b/src/main/resources/assets/natura/textures/items/birch_stick.png similarity index 100% rename from resources/assets/natura/textures/items/birch_stick.png rename to src/main/resources/assets/natura/textures/items/birch_stick.png diff --git a/resources/assets/natura/textures/items/bloodwood_bow.png b/src/main/resources/assets/natura/textures/items/bloodwood_bow.png similarity index 100% rename from resources/assets/natura/textures/items/bloodwood_bow.png rename to src/main/resources/assets/natura/textures/items/bloodwood_bow.png diff --git a/resources/assets/natura/textures/items/bloodwood_bow_drawn_0.png b/src/main/resources/assets/natura/textures/items/bloodwood_bow_drawn_0.png similarity index 100% rename from resources/assets/natura/textures/items/bloodwood_bow_drawn_0.png rename to src/main/resources/assets/natura/textures/items/bloodwood_bow_drawn_0.png diff --git a/resources/assets/natura/textures/items/bloodwood_bow_drawn_1.png b/src/main/resources/assets/natura/textures/items/bloodwood_bow_drawn_1.png similarity index 100% rename from resources/assets/natura/textures/items/bloodwood_bow_drawn_1.png rename to src/main/resources/assets/natura/textures/items/bloodwood_bow_drawn_1.png diff --git a/resources/assets/natura/textures/items/bloodwood_bow_drawn_2.png b/src/main/resources/assets/natura/textures/items/bloodwood_bow_drawn_2.png similarity index 100% rename from resources/assets/natura/textures/items/bloodwood_bow_drawn_2.png rename to src/main/resources/assets/natura/textures/items/bloodwood_bow_drawn_2.png diff --git a/resources/assets/natura/textures/items/bloodwood_bowl.png b/src/main/resources/assets/natura/textures/items/bloodwood_bowl.png similarity index 100% rename from resources/assets/natura/textures/items/bloodwood_bowl.png rename to src/main/resources/assets/natura/textures/items/bloodwood_bowl.png diff --git a/resources/assets/natura/textures/items/bloodwood_door_item.png b/src/main/resources/assets/natura/textures/items/bloodwood_door_item.png similarity index 100% rename from resources/assets/natura/textures/items/bloodwood_door_item.png rename to src/main/resources/assets/natura/textures/items/bloodwood_door_item.png diff --git a/resources/assets/natura/textures/items/bloodwood_hatchet.png b/src/main/resources/assets/natura/textures/items/bloodwood_hatchet.png similarity index 100% rename from resources/assets/natura/textures/items/bloodwood_hatchet.png rename to src/main/resources/assets/natura/textures/items/bloodwood_hatchet.png diff --git a/resources/assets/natura/textures/items/bloodwood_kama.png b/src/main/resources/assets/natura/textures/items/bloodwood_kama.png similarity index 100% rename from resources/assets/natura/textures/items/bloodwood_kama.png rename to src/main/resources/assets/natura/textures/items/bloodwood_kama.png diff --git a/resources/assets/natura/textures/items/bloodwood_pickaxe.png b/src/main/resources/assets/natura/textures/items/bloodwood_pickaxe.png similarity index 100% rename from resources/assets/natura/textures/items/bloodwood_pickaxe.png rename to src/main/resources/assets/natura/textures/items/bloodwood_pickaxe.png diff --git a/resources/assets/natura/textures/items/bloodwood_shovel.png b/src/main/resources/assets/natura/textures/items/bloodwood_shovel.png similarity index 100% rename from resources/assets/natura/textures/items/bloodwood_shovel.png rename to src/main/resources/assets/natura/textures/items/bloodwood_shovel.png diff --git a/resources/assets/natura/textures/items/bloodwood_stick.png b/src/main/resources/assets/natura/textures/items/bloodwood_stick.png similarity index 100% rename from resources/assets/natura/textures/items/bloodwood_stick.png rename to src/main/resources/assets/natura/textures/items/bloodwood_stick.png diff --git a/resources/assets/natura/textures/items/bloodwood_sword.png b/src/main/resources/assets/natura/textures/items/bloodwood_sword.png similarity index 100% rename from resources/assets/natura/textures/items/bloodwood_sword.png rename to src/main/resources/assets/natura/textures/items/bloodwood_sword.png diff --git a/resources/assets/natura/textures/items/cotton_plant.png b/src/main/resources/assets/natura/textures/items/cotton_plant.png similarity index 100% rename from resources/assets/natura/textures/items/cotton_plant.png rename to src/main/resources/assets/natura/textures/items/cotton_plant.png diff --git a/resources/assets/natura/textures/items/cotton_seeds.png b/src/main/resources/assets/natura/textures/items/cotton_seeds.png similarity index 100% rename from resources/assets/natura/textures/items/cotton_seeds.png rename to src/main/resources/assets/natura/textures/items/cotton_seeds.png diff --git a/resources/assets/natura/textures/items/darkwood_bow.png b/src/main/resources/assets/natura/textures/items/darkwood_bow.png similarity index 100% rename from resources/assets/natura/textures/items/darkwood_bow.png rename to src/main/resources/assets/natura/textures/items/darkwood_bow.png diff --git a/resources/assets/natura/textures/items/darkwood_bow_drawn_0.png b/src/main/resources/assets/natura/textures/items/darkwood_bow_drawn_0.png similarity index 100% rename from resources/assets/natura/textures/items/darkwood_bow_drawn_0.png rename to src/main/resources/assets/natura/textures/items/darkwood_bow_drawn_0.png diff --git a/resources/assets/natura/textures/items/darkwood_bow_drawn_1.png b/src/main/resources/assets/natura/textures/items/darkwood_bow_drawn_1.png similarity index 100% rename from resources/assets/natura/textures/items/darkwood_bow_drawn_1.png rename to src/main/resources/assets/natura/textures/items/darkwood_bow_drawn_1.png diff --git a/resources/assets/natura/textures/items/darkwood_bow_drawn_2.png b/src/main/resources/assets/natura/textures/items/darkwood_bow_drawn_2.png similarity index 100% rename from resources/assets/natura/textures/items/darkwood_bow_drawn_2.png rename to src/main/resources/assets/natura/textures/items/darkwood_bow_drawn_2.png diff --git a/resources/assets/natura/textures/items/darkwood_bowl.png b/src/main/resources/assets/natura/textures/items/darkwood_bowl.png similarity index 100% rename from resources/assets/natura/textures/items/darkwood_bowl.png rename to src/main/resources/assets/natura/textures/items/darkwood_bowl.png diff --git a/resources/assets/natura/textures/items/darkwood_hatchet.png b/src/main/resources/assets/natura/textures/items/darkwood_hatchet.png similarity index 100% rename from resources/assets/natura/textures/items/darkwood_hatchet.png rename to src/main/resources/assets/natura/textures/items/darkwood_hatchet.png diff --git a/resources/assets/natura/textures/items/darkwood_kama.png b/src/main/resources/assets/natura/textures/items/darkwood_kama.png similarity index 100% rename from resources/assets/natura/textures/items/darkwood_kama.png rename to src/main/resources/assets/natura/textures/items/darkwood_kama.png diff --git a/resources/assets/natura/textures/items/darkwood_pickaxe.png b/src/main/resources/assets/natura/textures/items/darkwood_pickaxe.png similarity index 100% rename from resources/assets/natura/textures/items/darkwood_pickaxe.png rename to src/main/resources/assets/natura/textures/items/darkwood_pickaxe.png diff --git a/resources/assets/natura/textures/items/darkwood_shovel.png b/src/main/resources/assets/natura/textures/items/darkwood_shovel.png similarity index 100% rename from resources/assets/natura/textures/items/darkwood_shovel.png rename to src/main/resources/assets/natura/textures/items/darkwood_shovel.png diff --git a/resources/assets/natura/textures/items/darkwood_stick.png b/src/main/resources/assets/natura/textures/items/darkwood_stick.png similarity index 100% rename from resources/assets/natura/textures/items/darkwood_stick.png rename to src/main/resources/assets/natura/textures/items/darkwood_stick.png diff --git a/resources/assets/natura/textures/items/darkwood_sword.png b/src/main/resources/assets/natura/textures/items/darkwood_sword.png similarity index 100% rename from resources/assets/natura/textures/items/darkwood_sword.png rename to src/main/resources/assets/natura/textures/items/darkwood_sword.png diff --git a/resources/assets/natura/textures/items/dye_blue.png b/src/main/resources/assets/natura/textures/items/dye_blue.png similarity index 100% rename from resources/assets/natura/textures/items/dye_blue.png rename to src/main/resources/assets/natura/textures/items/dye_blue.png diff --git a/resources/assets/natura/textures/items/eucalyptus_door_item.png b/src/main/resources/assets/natura/textures/items/eucalyptus_door_item.png similarity index 100% rename from resources/assets/natura/textures/items/eucalyptus_door_item.png rename to src/main/resources/assets/natura/textures/items/eucalyptus_door_item.png diff --git a/resources/assets/natura/textures/items/eucalyptus_stick.png b/src/main/resources/assets/natura/textures/items/eucalyptus_stick.png similarity index 100% rename from resources/assets/natura/textures/items/eucalyptus_stick.png rename to src/main/resources/assets/natura/textures/items/eucalyptus_stick.png diff --git a/resources/assets/natura/textures/items/flamestring.png b/src/main/resources/assets/natura/textures/items/flamestring.png similarity index 100% rename from resources/assets/natura/textures/items/flamestring.png rename to src/main/resources/assets/natura/textures/items/flamestring.png diff --git a/resources/assets/natura/textures/items/flint_and_blaze.png b/src/main/resources/assets/natura/textures/items/flint_and_blaze.png similarity index 100% rename from resources/assets/natura/textures/items/flint_and_blaze.png rename to src/main/resources/assets/natura/textures/items/flint_and_blaze.png diff --git a/resources/assets/natura/textures/items/fruit_potashapple.png b/src/main/resources/assets/natura/textures/items/fruit_potashapple.png similarity index 100% rename from resources/assets/natura/textures/items/fruit_potashapple.png rename to src/main/resources/assets/natura/textures/items/fruit_potashapple.png diff --git a/resources/assets/natura/textures/items/fusewood_bow.png b/src/main/resources/assets/natura/textures/items/fusewood_bow.png similarity index 100% rename from resources/assets/natura/textures/items/fusewood_bow.png rename to src/main/resources/assets/natura/textures/items/fusewood_bow.png diff --git a/resources/assets/natura/textures/items/fusewood_bow_drawn_0.png b/src/main/resources/assets/natura/textures/items/fusewood_bow_drawn_0.png similarity index 100% rename from resources/assets/natura/textures/items/fusewood_bow_drawn_0.png rename to src/main/resources/assets/natura/textures/items/fusewood_bow_drawn_0.png diff --git a/resources/assets/natura/textures/items/fusewood_bow_drawn_1.png b/src/main/resources/assets/natura/textures/items/fusewood_bow_drawn_1.png similarity index 100% rename from resources/assets/natura/textures/items/fusewood_bow_drawn_1.png rename to src/main/resources/assets/natura/textures/items/fusewood_bow_drawn_1.png diff --git a/resources/assets/natura/textures/items/fusewood_bow_drawn_2.png b/src/main/resources/assets/natura/textures/items/fusewood_bow_drawn_2.png similarity index 100% rename from resources/assets/natura/textures/items/fusewood_bow_drawn_2.png rename to src/main/resources/assets/natura/textures/items/fusewood_bow_drawn_2.png diff --git a/resources/assets/natura/textures/items/fusewood_bowl.png b/src/main/resources/assets/natura/textures/items/fusewood_bowl.png similarity index 100% rename from resources/assets/natura/textures/items/fusewood_bowl.png rename to src/main/resources/assets/natura/textures/items/fusewood_bowl.png diff --git a/resources/assets/natura/textures/items/fusewood_hatchet.png b/src/main/resources/assets/natura/textures/items/fusewood_hatchet.png similarity index 100% rename from resources/assets/natura/textures/items/fusewood_hatchet.png rename to src/main/resources/assets/natura/textures/items/fusewood_hatchet.png diff --git a/resources/assets/natura/textures/items/fusewood_kama.png b/src/main/resources/assets/natura/textures/items/fusewood_kama.png similarity index 100% rename from resources/assets/natura/textures/items/fusewood_kama.png rename to src/main/resources/assets/natura/textures/items/fusewood_kama.png diff --git a/resources/assets/natura/textures/items/fusewood_pickaxe.png b/src/main/resources/assets/natura/textures/items/fusewood_pickaxe.png similarity index 100% rename from resources/assets/natura/textures/items/fusewood_pickaxe.png rename to src/main/resources/assets/natura/textures/items/fusewood_pickaxe.png diff --git a/resources/assets/natura/textures/items/fusewood_shovel.png b/src/main/resources/assets/natura/textures/items/fusewood_shovel.png similarity index 100% rename from resources/assets/natura/textures/items/fusewood_shovel.png rename to src/main/resources/assets/natura/textures/items/fusewood_shovel.png diff --git a/resources/assets/natura/textures/items/fusewood_stick.png b/src/main/resources/assets/natura/textures/items/fusewood_stick.png similarity index 100% rename from resources/assets/natura/textures/items/fusewood_stick.png rename to src/main/resources/assets/natura/textures/items/fusewood_stick.png diff --git a/resources/assets/natura/textures/items/fusewood_sword.png b/src/main/resources/assets/natura/textures/items/fusewood_sword.png similarity index 100% rename from resources/assets/natura/textures/items/fusewood_sword.png rename to src/main/resources/assets/natura/textures/items/fusewood_sword.png diff --git a/resources/assets/natura/textures/items/ghostwood_bow.png b/src/main/resources/assets/natura/textures/items/ghostwood_bow.png similarity index 100% rename from resources/assets/natura/textures/items/ghostwood_bow.png rename to src/main/resources/assets/natura/textures/items/ghostwood_bow.png diff --git a/resources/assets/natura/textures/items/ghostwood_bow_drawn_0.png b/src/main/resources/assets/natura/textures/items/ghostwood_bow_drawn_0.png similarity index 100% rename from resources/assets/natura/textures/items/ghostwood_bow_drawn_0.png rename to src/main/resources/assets/natura/textures/items/ghostwood_bow_drawn_0.png diff --git a/resources/assets/natura/textures/items/ghostwood_bow_drawn_1.png b/src/main/resources/assets/natura/textures/items/ghostwood_bow_drawn_1.png similarity index 100% rename from resources/assets/natura/textures/items/ghostwood_bow_drawn_1.png rename to src/main/resources/assets/natura/textures/items/ghostwood_bow_drawn_1.png diff --git a/resources/assets/natura/textures/items/ghostwood_bow_drawn_2.png b/src/main/resources/assets/natura/textures/items/ghostwood_bow_drawn_2.png similarity index 100% rename from resources/assets/natura/textures/items/ghostwood_bow_drawn_2.png rename to src/main/resources/assets/natura/textures/items/ghostwood_bow_drawn_2.png diff --git a/resources/assets/natura/textures/items/ghostwood_bowl.png b/src/main/resources/assets/natura/textures/items/ghostwood_bowl.png similarity index 100% rename from resources/assets/natura/textures/items/ghostwood_bowl.png rename to src/main/resources/assets/natura/textures/items/ghostwood_bowl.png diff --git a/resources/assets/natura/textures/items/ghostwood_door_item.png b/src/main/resources/assets/natura/textures/items/ghostwood_door_item.png similarity index 100% rename from resources/assets/natura/textures/items/ghostwood_door_item.png rename to src/main/resources/assets/natura/textures/items/ghostwood_door_item.png diff --git a/resources/assets/natura/textures/items/ghostwood_fletching.png b/src/main/resources/assets/natura/textures/items/ghostwood_fletching.png similarity index 100% rename from resources/assets/natura/textures/items/ghostwood_fletching.png rename to src/main/resources/assets/natura/textures/items/ghostwood_fletching.png diff --git a/resources/assets/natura/textures/items/ghostwood_hatchet.png b/src/main/resources/assets/natura/textures/items/ghostwood_hatchet.png similarity index 100% rename from resources/assets/natura/textures/items/ghostwood_hatchet.png rename to src/main/resources/assets/natura/textures/items/ghostwood_hatchet.png diff --git a/resources/assets/natura/textures/items/ghostwood_kama.png b/src/main/resources/assets/natura/textures/items/ghostwood_kama.png similarity index 100% rename from resources/assets/natura/textures/items/ghostwood_kama.png rename to src/main/resources/assets/natura/textures/items/ghostwood_kama.png diff --git a/resources/assets/natura/textures/items/ghostwood_pickaxe.png b/src/main/resources/assets/natura/textures/items/ghostwood_pickaxe.png similarity index 100% rename from resources/assets/natura/textures/items/ghostwood_pickaxe.png rename to src/main/resources/assets/natura/textures/items/ghostwood_pickaxe.png diff --git a/resources/assets/natura/textures/items/ghostwood_shovel.png b/src/main/resources/assets/natura/textures/items/ghostwood_shovel.png similarity index 100% rename from resources/assets/natura/textures/items/ghostwood_shovel.png rename to src/main/resources/assets/natura/textures/items/ghostwood_shovel.png diff --git a/resources/assets/natura/textures/items/ghostwood_stick.png b/src/main/resources/assets/natura/textures/items/ghostwood_stick.png similarity index 100% rename from resources/assets/natura/textures/items/ghostwood_stick.png rename to src/main/resources/assets/natura/textures/items/ghostwood_stick.png diff --git a/resources/assets/natura/textures/items/ghostwood_sword.png b/src/main/resources/assets/natura/textures/items/ghostwood_sword.png similarity index 100% rename from resources/assets/natura/textures/items/ghostwood_sword.png rename to src/main/resources/assets/natura/textures/items/ghostwood_sword.png diff --git a/resources/assets/natura/textures/items/hopseed_door_item.png b/src/main/resources/assets/natura/textures/items/hopseed_door_item.png similarity index 100% rename from resources/assets/natura/textures/items/hopseed_door_item.png rename to src/main/resources/assets/natura/textures/items/hopseed_door_item.png diff --git a/resources/assets/natura/textures/items/hopseed_stick.png b/src/main/resources/assets/natura/textures/items/hopseed_stick.png similarity index 100% rename from resources/assets/natura/textures/items/hopseed_stick.png rename to src/main/resources/assets/natura/textures/items/hopseed_stick.png diff --git a/resources/assets/natura/textures/items/impmeat_cooked.png b/src/main/resources/assets/natura/textures/items/impmeat_cooked.png similarity index 100% rename from resources/assets/natura/textures/items/impmeat_cooked.png rename to src/main/resources/assets/natura/textures/items/impmeat_cooked.png diff --git a/resources/assets/natura/textures/items/impmeat_raw.png b/src/main/resources/assets/natura/textures/items/impmeat_raw.png similarity index 100% rename from resources/assets/natura/textures/items/impmeat_raw.png rename to src/main/resources/assets/natura/textures/items/impmeat_raw.png diff --git a/resources/assets/natura/textures/items/leather_imp.png b/src/main/resources/assets/natura/textures/items/leather_imp.png similarity index 100% rename from resources/assets/natura/textures/items/leather_imp.png rename to src/main/resources/assets/natura/textures/items/leather_imp.png diff --git a/resources/assets/natura/textures/items/maple_stick.png b/src/main/resources/assets/natura/textures/items/maple_stick.png similarity index 100% rename from resources/assets/natura/textures/items/maple_stick.png rename to src/main/resources/assets/natura/textures/items/maple_stick.png diff --git a/resources/assets/natura/textures/items/netherquartz_hatchet.png b/src/main/resources/assets/natura/textures/items/netherquartz_hatchet.png similarity index 100% rename from resources/assets/natura/textures/items/netherquartz_hatchet.png rename to src/main/resources/assets/natura/textures/items/netherquartz_hatchet.png diff --git a/resources/assets/natura/textures/items/netherquartz_kama.png b/src/main/resources/assets/natura/textures/items/netherquartz_kama.png similarity index 100% rename from resources/assets/natura/textures/items/netherquartz_kama.png rename to src/main/resources/assets/natura/textures/items/netherquartz_kama.png diff --git a/resources/assets/natura/textures/items/netherquartz_pickaxe.png b/src/main/resources/assets/natura/textures/items/netherquartz_pickaxe.png similarity index 100% rename from resources/assets/natura/textures/items/netherquartz_pickaxe.png rename to src/main/resources/assets/natura/textures/items/netherquartz_pickaxe.png diff --git a/resources/assets/natura/textures/items/netherquartz_shovel.png b/src/main/resources/assets/natura/textures/items/netherquartz_shovel.png similarity index 100% rename from resources/assets/natura/textures/items/netherquartz_shovel.png rename to src/main/resources/assets/natura/textures/items/netherquartz_shovel.png diff --git a/resources/assets/natura/textures/items/netherquartz_sword.png b/src/main/resources/assets/natura/textures/items/netherquartz_sword.png similarity index 100% rename from resources/assets/natura/textures/items/netherquartz_sword.png rename to src/main/resources/assets/natura/textures/items/netherquartz_sword.png diff --git a/resources/assets/natura/textures/items/nhopper.png b/src/main/resources/assets/natura/textures/items/nhopper.png similarity index 100% rename from resources/assets/natura/textures/items/nhopper.png rename to src/main/resources/assets/natura/textures/items/nhopper.png diff --git a/resources/assets/natura/textures/items/purpleheart_stick.png b/src/main/resources/assets/natura/textures/items/purpleheart_stick.png similarity index 100% rename from resources/assets/natura/textures/items/purpleheart_stick.png rename to src/main/resources/assets/natura/textures/items/purpleheart_stick.png diff --git a/resources/assets/natura/textures/items/redwood_door_item.png b/src/main/resources/assets/natura/textures/items/redwood_door_item.png similarity index 100% rename from resources/assets/natura/textures/items/redwood_door_item.png rename to src/main/resources/assets/natura/textures/items/redwood_door_item.png diff --git a/resources/assets/natura/textures/items/redwood_stick.png b/src/main/resources/assets/natura/textures/items/redwood_stick.png similarity index 100% rename from resources/assets/natura/textures/items/redwood_stick.png rename to src/main/resources/assets/natura/textures/items/redwood_stick.png diff --git a/resources/assets/natura/textures/items/redwoodbark_door_item.png b/src/main/resources/assets/natura/textures/items/redwoodbark_door_item.png similarity index 100% rename from resources/assets/natura/textures/items/redwoodbark_door_item.png rename to src/main/resources/assets/natura/textures/items/redwoodbark_door_item.png diff --git a/resources/assets/natura/textures/items/saguaro_fruit_item.png b/src/main/resources/assets/natura/textures/items/saguaro_fruit_item.png similarity index 100% rename from resources/assets/natura/textures/items/saguaro_fruit_item.png rename to src/main/resources/assets/natura/textures/items/saguaro_fruit_item.png diff --git a/resources/assets/natura/textures/items/saguaro_seeds.png b/src/main/resources/assets/natura/textures/items/saguaro_seeds.png similarity index 100% rename from resources/assets/natura/textures/items/saguaro_seeds.png rename to src/main/resources/assets/natura/textures/items/saguaro_seeds.png diff --git a/resources/assets/natura/textures/items/sakura_door_item.png b/src/main/resources/assets/natura/textures/items/sakura_door_item.png similarity index 100% rename from resources/assets/natura/textures/items/sakura_door_item.png rename to src/main/resources/assets/natura/textures/items/sakura_door_item.png diff --git a/resources/assets/natura/textures/items/sakura_stick.png b/src/main/resources/assets/natura/textures/items/sakura_stick.png similarity index 100% rename from resources/assets/natura/textures/items/sakura_stick.png rename to src/main/resources/assets/natura/textures/items/sakura_stick.png diff --git a/resources/assets/natura/textures/items/seedbag_barley.png b/src/main/resources/assets/natura/textures/items/seedbag_barley.png similarity index 100% rename from resources/assets/natura/textures/items/seedbag_barley.png rename to src/main/resources/assets/natura/textures/items/seedbag_barley.png diff --git a/resources/assets/natura/textures/items/seedbag_blank.png b/src/main/resources/assets/natura/textures/items/seedbag_blank.png similarity index 100% rename from resources/assets/natura/textures/items/seedbag_blank.png rename to src/main/resources/assets/natura/textures/items/seedbag_blank.png diff --git a/resources/assets/natura/textures/items/seedbag_bone.png b/src/main/resources/assets/natura/textures/items/seedbag_bone.png similarity index 100% rename from resources/assets/natura/textures/items/seedbag_bone.png rename to src/main/resources/assets/natura/textures/items/seedbag_bone.png diff --git a/resources/assets/natura/textures/items/seedbag_carrot.png b/src/main/resources/assets/natura/textures/items/seedbag_carrot.png similarity index 100% rename from resources/assets/natura/textures/items/seedbag_carrot.png rename to src/main/resources/assets/natura/textures/items/seedbag_carrot.png diff --git a/resources/assets/natura/textures/items/seedbag_cotton.png b/src/main/resources/assets/natura/textures/items/seedbag_cotton.png similarity index 100% rename from resources/assets/natura/textures/items/seedbag_cotton.png rename to src/main/resources/assets/natura/textures/items/seedbag_cotton.png diff --git a/resources/assets/natura/textures/items/seedbag_melon.png b/src/main/resources/assets/natura/textures/items/seedbag_melon.png similarity index 100% rename from resources/assets/natura/textures/items/seedbag_melon.png rename to src/main/resources/assets/natura/textures/items/seedbag_melon.png diff --git a/resources/assets/natura/textures/items/seedbag_netherwart.png b/src/main/resources/assets/natura/textures/items/seedbag_netherwart.png similarity index 100% rename from resources/assets/natura/textures/items/seedbag_netherwart.png rename to src/main/resources/assets/natura/textures/items/seedbag_netherwart.png diff --git a/resources/assets/natura/textures/items/seedbag_potato.png b/src/main/resources/assets/natura/textures/items/seedbag_potato.png similarity index 100% rename from resources/assets/natura/textures/items/seedbag_potato.png rename to src/main/resources/assets/natura/textures/items/seedbag_potato.png diff --git a/resources/assets/natura/textures/items/seedbag_pumpkin.png b/src/main/resources/assets/natura/textures/items/seedbag_pumpkin.png similarity index 100% rename from resources/assets/natura/textures/items/seedbag_pumpkin.png rename to src/main/resources/assets/natura/textures/items/seedbag_pumpkin.png diff --git a/resources/assets/natura/textures/items/seedbag_wheat.png b/src/main/resources/assets/natura/textures/items/seedbag_wheat.png similarity index 100% rename from resources/assets/natura/textures/items/seedbag_wheat.png rename to src/main/resources/assets/natura/textures/items/seedbag_wheat.png diff --git a/resources/assets/natura/textures/items/silverbell_stick.png b/src/main/resources/assets/natura/textures/items/silverbell_stick.png similarity index 100% rename from resources/assets/natura/textures/items/silverbell_stick.png rename to src/main/resources/assets/natura/textures/items/silverbell_stick.png diff --git a/resources/assets/natura/textures/items/spruce_stick.png b/src/main/resources/assets/natura/textures/items/spruce_stick.png similarity index 100% rename from resources/assets/natura/textures/items/spruce_stick.png rename to src/main/resources/assets/natura/textures/items/spruce_stick.png diff --git a/resources/assets/natura/textures/items/stew_glowshroom.png b/src/main/resources/assets/natura/textures/items/stew_glowshroom.png similarity index 100% rename from resources/assets/natura/textures/items/stew_glowshroom.png rename to src/main/resources/assets/natura/textures/items/stew_glowshroom.png diff --git a/resources/assets/natura/textures/items/stew_mushroom.png b/src/main/resources/assets/natura/textures/items/stew_mushroom.png similarity index 100% rename from resources/assets/natura/textures/items/stew_mushroom.png rename to src/main/resources/assets/natura/textures/items/stew_mushroom.png diff --git a/resources/assets/natura/textures/items/sulfur.png b/src/main/resources/assets/natura/textures/items/sulfur.png similarity index 100% rename from resources/assets/natura/textures/items/sulfur.png rename to src/main/resources/assets/natura/textures/items/sulfur.png diff --git a/resources/assets/natura/textures/items/tiger_stick.png b/src/main/resources/assets/natura/textures/items/tiger_stick.png similarity index 100% rename from resources/assets/natura/textures/items/tiger_stick.png rename to src/main/resources/assets/natura/textures/items/tiger_stick.png diff --git a/resources/assets/natura/textures/items/waterdrop.png b/src/main/resources/assets/natura/textures/items/waterdrop.png similarity index 100% rename from resources/assets/natura/textures/items/waterdrop.png rename to src/main/resources/assets/natura/textures/items/waterdrop.png diff --git a/resources/assets/natura/textures/items/wheat_flour.png b/src/main/resources/assets/natura/textures/items/wheat_flour.png similarity index 100% rename from resources/assets/natura/textures/items/wheat_flour.png rename to src/main/resources/assets/natura/textures/items/wheat_flour.png diff --git a/resources/assets/natura/textures/items/willow_stick.png b/src/main/resources/assets/natura/textures/items/willow_stick.png similarity index 100% rename from resources/assets/natura/textures/items/willow_stick.png rename to src/main/resources/assets/natura/textures/items/willow_stick.png diff --git a/resources/assets/natura/textures/misc/bluegrasscolor.png b/src/main/resources/assets/natura/textures/misc/bluegrasscolor.png similarity index 100% rename from resources/assets/natura/textures/misc/bluegrasscolor.png rename to src/main/resources/assets/natura/textures/misc/bluegrasscolor.png diff --git a/resources/assets/natura/textures/misc/orangegrasscolor.png b/src/main/resources/assets/natura/textures/misc/orangegrasscolor.png similarity index 100% rename from resources/assets/natura/textures/misc/orangegrasscolor.png rename to src/main/resources/assets/natura/textures/misc/orangegrasscolor.png diff --git a/resources/assets/natura/textures/mob/creeperunstable.png b/src/main/resources/assets/natura/textures/mob/creeperunstable.png similarity index 100% rename from resources/assets/natura/textures/mob/creeperunstable.png rename to src/main/resources/assets/natura/textures/mob/creeperunstable.png diff --git a/resources/assets/natura/textures/mob/flamespider.png b/src/main/resources/assets/natura/textures/mob/flamespider.png similarity index 100% rename from resources/assets/natura/textures/mob/flamespider.png rename to src/main/resources/assets/natura/textures/mob/flamespider.png diff --git a/resources/assets/natura/textures/mob/imp.png b/src/main/resources/assets/natura/textures/mob/imp.png similarity index 100% rename from resources/assets/natura/textures/mob/imp.png rename to src/main/resources/assets/natura/textures/mob/imp.png diff --git a/resources/mcmod.info b/src/main/resources/mcmod.info similarity index 73% rename from resources/mcmod.info rename to src/main/resources/mcmod.info index 9f06ca54..d4b62b48 100644 --- a/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -1,10 +1,10 @@ [ { - "modid": "Natura", - "name": "Natura", + "modid": "${modId}", + "name": "${modName}", "description": "Heyo, Redwood trees! Chop them all day long!", - "version": "${version}", - "mcversion": "${mcversion}", + "version": "${modVersion}", + "mcversion": "${minecraftVersion}", "url": "www.minecraftforum.net/topic/1753754-natura/", "updateUrl": "", "authors": [ diff --git a/resources/pack.mcmeta b/src/main/resources/pack.mcmeta similarity index 100% rename from resources/pack.mcmeta rename to src/main/resources/pack.mcmeta