diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml new file mode 100644 index 000000000..f4e30c1d0 --- /dev/null +++ b/.github/workflows/pull-request.yml @@ -0,0 +1,32 @@ +# 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 pull request + +on: + pull_request: + branches: [ master, main ] + +jobs: + build: + 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 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..6a64794b3 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,41 @@ +# 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 release main branch + +on: + push: + branches: [ master, main ] + +jobs: + build: + 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 + + - uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "latest" + prerelease: true + title: "Latest Development Build" + files: build/libs/*.jar + diff --git a/.gitignore b/.gitignore index 157dad606..558ad12d2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,28 @@ -./build/ -NotEnoughItems.iml -NotEnoughItems.ipr -NotEnoughItems.iws -*.ipr -*.iml -*.iws -.idea/** -run/* -.gradle/ - -*.bat +.gradle +.settings +/.idea/ +/run/ +/build/ +/eclipse/ .classpath .project -.settings/** \ No newline at end of file +/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 ffe69a3db..910ddbcaa 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,30 @@ +//version: eb0b030ab9cb1d0f9a31f11e69e1ceed1dab2c89 +/* +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 { - mavenCentral() - jcenter() maven { - name = "gt" - url = "https://gregtech.overminddl1.com/" + name = "forge" + url = "https://maven.minecraftforge.net" } maven { - name = "forge" - url = "http://files.minecraftforge.net/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" @@ -16,26 +32,28 @@ buildscript { } } dependencies { - classpath "com.github.GTNH2:ForgeGradle:FG_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") } -//add dependency repositories -repositories { - maven { - name = "chickenbones" - url = "http://chickenbones.net/maven" - } -} - -apply plugin: "java" -apply plugin: "idea" apply plugin: 'forge' +def projectJavaVersion = JavaLanguageVersion.of(8) + +java { + toolchain { + languageVersion.set(projectJavaVersion) + } +} + idea { module { inheritOutputDirs = true @@ -44,121 +62,444 @@ idea { } } -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 +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") + } } -group = "codechicken" -archivesBaseName = "NotEnoughItems" -// Define properties file -ext.configFile = file "build.properties" +String javaSourceDir = "src/main/java/" +String scalaSourceDir = "src/main/scala/" -configFile.withReader { - // Load config. It shall from now be referenced as simply config or project.config - def prop = new Properties() - prop.load(it) - project.ext.config = new ConfigSlurper().parse prop +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) } -// -//configurations.all { -// resolutionStrategy.cacheChangingModulesFor(0, TimeUnit.SECONDS) -// setTransitive(false) -//} -configurations { - shade - compile.extendsFrom shade +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) + } } -dependencies { - compile "codechicken:CodeChickenLib:${config.mc_version}-${config.ccl_version}:dev" - compile "codechicken:CodeChickenCore:${config.mc_version}-${config.ccc_version}:dev" - shade "org.apache.commons:commons-csv:1.5" +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) + } +} + +if(usesMixins.toBoolean()) { + if(mixinsPackage.isEmpty() || mixinPlugin.isEmpty()) { + throw new GradleException("\"mixinPlugin\" requires \"mixinsPackage\" and \"mixinPlugin\" to be set!") + } + + 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) + } + + 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) + } } +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) + } +} + +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) +} -version = "${project.config.mod_version}" +// 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 -println config.mc_version + "-" + config.forge_version -// Setup the forge minecraft plugin data. Specify the preferred forge/minecraft version here minecraft { - version = config.mc_version + "-" + config.forge_version + 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) } -def root = project.projectDir; -sourceSets { - main { - java { - srcDir new File(root, "src") +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" } - resources { - srcDir new File(root, "resources") + } +} + +dependencies { + 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") } } -processResources { - //redo task if any of these properties change - inputs.property "version", project.version - inputs.property "mc_version", config.mc_version +apply from: 'dependencies.gradle' + +def mixinConfigJson = "mixins." + modId + ".json" +def mixingConfigRefMap = "mixins." + modId + ".refmap.json" +def refMap = "${tasks.compileJava.temporaryDir}" + File.separator + mixingConfigRefMap +def mixinSrg = "${tasks.reobf.temporaryDir}" + File.separator + "mixins.srg" - // Replace properties in info files - from(sourceSets.main.resources.srcDirs) { - include '*.info' - expand 'version':project.version,'mc_version':config.mc_version +task generateAssets { + if(usesMixins.toBoolean()) { + new File(projectDir.toString() + "/src/main/resources/", mixinConfigJson).text = """{ + "required": true, + "minVersion": "0.7.11", + "package": "${modGroup}.${mixinsPackage}", + "plugin": "${modGroup}.${mixinPlugin}", + "refmap": "${mixingConfigRefMap}", + "target": "@env(DEFAULT)", + "compatibilityLevel": "JAVA_8" +} + +""" } +} - // Move access transformer to META-INF - rename '(.+_at.cfg)', 'META-INF/$1' -// -// // copy everything else, that's not the mcmod.info -// from(sourceSets.main.resources.srcDirs) { -// exclude "mcmod.info" -// } +task relocateShadowJar(type: ConfigureShadowRelocation) { + target = tasks.shadowJar + prefix = modGroup + ".shadow" } -version = "${project.minecraft.version}-${project.version}" -def commonManifest = { - attributes 'FMLCorePlugin': 'codechicken.nei.asm.NEICorePlugin' - attributes 'FMLAT': 'nei_at.cfg' +shadowJar { + manifest { + attributes(getManifestAttributes()) + } + + minimize() // This will only allow shading for actually used classes + configurations = [project.configurations.shadowImplementation] + dependsOn(relocateShadowJar) } jar { - getArchiveClassifier().set("universal") - manifest commonManifest - configurations.shade.each { dep -> - from(project.zipTree(dep)){ - exclude 'META-INF', 'META-INF/**' + 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" + ] } } } -task sourceJar(type: Jar) { - from sourceSets.main.java - from new File(root, "dev") - getArchiveClassifier().set("src") +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 + { + // 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 + } + + // copy everything else, thats not the mcmod.info + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } + } + +def getManifestAttributes() { + def manifestAttributes = [:] + if(containsMixinsAndOrCoreModOnly.toBoolean() == false) { + manifestAttributes += ["FMLCorePluginContainsFMLMod": true] + } + + if(accessTransformersFile) { + manifestAttributes += ["FMLAT" : accessTransformersFile.toString()] + } + + if(coreModClass) { + manifestAttributes += ["FMLCorePlugin": modGroup + "." + coreModClass] + } + + if(usesMixins.toBoolean()) { + manifestAttributes += [ + "TweakClass" : "org.spongepowered.asm.launch.MixinTweaker", + "MixinConfigs" : mixinConfigJson, + "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 } task devJar(type: Jar) { from sourceSets.main.output getArchiveClassifier().set("dev") - manifest commonManifest - configurations.shade.each { dep -> - from(project.zipTree(dep)){ - exclude 'META-INF', 'META-INF/**' - } + manifest { + attributes(getManifestAttributes()) + } + + if(usesShadowedDependencies.toBoolean()) { + dependsOn(circularResolverJar) + enabled = false + } +} + +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') } -// Tell the artifact system about our extra jars artifacts { - archives sourceJar, devJar + archives sourcesJar + archives devJar + if(apiPackage) { + archives apiJar + } } -minecraft { - srgExtra "PK: org/apache/commons/csv nei/org/apache/commons/csv" - srgExtra "PK: org/apache/commons/csv/CSVFormat nei/org/apache/commons/csv/CSVFormat" -} \ No newline at end of file +// 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 166aa75f7..000000000 --- a/build.properties +++ /dev/null @@ -1,5 +0,0 @@ -mc_version=1.7.10 -forge_version=10.13.4.1614-1.7.10 -ccl_version=1.1.3.138 -ccc_version=1.0.7.+ -mod_version=2.1.15-GTNH diff --git a/dependencies.gradle b/dependencies.gradle new file mode 100644 index 000000000..429a8dc6a --- /dev/null +++ b/dependencies.gradle @@ -0,0 +1,7 @@ +// Add your dependencies here + +dependencies { + compile("com.github.GTNewHorizons:CodeChickenLib:master-SNAPSHOT:dev") + compile("com.github.GTNewHorizons:CodeChickenCore:master-SNAPSHOT:dev") + shadowImplementation("org.apache.commons:commons-csv:1.5") +} diff --git a/dev/net/minecraft/client/gui/inventory/GuiContainer.java b/dev/net/minecraft/client/gui/inventory/GuiContainer.java deleted file mode 100644 index a93787362..000000000 --- a/dev/net/minecraft/client/gui/inventory/GuiContainer.java +++ /dev/null @@ -1,808 +0,0 @@ -package net.minecraft.client.gui.inventory; - -import codechicken.nei.guihook.GuiContainerManager; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; -import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -@SideOnly(Side.CLIENT) -public abstract class GuiContainer extends GuiScreen -{ - protected static final ResourceLocation field_147001_a = new ResourceLocation("textures/gui/container/inventory.png"); - /** The X size of the inventory window in pixels. */ - public int xSize = 176; - /** The Y size of the inventory window in pixels. */ - public int ySize = 166; - /** A list of the players inventory slots */ - public Container inventorySlots; - /** - * Starting X position for the Gui. Inconsistent use for Gui backgrounds. - */ - public int guiLeft; - /** - * Starting Y position for the Gui. Inconsistent use for Gui backgrounds. - */ - public int guiTop; - private Slot theSlot; - /** Used when touchscreen is enabled. */ - private Slot clickedSlot; - /** Used when touchscreen is enabled. */ - private boolean isRightMouseClick; - /** Used when touchscreen is enabled */ - private ItemStack draggedStack; - private int field_147011_y; - private int field_147010_z; - private Slot returningStackDestSlot; - private long returningStackTime; - /** Used when touchscreen is enabled */ - private ItemStack returningStack; - private Slot field_146985_D; - private long field_146986_E; - protected final Set field_147008_s = new HashSet(); - protected boolean field_147007_t; - private int field_146987_F; - private int field_146988_G; - private boolean field_146995_H; - private int field_146996_I; - private long field_146997_J; - private Slot field_146998_K; - private int field_146992_L; - private boolean field_146993_M; - private ItemStack field_146994_N; - private static final String __OBFID = "CL_00000737"; - - public GuiContainerManager manager; - - public GuiContainer(Container par1Container) - { - this.inventorySlots = par1Container; - this.field_146995_H = true; - } - - /** - * Adds the buttons (and other controls) to the screen in question. - */ - public void initGui() - { - super.initGui(); - this.mc.thePlayer.openContainer = this.inventorySlots; - this.guiLeft = (this.width - this.xSize) / 2; - this.guiTop = (this.height - this.ySize) / 2; - } - - /** - * Draws the screen and all the components in it. - */ - public void drawScreen(int par1, int par2, float par3) - { - manager.preDraw(); - - this.drawDefaultBackground(); - int k = this.guiLeft; - int l = this.guiTop; - this.drawGuiContainerBackgroundLayer(par3, par1, par2); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - RenderHelper.disableStandardItemLighting(); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); - super.drawScreen(par1, par2, par3); - RenderHelper.enableGUIStandardItemLighting(); - GL11.glPushMatrix(); - GL11.glTranslatef((float)k, (float)l, 0.0F); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - this.theSlot = null; - short short1 = 240; - short short2 = 240; - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)short1 / 1.0F, (float)short2 / 1.0F); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - int k1; - - for (int i1 = 0; i1 < this.inventorySlots.inventorySlots.size(); ++i1) - { - Slot slot = (Slot)this.inventorySlots.inventorySlots.get(i1); - this.func_146977_a(slot); - - if (this.isMouseOverSlot(slot, par1, par2) && slot.func_111238_b() && !manager.objectUnderMouse(par1, par2)) - { - this.theSlot = slot; - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); - int j1 = slot.xDisplayPosition; - k1 = slot.yDisplayPosition; - GL11.glColorMask(true, true, true, false); - this.drawGradientRect(j1, k1, j1 + 16, k1 + 16, -2130706433, -2130706433); - GL11.glColorMask(true, true, true, true); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_DEPTH_TEST); - } - } - - //Forge: Force lighting to be disabled as there are some issue where lighting would - //incorrectly be applied based on items that are in the inventory. - GL11.glDisable(GL11.GL_LIGHTING); - this.drawGuiContainerForegroundLayer(par1, par2); - GL11.glEnable(GL11.GL_LIGHTING); - - manager.renderObjects(par1, par2); - - InventoryPlayer inventoryplayer = this.mc.thePlayer.inventory; - ItemStack itemstack = this.draggedStack == null ? inventoryplayer.getItemStack() : this.draggedStack; - - if (itemstack != null) - { - byte b0 = 8; - k1 = this.draggedStack == null ? 8 : 16; - String s = null; - - if (this.draggedStack != null && this.isRightMouseClick) - { - itemstack = itemstack.copy(); - itemstack.stackSize = MathHelper.ceiling_float_int((float)itemstack.stackSize / 2.0F); - } - else if (this.field_147007_t && this.field_147008_s.size() > 1) - { - itemstack = itemstack.copy(); - itemstack.stackSize = this.field_146996_I; - - if (itemstack.stackSize == 0) - { - s = "" + EnumChatFormatting.YELLOW + "0"; - } - } - - this.drawItemStack(itemstack, par1 - k - b0, par2 - l - k1, s); - } - - if (this.returningStack != null) - { - float f1 = (float)(Minecraft.getSystemTime() - this.returningStackTime) / 100.0F; - - if (f1 >= 1.0F) - { - f1 = 1.0F; - this.returningStack = null; - } - - k1 = this.returningStackDestSlot.xDisplayPosition - this.field_147011_y; - int j2 = this.returningStackDestSlot.yDisplayPosition - this.field_147010_z; - int l1 = this.field_147011_y + (int)((float)k1 * f1); - int i2 = this.field_147010_z + (int)((float)j2 * f1); - this.drawItemStack(this.returningStack, l1, i2, (String)null); - } - - GL11.glPopMatrix(); - /* - if (inventoryplayer.getItemStack() == null && this.theSlot != null && this.theSlot.getHasStack()) - { - ItemStack itemstack1 = this.theSlot.getStack(); - this.renderToolTip(itemstack1, par1, par2); - } - */ - manager.renderToolTips(par1, par2); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_DEPTH_TEST); - RenderHelper.enableStandardItemLighting(); - } - - private void drawItemStack(ItemStack p_146982_1_, int p_146982_2_, int p_146982_3_, String p_146982_4_) - { - GL11.glTranslatef(0.0F, 0.0F, 32.0F); - this.zLevel = 500.0F; - itemRender.zLevel = 500.0F; - FontRenderer font = null; - if (p_146982_1_ != null) font = p_146982_1_.getItem().getFontRenderer(p_146982_1_); - if (font == null) font = fontRendererObj; - itemRender.renderItemAndEffectIntoGUI(font, this.mc.getTextureManager(), p_146982_1_, p_146982_2_, p_146982_3_); - itemRender.renderItemOverlayIntoGUI(font, this.mc.getTextureManager(), p_146982_1_, p_146982_2_, p_146982_3_ - (this.draggedStack == null ? 0 : 8), p_146982_4_); - this.zLevel = 0.0F; - itemRender.zLevel = 0.0F; - } - - /** - * Draw the foreground layer for the GuiContainer (everything in front of the items) - */ - protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_) {} - - protected abstract void drawGuiContainerBackgroundLayer(float var1, int var2, int var3); - - private void func_146977_a(Slot p_146977_1_) - { - int i = p_146977_1_.xDisplayPosition; - int j = p_146977_1_.yDisplayPosition; - ItemStack itemstack = p_146977_1_.getStack(); - boolean flag = false; - boolean flag1 = p_146977_1_ == this.clickedSlot && this.draggedStack != null && !this.isRightMouseClick; - ItemStack itemstack1 = this.mc.thePlayer.inventory.getItemStack(); - String s = null; - - if (p_146977_1_ == this.clickedSlot && this.draggedStack != null && this.isRightMouseClick && itemstack != null) - { - itemstack = itemstack.copy(); - itemstack.stackSize /= 2; - } - else if (this.field_147007_t && this.field_147008_s.contains(p_146977_1_) && itemstack1 != null) - { - if (this.field_147008_s.size() == 1) - { - return; - } - - if (Container.func_94527_a(p_146977_1_, itemstack1, true) && this.inventorySlots.canDragIntoSlot(p_146977_1_)) - { - itemstack = itemstack1.copy(); - flag = true; - Container.func_94525_a(this.field_147008_s, this.field_146987_F, itemstack, p_146977_1_.getStack() == null ? 0 : p_146977_1_.getStack().stackSize); - - if (itemstack.stackSize > itemstack.getMaxStackSize()) - { - s = EnumChatFormatting.YELLOW + "" + itemstack.getMaxStackSize(); - itemstack.stackSize = itemstack.getMaxStackSize(); - } - - if (itemstack.stackSize > p_146977_1_.getSlotStackLimit()) - { - s = EnumChatFormatting.YELLOW + "" + p_146977_1_.getSlotStackLimit(); - itemstack.stackSize = p_146977_1_.getSlotStackLimit(); - } - } - else - { - this.field_147008_s.remove(p_146977_1_); - this.func_146980_g(); - } - } - - this.zLevel = 100.0F; - itemRender.zLevel = 100.0F; - - if (itemstack == null) - { - IIcon iicon = p_146977_1_.getBackgroundIconIndex(); - - if (iicon != null) - { - GL11.glDisable(GL11.GL_LIGHTING); - this.mc.getTextureManager().bindTexture(TextureMap.locationItemsTexture); - this.drawTexturedModelRectFromIcon(i, j, iicon, 16, 16); - GL11.glEnable(GL11.GL_LIGHTING); - flag1 = true; - } - } - - if (!flag1) - { - if (flag) - { - drawRect(i, j, i + 16, j + 16, -2130706433); - } - - GL11.glEnable(GL11.GL_DEPTH_TEST); - manager.renderSlotUnderlay(p_146977_1_); - manager.drawSlotItem(p_146977_1_, itemstack, i, j, s); - manager.renderSlotOverlay(p_146977_1_); - } - - itemRender.zLevel = 0.0F; - this.zLevel = 0.0F; - } - - private void func_146980_g() - { - ItemStack itemstack = this.mc.thePlayer.inventory.getItemStack(); - - if (itemstack != null && this.field_147007_t) - { - this.field_146996_I = itemstack.stackSize; - ItemStack itemstack1; - int i; - - for (Iterator iterator = this.field_147008_s.iterator(); iterator.hasNext(); this.field_146996_I -= itemstack1.stackSize - i) - { - Slot slot = (Slot)iterator.next(); - itemstack1 = itemstack.copy(); - i = slot.getStack() == null ? 0 : slot.getStack().stackSize; - Container.func_94525_a(this.field_147008_s, this.field_146987_F, itemstack1, i); - - if (itemstack1.stackSize > itemstack1.getMaxStackSize()) - { - itemstack1.stackSize = itemstack1.getMaxStackSize(); - } - - if (itemstack1.stackSize > slot.getSlotStackLimit()) - { - itemstack1.stackSize = slot.getSlotStackLimit(); - } - } - } - } - - /** - * Returns the slot at the given coordinates or null if there is none. - */ - public Slot getSlotAtPosition(int p_146975_1_, int p_146975_2_) - { - for (int k = 0; k < this.inventorySlots.inventorySlots.size(); ++k) - { - Slot slot = (Slot)this.inventorySlots.inventorySlots.get(k); - - if (this.isMouseOverSlot(slot, p_146975_1_, p_146975_2_)) - { - return slot; - } - } - - return null; - } - - /** - * Called when the mouse is clicked. - */ - protected void mouseClicked(int par1, int par2, int par3) - { - if (manager.mouseClicked(par1, par2, par3)) - return; - - super.mouseClicked(par1, par2, par3); - - boolean flag = par3 == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100; - Slot slot = this.getSlotAtPosition(par1, par2); - long l = Minecraft.getSystemTime(); - this.field_146993_M = this.field_146998_K == slot && l - this.field_146997_J < 250L && this.field_146992_L == par3; - this.field_146995_H = false; - - if (par3 == 0 || par3 == 1 || flag) - { - int i1 = this.guiLeft; - int j1 = this.guiTop; - boolean flag1 = par1 < i1 || par2 < j1 || par1 >= i1 + this.xSize || par2 >= j1 + this.ySize; - int k1 = -1; - - if (slot != null) - { - k1 = slot.slotNumber; - } - - if (flag1) - { - k1 = -999; - } - - if (this.mc.gameSettings.touchscreen && flag1 && this.mc.thePlayer.inventory.getItemStack() == null) - { - this.mc.displayGuiScreen((GuiScreen)null); - return; - } - - if (k1 != -1) - { - if (this.mc.gameSettings.touchscreen) - { - if (slot != null && slot.getHasStack()) - { - this.clickedSlot = slot; - this.draggedStack = null; - this.isRightMouseClick = par3 == 1; - } - else - { - this.clickedSlot = null; - } - } - else if (!this.field_147007_t) - { - if (this.mc.thePlayer.inventory.getItemStack() == null) - { - if (par3 == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100) - { - managerHandleMouseClick(slot, k1, par3, 3); - } - else - { - boolean flag2 = k1 != -999 && (Keyboard.isKeyDown(42) || Keyboard.isKeyDown(54)); - byte b0 = 0; - - if (flag2) - { - this.field_146994_N = slot != null && slot.getHasStack() ? slot.getStack() : null; - b0 = 1; - } - else if (k1 == -999) - { - b0 = 4; - } - - managerHandleMouseClick(slot, k1, par3, b0); - } - - this.field_146995_H = true; - } - else - { - this.field_147007_t = true; - this.field_146988_G = par3; - this.field_147008_s.clear(); - - if (par3 == 0) - { - this.field_146987_F = 0; - } - else if (par3 == 1) - { - this.field_146987_F = 1; - } - } - } - } - } - - this.field_146998_K = slot; - this.field_146997_J = l; - this.field_146992_L = par3; - } - - /** - * Called when a mouse button is pressed and the mouse is moved around. Parameters are : mouseX, mouseY, - * lastButtonClicked & timeSinceMouseClick. - */ - protected void mouseClickMove(int p_146273_1_, int p_146273_2_, int p_146273_3_, long p_146273_4_) - { - Slot slot = this.getSlotAtPosition(p_146273_1_, p_146273_2_); - ItemStack itemstack = this.mc.thePlayer.inventory.getItemStack(); - - manager.mouseDragged(p_146273_1_, p_146273_2_, p_146273_3_, p_146273_4_); - - if (this.clickedSlot != null && this.mc.gameSettings.touchscreen) - { - if (p_146273_3_ == 0 || p_146273_3_ == 1) - { - if (this.draggedStack == null) - { - if (slot != this.clickedSlot) - { - this.draggedStack = this.clickedSlot.getStack().copy(); - } - } - else if (this.draggedStack.stackSize > 1 && slot != null && Container.func_94527_a(slot, this.draggedStack, false)) - { - long i1 = Minecraft.getSystemTime(); - - if (this.field_146985_D == slot) - { - if (i1 - this.field_146986_E > 500L) - { - managerHandleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, 0, 0); - managerHandleMouseClick(slot, slot.slotNumber, 1, 0); - managerHandleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, 0, 0); - this.field_146986_E = i1 + 750L; - --this.draggedStack.stackSize; - } - } - else - { - this.field_146985_D = slot; - this.field_146986_E = i1; - } - } - } - } - else if (this.field_147007_t && slot != null && itemstack != null && itemstack.stackSize > this.field_147008_s.size() && Container.func_94527_a(slot, itemstack, true) && slot.isItemValid(itemstack) && this.inventorySlots.canDragIntoSlot(slot)) - { - this.field_147008_s.add(slot); - this.func_146980_g(); - } - } - - /** - * Called when the mouse is moved or a mouse button is released. Signature: (mouseX, mouseY, which) which==-1 is - * mouseMove, which==0 or which==1 is mouseUp - */ - protected void mouseMovedOrUp(int p_146286_1_, int p_146286_2_, int p_146286_3_) - { - if(manager.overrideMouseUp(p_146286_1_, p_146286_2_, p_146286_3_)) - return; - - Slot slot = this.getSlotAtPosition(p_146286_1_, p_146286_2_); - int l = this.guiLeft; - int i1 = this.guiTop; - boolean flag = p_146286_1_ < l || p_146286_2_ < i1 || p_146286_1_ >= l + this.xSize || p_146286_2_ >= i1 + this.ySize; - int j1 = -1; - - if (slot != null) - { - j1 = slot.slotNumber; - } - - if (flag) - { - j1 = -999; - } - - Slot slot1; - Iterator iterator; - - if (this.field_146993_M && slot != null && p_146286_3_ == 0 && this.inventorySlots.func_94530_a((ItemStack)null, slot)) - { - if (isShiftKeyDown()) - { - if (slot != null && slot.inventory != null && this.field_146994_N != null) - { - iterator = this.inventorySlots.inventorySlots.iterator(); - - while (iterator.hasNext()) - { - slot1 = (Slot)iterator.next(); - - if (slot1 != null && slot1.canTakeStack(this.mc.thePlayer) && slot1.getHasStack() && slot1.inventory == slot.inventory && Container.func_94527_a(slot1, this.field_146994_N, true)) - { - managerHandleMouseClick(slot1, slot1.slotNumber, p_146286_3_, 1); - } - } - } - } - else - { - managerHandleMouseClick(slot, j1, p_146286_3_, 6); - } - - this.field_146993_M = false; - this.field_146997_J = 0L; - } - else - { - if (this.field_147007_t && this.field_146988_G != p_146286_3_) - { - this.field_147007_t = false; - this.field_147008_s.clear(); - this.field_146995_H = true; - return; - } - - if (this.field_146995_H) - { - this.field_146995_H = false; - return; - } - - boolean flag1; - - if (this.clickedSlot != null && this.mc.gameSettings.touchscreen) - { - if (p_146286_3_ == 0 || p_146286_3_ == 1) - { - if (this.draggedStack == null && slot != this.clickedSlot) - { - this.draggedStack = this.clickedSlot.getStack(); - } - - flag1 = Container.func_94527_a(slot, this.draggedStack, false); - - if (j1 != -1 && this.draggedStack != null && flag1) - { - managerHandleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, p_146286_3_, 0); - managerHandleMouseClick(slot, j1, 0, 0); - - if (this.mc.thePlayer.inventory.getItemStack() != null) - { - managerHandleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, p_146286_3_, 0); - this.field_147011_y = p_146286_1_ - l; - this.field_147010_z = p_146286_2_ - i1; - this.returningStackDestSlot = this.clickedSlot; - this.returningStack = this.draggedStack; - this.returningStackTime = Minecraft.getSystemTime(); - } - else - { - this.returningStack = null; - } - } - else if (this.draggedStack != null) - { - this.field_147011_y = p_146286_1_ - l; - this.field_147010_z = p_146286_2_ - i1; - this.returningStackDestSlot = this.clickedSlot; - this.returningStack = this.draggedStack; - this.returningStackTime = Minecraft.getSystemTime(); - } - - this.draggedStack = null; - this.clickedSlot = null; - } - } - else if (this.field_147007_t && !this.field_147008_s.isEmpty()) - { - managerHandleMouseClick((Slot)null, -999, Container.func_94534_d(0, this.field_146987_F), 5); - iterator = this.field_147008_s.iterator(); - - while (iterator.hasNext()) - { - slot1 = (Slot)iterator.next(); - managerHandleMouseClick(slot1, slot1.slotNumber, Container.func_94534_d(1, this.field_146987_F), 5); - } - - managerHandleMouseClick((Slot)null, -999, Container.func_94534_d(2, this.field_146987_F), 5); - } - else if (this.mc.thePlayer.inventory.getItemStack() != null) - { - if (p_146286_3_ == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100) - { - managerHandleMouseClick(slot, j1, p_146286_3_, 3); - } - else - { - flag1 = j1 != -999 && (Keyboard.isKeyDown(42) || Keyboard.isKeyDown(54)); - - if (flag1) - { - this.field_146994_N = slot != null && slot.getHasStack() ? slot.getStack() : null; - } - - managerHandleMouseClick(slot, j1, p_146286_3_, flag1 ? 1 : 0); - } - } - else if(p_146286_3_ >= 0) - manager.mouseUp(p_146286_1_, p_146286_2_, p_146286_3_); - } - - if (this.mc.thePlayer.inventory.getItemStack() == null) - { - this.field_146997_J = 0L; - } - - this.field_147007_t = false; - } - - /** - * Returns if the passed mouse position is over the specified slot. - */ - private boolean isMouseOverSlot(Slot p_146981_1_, int p_146981_2_, int p_146981_3_) - { - return this.func_146978_c(p_146981_1_.xDisplayPosition, p_146981_1_.yDisplayPosition, 16, 16, p_146981_2_, p_146981_3_); - } - - protected boolean func_146978_c(int p_146978_1_, int p_146978_2_, int p_146978_3_, int p_146978_4_, int p_146978_5_, int p_146978_6_) - { - int k1 = this.guiLeft; - int l1 = this.guiTop; - p_146978_5_ -= k1; - p_146978_6_ -= l1; - return p_146978_5_ >= p_146978_1_ - 1 && p_146978_5_ < p_146978_1_ + p_146978_3_ + 1 && p_146978_6_ >= p_146978_2_ - 1 && p_146978_6_ < p_146978_2_ + p_146978_4_ + 1; - } - - protected void handleMouseClick(Slot p_146984_1_, int p_146984_2_, int p_146984_3_, int p_146984_4_) - { - if (p_146984_1_ != null) - { - p_146984_2_ = p_146984_1_.slotNumber; - } - - manager.handleSlotClick(p_146984_2_, p_146984_3_, p_146984_4_); - } - - /** - * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e). - */ - protected void keyTyped(char par1, int par2) - { - if(manager.lastKeyTyped(par2, par1)) - return; - - if (par2 == 1 || par2 == this.mc.gameSettings.keyBindInventory.getKeyCode()) - { - this.mc.thePlayer.closeScreen(); - } - - this.checkHotbarKeys(par2); - - if (this.theSlot != null && this.theSlot.getHasStack()) - { - if (par2 == this.mc.gameSettings.keyBindPickBlock.getKeyCode()) - { - managerHandleMouseClick(this.theSlot, this.theSlot.slotNumber, 0, 3); - } - else if (par2 == this.mc.gameSettings.keyBindDrop.getKeyCode()) - { - managerHandleMouseClick(this.theSlot, this.theSlot.slotNumber, isCtrlKeyDown() ? 1 : 0, 4); - } - } - } - - /** - * This function is what controls the hotbar shortcut check when you press a number key when hovering a stack. - */ - protected boolean checkHotbarKeys(int p_146983_1_) - { - if (this.mc.thePlayer.inventory.getItemStack() == null && this.theSlot != null) - { - for (int j = 0; j < 9; ++j) - { - if (p_146983_1_ == this.mc.gameSettings.keyBindsHotbar[j].getKeyCode()) - { - managerHandleMouseClick(this.theSlot, this.theSlot.slotNumber, j, 2); - return true; - } - } - } - - return false; - } - - /** - * Called when the screen is unloaded. Used to disable keyboard repeat events - */ - public void onGuiClosed() - { - if (this.mc.thePlayer != null) - { - this.inventorySlots.onContainerClosed(this.mc.thePlayer); - } - } - - /** - * Returns true if this GUI should pause the game when it is displayed in single-player - */ - public boolean doesGuiPauseGame() - { - return false; - } - - /** - * Called from the main game loop to update the screen. - */ - public void updateScreen() - { - super.updateScreen(); - manager.updateScreen(); - - if (!this.mc.thePlayer.isEntityAlive() || this.mc.thePlayer.isDead) - { - this.mc.thePlayer.closeScreen(); - } - } - - public void setWorldAndResolution(Minecraft mc, int i, int j) - { - super.setWorldAndResolution(mc, i, j); - if(mc.currentScreen == this) - { - manager = new GuiContainerManager(this); - manager.load(); - } - } - - public void handleKeyboardInput() - { - manager.handleKeyboardInput(); - } - - public void handleMouseInput() - { - super.handleMouseInput(); - manager.handleMouseWheel(); - } - - public void managerHandleMouseClick(Slot slot, int slotIndex, int button, int modifiers) - { - manager.handleMouseClick(slot, slotIndex, button, modifiers); - } -} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 000000000..ccea1d597 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,60 @@ +modName = NotEnoughItems + +# This is a case-sensitive string to identify your mod. Convention is to use lower case. +modId = NotEnoughItems + +modGroup = codechicken.nei + +# 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 = NEIModContainer.java +gradleTokenModId = GRADLETOKEN_MODID +gradleTokenModName = GRADLETOKEN_MODNAME +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 = nei_at.cfg + +# 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 IMixinPlugin. 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 = asm.NEICorePlugin +# 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 = true + +# 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 = true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5028f28f8..3ab0b725e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/jitpack.yml b/jitpack.yml new file mode 100644 index 000000000..09bbb514f --- /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 000000000..077dd3460 --- /dev/null +++ b/repositories.gradle @@ -0,0 +1,8 @@ +// Add any additional repositiroes for your dependencies here + +repositories { + mavenCentral() + maven { + url = "https://jitpack.io" + } +} diff --git a/resources/neimod.info b/resources/neimod.info deleted file mode 100644 index c39152fc4..000000000 --- a/resources/neimod.info +++ /dev/null @@ -1,21 +0,0 @@ -[ -{ - "modid": "NotEnoughItems", - "name": "Not Enough Items", - "version": "${version}", - "mcversion": "${mc_version}", - "description": "Recipe Viewer, Inventory Manager, Item Spawner, Cheats and more; GTNH Version - - - - -Supporters: EmuCraft Team, Victor Zimmer, lexi85, Ace_Trainer_Tullius, Bacon_Donut, Iarinu", - "url": "http://www.minecraftforum.net/topic/909223", - "credits": "Alexandria - original idea", - "license": "LGPL-3.0", - "authorList": [ "ChickenBones", "mitchej123" ], - "dependencies": [ - "CodeChickenCore" - ] -} -] \ No newline at end of file diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 8cf9e37bc..000000000 --- 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 = 'NotEnoughItems' diff --git a/src/codechicken/nei/BookmarkPanel.java b/src/main/java/codechicken/nei/BookmarkPanel.java similarity index 100% rename from src/codechicken/nei/BookmarkPanel.java rename to src/main/java/codechicken/nei/BookmarkPanel.java diff --git a/src/codechicken/nei/Button.java b/src/main/java/codechicken/nei/Button.java similarity index 100% rename from src/codechicken/nei/Button.java rename to src/main/java/codechicken/nei/Button.java diff --git a/src/codechicken/nei/ButtonCycled.java b/src/main/java/codechicken/nei/ButtonCycled.java similarity index 100% rename from src/codechicken/nei/ButtonCycled.java rename to src/main/java/codechicken/nei/ButtonCycled.java diff --git a/src/codechicken/nei/ClientHandler.java b/src/main/java/codechicken/nei/ClientHandler.java similarity index 100% rename from src/codechicken/nei/ClientHandler.java rename to src/main/java/codechicken/nei/ClientHandler.java diff --git a/src/codechicken/nei/ContainerCreativeInv.java b/src/main/java/codechicken/nei/ContainerCreativeInv.java similarity index 100% rename from src/codechicken/nei/ContainerCreativeInv.java rename to src/main/java/codechicken/nei/ContainerCreativeInv.java diff --git a/src/codechicken/nei/ContainerEnchantmentModifier.java b/src/main/java/codechicken/nei/ContainerEnchantmentModifier.java similarity index 100% rename from src/codechicken/nei/ContainerEnchantmentModifier.java rename to src/main/java/codechicken/nei/ContainerEnchantmentModifier.java diff --git a/src/codechicken/nei/ContainerPotionCreator.java b/src/main/java/codechicken/nei/ContainerPotionCreator.java similarity index 100% rename from src/codechicken/nei/ContainerPotionCreator.java rename to src/main/java/codechicken/nei/ContainerPotionCreator.java diff --git a/src/codechicken/nei/DefaultHighlightHandler.java b/src/main/java/codechicken/nei/DefaultHighlightHandler.java similarity index 100% rename from src/codechicken/nei/DefaultHighlightHandler.java rename to src/main/java/codechicken/nei/DefaultHighlightHandler.java diff --git a/src/codechicken/nei/DoubleFilteredFilter.java b/src/main/java/codechicken/nei/DoubleFilteredFilter.java similarity index 100% rename from src/codechicken/nei/DoubleFilteredFilter.java rename to src/main/java/codechicken/nei/DoubleFilteredFilter.java diff --git a/src/codechicken/nei/ExtendedCreativeInv.java b/src/main/java/codechicken/nei/ExtendedCreativeInv.java similarity index 100% rename from src/codechicken/nei/ExtendedCreativeInv.java rename to src/main/java/codechicken/nei/ExtendedCreativeInv.java diff --git a/src/codechicken/nei/FastTransferManager.java b/src/main/java/codechicken/nei/FastTransferManager.java similarity index 100% rename from src/codechicken/nei/FastTransferManager.java rename to src/main/java/codechicken/nei/FastTransferManager.java diff --git a/src/codechicken/nei/GuiEnchantmentModifier.java b/src/main/java/codechicken/nei/GuiEnchantmentModifier.java similarity index 100% rename from src/codechicken/nei/GuiEnchantmentModifier.java rename to src/main/java/codechicken/nei/GuiEnchantmentModifier.java diff --git a/src/codechicken/nei/GuiExtendedCreativeInv.java b/src/main/java/codechicken/nei/GuiExtendedCreativeInv.java similarity index 100% rename from src/codechicken/nei/GuiExtendedCreativeInv.java rename to src/main/java/codechicken/nei/GuiExtendedCreativeInv.java diff --git a/src/codechicken/nei/GuiNEIButton.java b/src/main/java/codechicken/nei/GuiNEIButton.java similarity index 100% rename from src/codechicken/nei/GuiNEIButton.java rename to src/main/java/codechicken/nei/GuiNEIButton.java diff --git a/src/codechicken/nei/GuiPotionCreator.java b/src/main/java/codechicken/nei/GuiPotionCreator.java similarity index 100% rename from src/codechicken/nei/GuiPotionCreator.java rename to src/main/java/codechicken/nei/GuiPotionCreator.java diff --git a/src/codechicken/nei/HUDRenderer.java b/src/main/java/codechicken/nei/HUDRenderer.java similarity index 100% rename from src/codechicken/nei/HUDRenderer.java rename to src/main/java/codechicken/nei/HUDRenderer.java diff --git a/src/codechicken/nei/Image.java b/src/main/java/codechicken/nei/Image.java similarity index 100% rename from src/codechicken/nei/Image.java rename to src/main/java/codechicken/nei/Image.java diff --git a/src/codechicken/nei/InfiniteStackSizeHandler.java b/src/main/java/codechicken/nei/InfiniteStackSizeHandler.java similarity index 100% rename from src/codechicken/nei/InfiniteStackSizeHandler.java rename to src/main/java/codechicken/nei/InfiniteStackSizeHandler.java diff --git a/src/codechicken/nei/InfiniteToolHandler.java b/src/main/java/codechicken/nei/InfiniteToolHandler.java similarity index 100% rename from src/codechicken/nei/InfiniteToolHandler.java rename to src/main/java/codechicken/nei/InfiniteToolHandler.java diff --git a/src/codechicken/nei/InventoryCraftingDummy.java b/src/main/java/codechicken/nei/InventoryCraftingDummy.java similarity index 100% rename from src/codechicken/nei/InventoryCraftingDummy.java rename to src/main/java/codechicken/nei/InventoryCraftingDummy.java diff --git a/src/codechicken/nei/ItemList.java b/src/main/java/codechicken/nei/ItemList.java similarity index 100% rename from src/codechicken/nei/ItemList.java rename to src/main/java/codechicken/nei/ItemList.java diff --git a/src/codechicken/nei/ItemMobSpawner.java b/src/main/java/codechicken/nei/ItemMobSpawner.java similarity index 100% rename from src/codechicken/nei/ItemMobSpawner.java rename to src/main/java/codechicken/nei/ItemMobSpawner.java diff --git a/src/codechicken/nei/ItemPanel.java b/src/main/java/codechicken/nei/ItemPanel.java similarity index 100% rename from src/codechicken/nei/ItemPanel.java rename to src/main/java/codechicken/nei/ItemPanel.java diff --git a/src/codechicken/nei/ItemPanels.java b/src/main/java/codechicken/nei/ItemPanels.java similarity index 100% rename from src/codechicken/nei/ItemPanels.java rename to src/main/java/codechicken/nei/ItemPanels.java diff --git a/src/codechicken/nei/ItemQuantityField.java b/src/main/java/codechicken/nei/ItemQuantityField.java similarity index 100% rename from src/codechicken/nei/ItemQuantityField.java rename to src/main/java/codechicken/nei/ItemQuantityField.java diff --git a/src/codechicken/nei/ItemSorter.java b/src/main/java/codechicken/nei/ItemSorter.java similarity index 100% rename from src/codechicken/nei/ItemSorter.java rename to src/main/java/codechicken/nei/ItemSorter.java diff --git a/src/codechicken/nei/ItemStackMap.java b/src/main/java/codechicken/nei/ItemStackMap.java similarity index 100% rename from src/codechicken/nei/ItemStackMap.java rename to src/main/java/codechicken/nei/ItemStackMap.java diff --git a/src/codechicken/nei/ItemStackSet.java b/src/main/java/codechicken/nei/ItemStackSet.java similarity index 100% rename from src/codechicken/nei/ItemStackSet.java rename to src/main/java/codechicken/nei/ItemStackSet.java diff --git a/src/codechicken/nei/KeyManager.java b/src/main/java/codechicken/nei/KeyManager.java similarity index 100% rename from src/codechicken/nei/KeyManager.java rename to src/main/java/codechicken/nei/KeyManager.java diff --git a/src/codechicken/nei/Label.java b/src/main/java/codechicken/nei/Label.java similarity index 100% rename from src/codechicken/nei/Label.java rename to src/main/java/codechicken/nei/Label.java diff --git a/src/codechicken/nei/LayoutManager.java b/src/main/java/codechicken/nei/LayoutManager.java similarity index 100% rename from src/codechicken/nei/LayoutManager.java rename to src/main/java/codechicken/nei/LayoutManager.java diff --git a/src/codechicken/nei/LayoutStyleMinecraft.java b/src/main/java/codechicken/nei/LayoutStyleMinecraft.java similarity index 100% rename from src/codechicken/nei/LayoutStyleMinecraft.java rename to src/main/java/codechicken/nei/LayoutStyleMinecraft.java diff --git a/src/codechicken/nei/NEIActions.java b/src/main/java/codechicken/nei/NEIActions.java similarity index 100% rename from src/codechicken/nei/NEIActions.java rename to src/main/java/codechicken/nei/NEIActions.java diff --git a/src/codechicken/nei/NEICPH.java b/src/main/java/codechicken/nei/NEICPH.java similarity index 100% rename from src/codechicken/nei/NEICPH.java rename to src/main/java/codechicken/nei/NEICPH.java diff --git a/src/codechicken/nei/NEIChestGuiHandler.java b/src/main/java/codechicken/nei/NEIChestGuiHandler.java similarity index 100% rename from src/codechicken/nei/NEIChestGuiHandler.java rename to src/main/java/codechicken/nei/NEIChestGuiHandler.java diff --git a/src/codechicken/nei/NEIClientConfig.java b/src/main/java/codechicken/nei/NEIClientConfig.java similarity index 100% rename from src/codechicken/nei/NEIClientConfig.java rename to src/main/java/codechicken/nei/NEIClientConfig.java diff --git a/src/codechicken/nei/NEIClientUtils.java b/src/main/java/codechicken/nei/NEIClientUtils.java similarity index 100% rename from src/codechicken/nei/NEIClientUtils.java rename to src/main/java/codechicken/nei/NEIClientUtils.java diff --git a/src/codechicken/nei/NEICompatibility.java b/src/main/java/codechicken/nei/NEICompatibility.java similarity index 100% rename from src/codechicken/nei/NEICompatibility.java rename to src/main/java/codechicken/nei/NEICompatibility.java diff --git a/src/codechicken/nei/NEIController.java b/src/main/java/codechicken/nei/NEIController.java similarity index 100% rename from src/codechicken/nei/NEIController.java rename to src/main/java/codechicken/nei/NEIController.java diff --git a/src/codechicken/nei/NEICreativeGuiHandler.java b/src/main/java/codechicken/nei/NEICreativeGuiHandler.java similarity index 100% rename from src/codechicken/nei/NEICreativeGuiHandler.java rename to src/main/java/codechicken/nei/NEICreativeGuiHandler.java diff --git a/src/codechicken/nei/NEIDummySlotHandler.java b/src/main/java/codechicken/nei/NEIDummySlotHandler.java similarity index 100% rename from src/codechicken/nei/NEIDummySlotHandler.java rename to src/main/java/codechicken/nei/NEIDummySlotHandler.java diff --git a/src/codechicken/nei/NEIModContainer.java b/src/main/java/codechicken/nei/NEIModContainer.java similarity index 92% rename from src/codechicken/nei/NEIModContainer.java rename to src/main/java/codechicken/nei/NEIModContainer.java index b7706e3d2..f430d7bee 100644 --- a/src/codechicken/nei/NEIModContainer.java +++ b/src/main/java/codechicken/nei/NEIModContainer.java @@ -34,10 +34,18 @@ public class NEIModContainer extends DummyModContainer public static LinkedList plugins = new LinkedList<>(); public NEIModContainer() { - super(MetadataCollection.from(MetadataCollection.class.getResourceAsStream("/neimod.info"), "NotEnoughItems").getMetadataForId("NotEnoughItems", null)); + super(getModMetadata()); loadMetadata(); } + private static ModMetadata getModMetadata() { + final ModMetadata modMetadata = new ModMetadata(); + modMetadata.name = "GRADLETOKEN_MODNAME"; + modMetadata.modId = "GRADLETOKEN_MODID"; + modMetadata.version = "GRADLETOKEN_VERSION"; + return modMetadata; + } + @Override public Set getRequirements() { Set deps = new HashSet<>(); diff --git a/src/codechicken/nei/NEISPH.java b/src/main/java/codechicken/nei/NEISPH.java similarity index 100% rename from src/codechicken/nei/NEISPH.java rename to src/main/java/codechicken/nei/NEISPH.java diff --git a/src/codechicken/nei/NEIServerConfig.java b/src/main/java/codechicken/nei/NEIServerConfig.java similarity index 100% rename from src/codechicken/nei/NEIServerConfig.java rename to src/main/java/codechicken/nei/NEIServerConfig.java diff --git a/src/codechicken/nei/NEIServerUtils.java b/src/main/java/codechicken/nei/NEIServerUtils.java similarity index 100% rename from src/codechicken/nei/NEIServerUtils.java rename to src/main/java/codechicken/nei/NEIServerUtils.java diff --git a/src/codechicken/nei/OffsetPositioner.java b/src/main/java/codechicken/nei/OffsetPositioner.java similarity index 100% rename from src/codechicken/nei/OffsetPositioner.java rename to src/main/java/codechicken/nei/OffsetPositioner.java diff --git a/src/codechicken/nei/PlayerSave.java b/src/main/java/codechicken/nei/PlayerSave.java similarity index 100% rename from src/codechicken/nei/PlayerSave.java rename to src/main/java/codechicken/nei/PlayerSave.java diff --git a/src/codechicken/nei/PopupInputHandler.java b/src/main/java/codechicken/nei/PopupInputHandler.java similarity index 100% rename from src/codechicken/nei/PopupInputHandler.java rename to src/main/java/codechicken/nei/PopupInputHandler.java diff --git a/src/codechicken/nei/PositionedStack.java b/src/main/java/codechicken/nei/PositionedStack.java similarity index 100% rename from src/codechicken/nei/PositionedStack.java rename to src/main/java/codechicken/nei/PositionedStack.java diff --git a/src/codechicken/nei/RestartableTask.java b/src/main/java/codechicken/nei/RestartableTask.java similarity index 100% rename from src/codechicken/nei/RestartableTask.java rename to src/main/java/codechicken/nei/RestartableTask.java diff --git a/src/codechicken/nei/SearchField.java b/src/main/java/codechicken/nei/SearchField.java similarity index 100% rename from src/codechicken/nei/SearchField.java rename to src/main/java/codechicken/nei/SearchField.java diff --git a/src/codechicken/nei/ServerHandler.java b/src/main/java/codechicken/nei/ServerHandler.java similarity index 100% rename from src/codechicken/nei/ServerHandler.java rename to src/main/java/codechicken/nei/ServerHandler.java diff --git a/src/codechicken/nei/SlotOP.java b/src/main/java/codechicken/nei/SlotOP.java similarity index 100% rename from src/codechicken/nei/SlotOP.java rename to src/main/java/codechicken/nei/SlotOP.java diff --git a/src/codechicken/nei/SpawnerRenderer.java b/src/main/java/codechicken/nei/SpawnerRenderer.java similarity index 100% rename from src/codechicken/nei/SpawnerRenderer.java rename to src/main/java/codechicken/nei/SpawnerRenderer.java diff --git a/src/codechicken/nei/SubsetWidget.java b/src/main/java/codechicken/nei/SubsetWidget.java similarity index 100% rename from src/codechicken/nei/SubsetWidget.java rename to src/main/java/codechicken/nei/SubsetWidget.java diff --git a/src/codechicken/nei/TextField.java b/src/main/java/codechicken/nei/TextField.java similarity index 100% rename from src/codechicken/nei/TextField.java rename to src/main/java/codechicken/nei/TextField.java diff --git a/src/codechicken/nei/ThreadOperationTimer.java b/src/main/java/codechicken/nei/ThreadOperationTimer.java similarity index 100% rename from src/codechicken/nei/ThreadOperationTimer.java rename to src/main/java/codechicken/nei/ThreadOperationTimer.java diff --git a/src/codechicken/nei/VisiblityData.java b/src/main/java/codechicken/nei/VisiblityData.java similarity index 100% rename from src/codechicken/nei/VisiblityData.java rename to src/main/java/codechicken/nei/VisiblityData.java diff --git a/src/codechicken/nei/Widget.java b/src/main/java/codechicken/nei/Widget.java similarity index 100% rename from src/codechicken/nei/Widget.java rename to src/main/java/codechicken/nei/Widget.java diff --git a/src/codechicken/nei/WidgetZOrder.java b/src/main/java/codechicken/nei/WidgetZOrder.java similarity index 100% rename from src/codechicken/nei/WidgetZOrder.java rename to src/main/java/codechicken/nei/WidgetZOrder.java diff --git a/src/codechicken/nei/WorldOverlayRenderer.java b/src/main/java/codechicken/nei/WorldOverlayRenderer.java similarity index 100% rename from src/codechicken/nei/WorldOverlayRenderer.java rename to src/main/java/codechicken/nei/WorldOverlayRenderer.java diff --git a/src/codechicken/nei/api/API.java b/src/main/java/codechicken/nei/api/API.java similarity index 100% rename from src/codechicken/nei/api/API.java rename to src/main/java/codechicken/nei/api/API.java diff --git a/src/codechicken/nei/api/DefaultOverlayRenderer.java b/src/main/java/codechicken/nei/api/DefaultOverlayRenderer.java similarity index 100% rename from src/codechicken/nei/api/DefaultOverlayRenderer.java rename to src/main/java/codechicken/nei/api/DefaultOverlayRenderer.java diff --git a/src/codechicken/nei/api/GuiInfo.java b/src/main/java/codechicken/nei/api/GuiInfo.java similarity index 100% rename from src/codechicken/nei/api/GuiInfo.java rename to src/main/java/codechicken/nei/api/GuiInfo.java diff --git a/src/codechicken/nei/api/IConfigureNEI.java b/src/main/java/codechicken/nei/api/IConfigureNEI.java similarity index 100% rename from src/codechicken/nei/api/IConfigureNEI.java rename to src/main/java/codechicken/nei/api/IConfigureNEI.java diff --git a/src/codechicken/nei/api/IGuiContainerOverlay.java b/src/main/java/codechicken/nei/api/IGuiContainerOverlay.java similarity index 100% rename from src/codechicken/nei/api/IGuiContainerOverlay.java rename to src/main/java/codechicken/nei/api/IGuiContainerOverlay.java diff --git a/src/codechicken/nei/api/IHighlightHandler.java b/src/main/java/codechicken/nei/api/IHighlightHandler.java similarity index 100% rename from src/codechicken/nei/api/IHighlightHandler.java rename to src/main/java/codechicken/nei/api/IHighlightHandler.java diff --git a/src/codechicken/nei/api/IInfiniteItemHandler.java b/src/main/java/codechicken/nei/api/IInfiniteItemHandler.java similarity index 100% rename from src/codechicken/nei/api/IInfiniteItemHandler.java rename to src/main/java/codechicken/nei/api/IInfiniteItemHandler.java diff --git a/src/codechicken/nei/api/INEIGuiAdapter.java b/src/main/java/codechicken/nei/api/INEIGuiAdapter.java similarity index 100% rename from src/codechicken/nei/api/INEIGuiAdapter.java rename to src/main/java/codechicken/nei/api/INEIGuiAdapter.java diff --git a/src/codechicken/nei/api/INEIGuiHandler.java b/src/main/java/codechicken/nei/api/INEIGuiHandler.java similarity index 100% rename from src/codechicken/nei/api/INEIGuiHandler.java rename to src/main/java/codechicken/nei/api/INEIGuiHandler.java diff --git a/src/codechicken/nei/api/INEIModeHandler.java b/src/main/java/codechicken/nei/api/INEIModeHandler.java similarity index 100% rename from src/codechicken/nei/api/INEIModeHandler.java rename to src/main/java/codechicken/nei/api/INEIModeHandler.java diff --git a/src/codechicken/nei/api/IOverlayHandler.java b/src/main/java/codechicken/nei/api/IOverlayHandler.java similarity index 100% rename from src/codechicken/nei/api/IOverlayHandler.java rename to src/main/java/codechicken/nei/api/IOverlayHandler.java diff --git a/src/codechicken/nei/api/IRecipeOverlayRenderer.java b/src/main/java/codechicken/nei/api/IRecipeOverlayRenderer.java similarity index 100% rename from src/codechicken/nei/api/IRecipeOverlayRenderer.java rename to src/main/java/codechicken/nei/api/IRecipeOverlayRenderer.java diff --git a/src/codechicken/nei/api/IStackPositioner.java b/src/main/java/codechicken/nei/api/IStackPositioner.java similarity index 100% rename from src/codechicken/nei/api/IStackPositioner.java rename to src/main/java/codechicken/nei/api/IStackPositioner.java diff --git a/src/codechicken/nei/api/IStackStringifyHandler.java b/src/main/java/codechicken/nei/api/IStackStringifyHandler.java similarity index 100% rename from src/codechicken/nei/api/IStackStringifyHandler.java rename to src/main/java/codechicken/nei/api/IStackStringifyHandler.java diff --git a/src/codechicken/nei/api/ItemFilter.java b/src/main/java/codechicken/nei/api/ItemFilter.java similarity index 100% rename from src/codechicken/nei/api/ItemFilter.java rename to src/main/java/codechicken/nei/api/ItemFilter.java diff --git a/src/codechicken/nei/api/ItemInfo.java b/src/main/java/codechicken/nei/api/ItemInfo.java similarity index 100% rename from src/codechicken/nei/api/ItemInfo.java rename to src/main/java/codechicken/nei/api/ItemInfo.java diff --git a/src/codechicken/nei/api/LayoutStyle.java b/src/main/java/codechicken/nei/api/LayoutStyle.java similarity index 100% rename from src/codechicken/nei/api/LayoutStyle.java rename to src/main/java/codechicken/nei/api/LayoutStyle.java diff --git a/src/codechicken/nei/api/NEIInfo.java b/src/main/java/codechicken/nei/api/NEIInfo.java similarity index 100% rename from src/codechicken/nei/api/NEIInfo.java rename to src/main/java/codechicken/nei/api/NEIInfo.java diff --git a/src/codechicken/nei/api/TaggedInventoryArea.java b/src/main/java/codechicken/nei/api/TaggedInventoryArea.java similarity index 100% rename from src/codechicken/nei/api/TaggedInventoryArea.java rename to src/main/java/codechicken/nei/api/TaggedInventoryArea.java diff --git a/src/codechicken/nei/asm/NEICorePlugin.java b/src/main/java/codechicken/nei/asm/NEICorePlugin.java similarity index 100% rename from src/codechicken/nei/asm/NEICorePlugin.java rename to src/main/java/codechicken/nei/asm/NEICorePlugin.java diff --git a/src/codechicken/nei/asm/NEITransformer.java b/src/main/java/codechicken/nei/asm/NEITransformer.java similarity index 100% rename from src/codechicken/nei/asm/NEITransformer.java rename to src/main/java/codechicken/nei/asm/NEITransformer.java diff --git a/src/codechicken/nei/asm/OreDictionaryVisitor.java b/src/main/java/codechicken/nei/asm/OreDictionaryVisitor.java similarity index 100% rename from src/codechicken/nei/asm/OreDictionaryVisitor.java rename to src/main/java/codechicken/nei/asm/OreDictionaryVisitor.java diff --git a/src/codechicken/nei/config/ArrayDumper.java b/src/main/java/codechicken/nei/config/ArrayDumper.java similarity index 100% rename from src/codechicken/nei/config/ArrayDumper.java rename to src/main/java/codechicken/nei/config/ArrayDumper.java diff --git a/src/codechicken/nei/config/ConfigSet.java b/src/main/java/codechicken/nei/config/ConfigSet.java similarity index 100% rename from src/codechicken/nei/config/ConfigSet.java rename to src/main/java/codechicken/nei/config/ConfigSet.java diff --git a/src/codechicken/nei/config/DataDumper.java b/src/main/java/codechicken/nei/config/DataDumper.java similarity index 100% rename from src/codechicken/nei/config/DataDumper.java rename to src/main/java/codechicken/nei/config/DataDumper.java diff --git a/src/codechicken/nei/config/GuiHighlightTips.java b/src/main/java/codechicken/nei/config/GuiHighlightTips.java similarity index 100% rename from src/codechicken/nei/config/GuiHighlightTips.java rename to src/main/java/codechicken/nei/config/GuiHighlightTips.java diff --git a/src/codechicken/nei/config/GuiItemIconDumper.java b/src/main/java/codechicken/nei/config/GuiItemIconDumper.java similarity index 100% rename from src/codechicken/nei/config/GuiItemIconDumper.java rename to src/main/java/codechicken/nei/config/GuiItemIconDumper.java diff --git a/src/codechicken/nei/config/GuiItemSorter.java b/src/main/java/codechicken/nei/config/GuiItemSorter.java similarity index 100% rename from src/codechicken/nei/config/GuiItemSorter.java rename to src/main/java/codechicken/nei/config/GuiItemSorter.java diff --git a/src/codechicken/nei/config/GuiNEIOptionList.java b/src/main/java/codechicken/nei/config/GuiNEIOptionList.java similarity index 100% rename from src/codechicken/nei/config/GuiNEIOptionList.java rename to src/main/java/codechicken/nei/config/GuiNEIOptionList.java diff --git a/src/codechicken/nei/config/GuiOptionList.java b/src/main/java/codechicken/nei/config/GuiOptionList.java similarity index 100% rename from src/codechicken/nei/config/GuiOptionList.java rename to src/main/java/codechicken/nei/config/GuiOptionList.java diff --git a/src/codechicken/nei/config/GuiOptionPane.java b/src/main/java/codechicken/nei/config/GuiOptionPane.java similarity index 100% rename from src/codechicken/nei/config/GuiOptionPane.java rename to src/main/java/codechicken/nei/config/GuiOptionPane.java diff --git a/src/codechicken/nei/config/HandlerDumper.java b/src/main/java/codechicken/nei/config/HandlerDumper.java similarity index 100% rename from src/codechicken/nei/config/HandlerDumper.java rename to src/main/java/codechicken/nei/config/HandlerDumper.java diff --git a/src/codechicken/nei/config/IMCHandler.java b/src/main/java/codechicken/nei/config/IMCHandler.java similarity index 100% rename from src/codechicken/nei/config/IMCHandler.java rename to src/main/java/codechicken/nei/config/IMCHandler.java diff --git a/src/codechicken/nei/config/ItemPanelDumper.java b/src/main/java/codechicken/nei/config/ItemPanelDumper.java similarity index 100% rename from src/codechicken/nei/config/ItemPanelDumper.java rename to src/main/java/codechicken/nei/config/ItemPanelDumper.java diff --git a/src/codechicken/nei/config/Option.java b/src/main/java/codechicken/nei/config/Option.java similarity index 100% rename from src/codechicken/nei/config/Option.java rename to src/main/java/codechicken/nei/config/Option.java diff --git a/src/codechicken/nei/config/OptionButton.java b/src/main/java/codechicken/nei/config/OptionButton.java similarity index 100% rename from src/codechicken/nei/config/OptionButton.java rename to src/main/java/codechicken/nei/config/OptionButton.java diff --git a/src/codechicken/nei/config/OptionCycled.java b/src/main/java/codechicken/nei/config/OptionCycled.java similarity index 100% rename from src/codechicken/nei/config/OptionCycled.java rename to src/main/java/codechicken/nei/config/OptionCycled.java diff --git a/src/codechicken/nei/config/OptionGamemodes.java b/src/main/java/codechicken/nei/config/OptionGamemodes.java similarity index 100% rename from src/codechicken/nei/config/OptionGamemodes.java rename to src/main/java/codechicken/nei/config/OptionGamemodes.java diff --git a/src/codechicken/nei/config/OptionIntegerField.java b/src/main/java/codechicken/nei/config/OptionIntegerField.java similarity index 100% rename from src/codechicken/nei/config/OptionIntegerField.java rename to src/main/java/codechicken/nei/config/OptionIntegerField.java diff --git a/src/codechicken/nei/config/OptionKeyBind.java b/src/main/java/codechicken/nei/config/OptionKeyBind.java similarity index 100% rename from src/codechicken/nei/config/OptionKeyBind.java rename to src/main/java/codechicken/nei/config/OptionKeyBind.java diff --git a/src/codechicken/nei/config/OptionList.java b/src/main/java/codechicken/nei/config/OptionList.java similarity index 100% rename from src/codechicken/nei/config/OptionList.java rename to src/main/java/codechicken/nei/config/OptionList.java diff --git a/src/codechicken/nei/config/OptionOpenGui.java b/src/main/java/codechicken/nei/config/OptionOpenGui.java similarity index 100% rename from src/codechicken/nei/config/OptionOpenGui.java rename to src/main/java/codechicken/nei/config/OptionOpenGui.java diff --git a/src/codechicken/nei/config/OptionScrollPane.java b/src/main/java/codechicken/nei/config/OptionScrollPane.java similarity index 100% rename from src/codechicken/nei/config/OptionScrollPane.java rename to src/main/java/codechicken/nei/config/OptionScrollPane.java diff --git a/src/codechicken/nei/config/OptionStringSet.java b/src/main/java/codechicken/nei/config/OptionStringSet.java similarity index 100% rename from src/codechicken/nei/config/OptionStringSet.java rename to src/main/java/codechicken/nei/config/OptionStringSet.java diff --git a/src/codechicken/nei/config/OptionTextField.java b/src/main/java/codechicken/nei/config/OptionTextField.java similarity index 100% rename from src/codechicken/nei/config/OptionTextField.java rename to src/main/java/codechicken/nei/config/OptionTextField.java diff --git a/src/codechicken/nei/config/OptionToggleButton.java b/src/main/java/codechicken/nei/config/OptionToggleButton.java similarity index 100% rename from src/codechicken/nei/config/OptionToggleButton.java rename to src/main/java/codechicken/nei/config/OptionToggleButton.java diff --git a/src/codechicken/nei/config/OptionToggleButtonBoubs.java b/src/main/java/codechicken/nei/config/OptionToggleButtonBoubs.java similarity index 100% rename from src/codechicken/nei/config/OptionToggleButtonBoubs.java rename to src/main/java/codechicken/nei/config/OptionToggleButtonBoubs.java diff --git a/src/codechicken/nei/config/OptionUtilities.java b/src/main/java/codechicken/nei/config/OptionUtilities.java similarity index 100% rename from src/codechicken/nei/config/OptionUtilities.java rename to src/main/java/codechicken/nei/config/OptionUtilities.java diff --git a/src/codechicken/nei/config/RegistryDumper.java b/src/main/java/codechicken/nei/config/RegistryDumper.java similarity index 100% rename from src/codechicken/nei/config/RegistryDumper.java rename to src/main/java/codechicken/nei/config/RegistryDumper.java diff --git a/src/codechicken/nei/drawable/DrawableBuilder.java b/src/main/java/codechicken/nei/drawable/DrawableBuilder.java similarity index 100% rename from src/codechicken/nei/drawable/DrawableBuilder.java rename to src/main/java/codechicken/nei/drawable/DrawableBuilder.java diff --git a/src/codechicken/nei/drawable/DrawableResource.java b/src/main/java/codechicken/nei/drawable/DrawableResource.java similarity index 100% rename from src/codechicken/nei/drawable/DrawableResource.java rename to src/main/java/codechicken/nei/drawable/DrawableResource.java diff --git a/src/codechicken/nei/event/NEIConfigsLoadedEvent.java b/src/main/java/codechicken/nei/event/NEIConfigsLoadedEvent.java similarity index 100% rename from src/codechicken/nei/event/NEIConfigsLoadedEvent.java rename to src/main/java/codechicken/nei/event/NEIConfigsLoadedEvent.java diff --git a/src/codechicken/nei/event/NEIRegisterHandlerInfosEvent.java b/src/main/java/codechicken/nei/event/NEIRegisterHandlerInfosEvent.java similarity index 100% rename from src/codechicken/nei/event/NEIRegisterHandlerInfosEvent.java rename to src/main/java/codechicken/nei/event/NEIRegisterHandlerInfosEvent.java diff --git a/src/codechicken/nei/guihook/DefaultSlotClickHandler.java b/src/main/java/codechicken/nei/guihook/DefaultSlotClickHandler.java similarity index 100% rename from src/codechicken/nei/guihook/DefaultSlotClickHandler.java rename to src/main/java/codechicken/nei/guihook/DefaultSlotClickHandler.java diff --git a/src/codechicken/nei/guihook/GuiContainerManager.java b/src/main/java/codechicken/nei/guihook/GuiContainerManager.java similarity index 100% rename from src/codechicken/nei/guihook/GuiContainerManager.java rename to src/main/java/codechicken/nei/guihook/GuiContainerManager.java diff --git a/src/codechicken/nei/guihook/IContainerDrawHandler.java b/src/main/java/codechicken/nei/guihook/IContainerDrawHandler.java similarity index 100% rename from src/codechicken/nei/guihook/IContainerDrawHandler.java rename to src/main/java/codechicken/nei/guihook/IContainerDrawHandler.java diff --git a/src/codechicken/nei/guihook/IContainerInputHandler.java b/src/main/java/codechicken/nei/guihook/IContainerInputHandler.java similarity index 100% rename from src/codechicken/nei/guihook/IContainerInputHandler.java rename to src/main/java/codechicken/nei/guihook/IContainerInputHandler.java diff --git a/src/codechicken/nei/guihook/IContainerObjectHandler.java b/src/main/java/codechicken/nei/guihook/IContainerObjectHandler.java similarity index 100% rename from src/codechicken/nei/guihook/IContainerObjectHandler.java rename to src/main/java/codechicken/nei/guihook/IContainerObjectHandler.java diff --git a/src/codechicken/nei/guihook/IContainerSlotClickHandler.java b/src/main/java/codechicken/nei/guihook/IContainerSlotClickHandler.java similarity index 100% rename from src/codechicken/nei/guihook/IContainerSlotClickHandler.java rename to src/main/java/codechicken/nei/guihook/IContainerSlotClickHandler.java diff --git a/src/codechicken/nei/guihook/IContainerTooltipHandler.java b/src/main/java/codechicken/nei/guihook/IContainerTooltipHandler.java similarity index 100% rename from src/codechicken/nei/guihook/IContainerTooltipHandler.java rename to src/main/java/codechicken/nei/guihook/IContainerTooltipHandler.java diff --git a/src/codechicken/nei/guihook/IGuiClientSide.java b/src/main/java/codechicken/nei/guihook/IGuiClientSide.java similarity index 100% rename from src/codechicken/nei/guihook/IGuiClientSide.java rename to src/main/java/codechicken/nei/guihook/IGuiClientSide.java diff --git a/src/codechicken/nei/guihook/IGuiHandleMouseWheel.java b/src/main/java/codechicken/nei/guihook/IGuiHandleMouseWheel.java similarity index 100% rename from src/codechicken/nei/guihook/IGuiHandleMouseWheel.java rename to src/main/java/codechicken/nei/guihook/IGuiHandleMouseWheel.java diff --git a/src/codechicken/nei/guihook/IGuiSlotDraw.java b/src/main/java/codechicken/nei/guihook/IGuiSlotDraw.java similarity index 100% rename from src/codechicken/nei/guihook/IGuiSlotDraw.java rename to src/main/java/codechicken/nei/guihook/IGuiSlotDraw.java diff --git a/src/codechicken/nei/recipe/BookmarkRecipeId.java b/src/main/java/codechicken/nei/recipe/BookmarkRecipeId.java similarity index 100% rename from src/codechicken/nei/recipe/BookmarkRecipeId.java rename to src/main/java/codechicken/nei/recipe/BookmarkRecipeId.java diff --git a/src/codechicken/nei/recipe/BrewingOverlayHandler.java b/src/main/java/codechicken/nei/recipe/BrewingOverlayHandler.java similarity index 100% rename from src/codechicken/nei/recipe/BrewingOverlayHandler.java rename to src/main/java/codechicken/nei/recipe/BrewingOverlayHandler.java diff --git a/src/codechicken/nei/recipe/BrewingRecipeHandler.java b/src/main/java/codechicken/nei/recipe/BrewingRecipeHandler.java similarity index 100% rename from src/codechicken/nei/recipe/BrewingRecipeHandler.java rename to src/main/java/codechicken/nei/recipe/BrewingRecipeHandler.java diff --git a/src/codechicken/nei/recipe/ContainerRecipe.java b/src/main/java/codechicken/nei/recipe/ContainerRecipe.java similarity index 100% rename from src/codechicken/nei/recipe/ContainerRecipe.java rename to src/main/java/codechicken/nei/recipe/ContainerRecipe.java diff --git a/src/codechicken/nei/recipe/DefaultOverlayHandler.java b/src/main/java/codechicken/nei/recipe/DefaultOverlayHandler.java similarity index 100% rename from src/codechicken/nei/recipe/DefaultOverlayHandler.java rename to src/main/java/codechicken/nei/recipe/DefaultOverlayHandler.java diff --git a/src/codechicken/nei/recipe/FireworkRecipeHandler.java b/src/main/java/codechicken/nei/recipe/FireworkRecipeHandler.java similarity index 100% rename from src/codechicken/nei/recipe/FireworkRecipeHandler.java rename to src/main/java/codechicken/nei/recipe/FireworkRecipeHandler.java diff --git a/src/codechicken/nei/recipe/FuelRecipeHandler.java b/src/main/java/codechicken/nei/recipe/FuelRecipeHandler.java similarity index 100% rename from src/codechicken/nei/recipe/FuelRecipeHandler.java rename to src/main/java/codechicken/nei/recipe/FuelRecipeHandler.java diff --git a/src/codechicken/nei/recipe/FurnaceRecipeHandler.java b/src/main/java/codechicken/nei/recipe/FurnaceRecipeHandler.java similarity index 100% rename from src/codechicken/nei/recipe/FurnaceRecipeHandler.java rename to src/main/java/codechicken/nei/recipe/FurnaceRecipeHandler.java diff --git a/src/codechicken/nei/recipe/GuiCraftingRecipe.java b/src/main/java/codechicken/nei/recipe/GuiCraftingRecipe.java similarity index 100% rename from src/codechicken/nei/recipe/GuiCraftingRecipe.java rename to src/main/java/codechicken/nei/recipe/GuiCraftingRecipe.java diff --git a/src/codechicken/nei/recipe/GuiRecipe.java b/src/main/java/codechicken/nei/recipe/GuiRecipe.java similarity index 100% rename from src/codechicken/nei/recipe/GuiRecipe.java rename to src/main/java/codechicken/nei/recipe/GuiRecipe.java diff --git a/src/codechicken/nei/recipe/GuiRecipeTab.java b/src/main/java/codechicken/nei/recipe/GuiRecipeTab.java similarity index 100% rename from src/codechicken/nei/recipe/GuiRecipeTab.java rename to src/main/java/codechicken/nei/recipe/GuiRecipeTab.java diff --git a/src/codechicken/nei/recipe/GuiRecipeTabCreative.java b/src/main/java/codechicken/nei/recipe/GuiRecipeTabCreative.java similarity index 100% rename from src/codechicken/nei/recipe/GuiRecipeTabCreative.java rename to src/main/java/codechicken/nei/recipe/GuiRecipeTabCreative.java diff --git a/src/codechicken/nei/recipe/GuiRecipeTabJEI.java b/src/main/java/codechicken/nei/recipe/GuiRecipeTabJEI.java similarity index 100% rename from src/codechicken/nei/recipe/GuiRecipeTabJEI.java rename to src/main/java/codechicken/nei/recipe/GuiRecipeTabJEI.java diff --git a/src/codechicken/nei/recipe/GuiRecipeTabs.java b/src/main/java/codechicken/nei/recipe/GuiRecipeTabs.java similarity index 100% rename from src/codechicken/nei/recipe/GuiRecipeTabs.java rename to src/main/java/codechicken/nei/recipe/GuiRecipeTabs.java diff --git a/src/codechicken/nei/recipe/GuiUsageRecipe.java b/src/main/java/codechicken/nei/recipe/GuiUsageRecipe.java similarity index 100% rename from src/codechicken/nei/recipe/GuiUsageRecipe.java rename to src/main/java/codechicken/nei/recipe/GuiUsageRecipe.java diff --git a/src/codechicken/nei/recipe/HandlerInfo.java b/src/main/java/codechicken/nei/recipe/HandlerInfo.java similarity index 100% rename from src/codechicken/nei/recipe/HandlerInfo.java rename to src/main/java/codechicken/nei/recipe/HandlerInfo.java diff --git a/src/codechicken/nei/recipe/ICraftingHandler.java b/src/main/java/codechicken/nei/recipe/ICraftingHandler.java similarity index 100% rename from src/codechicken/nei/recipe/ICraftingHandler.java rename to src/main/java/codechicken/nei/recipe/ICraftingHandler.java diff --git a/src/codechicken/nei/recipe/IRecipeHandler.java b/src/main/java/codechicken/nei/recipe/IRecipeHandler.java similarity index 100% rename from src/codechicken/nei/recipe/IRecipeHandler.java rename to src/main/java/codechicken/nei/recipe/IRecipeHandler.java diff --git a/src/codechicken/nei/recipe/IUsageHandler.java b/src/main/java/codechicken/nei/recipe/IUsageHandler.java similarity index 100% rename from src/codechicken/nei/recipe/IUsageHandler.java rename to src/main/java/codechicken/nei/recipe/IUsageHandler.java diff --git a/src/codechicken/nei/recipe/ProfilerRecipeHandler.java b/src/main/java/codechicken/nei/recipe/ProfilerRecipeHandler.java similarity index 100% rename from src/codechicken/nei/recipe/ProfilerRecipeHandler.java rename to src/main/java/codechicken/nei/recipe/ProfilerRecipeHandler.java diff --git a/src/codechicken/nei/recipe/RecipeInfo.java b/src/main/java/codechicken/nei/recipe/RecipeInfo.java similarity index 100% rename from src/codechicken/nei/recipe/RecipeInfo.java rename to src/main/java/codechicken/nei/recipe/RecipeInfo.java diff --git a/src/codechicken/nei/recipe/RecipeItemInputHandler.java b/src/main/java/codechicken/nei/recipe/RecipeItemInputHandler.java similarity index 100% rename from src/codechicken/nei/recipe/RecipeItemInputHandler.java rename to src/main/java/codechicken/nei/recipe/RecipeItemInputHandler.java diff --git a/src/codechicken/nei/recipe/ShapedRecipeHandler.java b/src/main/java/codechicken/nei/recipe/ShapedRecipeHandler.java similarity index 100% rename from src/codechicken/nei/recipe/ShapedRecipeHandler.java rename to src/main/java/codechicken/nei/recipe/ShapedRecipeHandler.java diff --git a/src/codechicken/nei/recipe/ShapelessRecipeHandler.java b/src/main/java/codechicken/nei/recipe/ShapelessRecipeHandler.java similarity index 100% rename from src/codechicken/nei/recipe/ShapelessRecipeHandler.java rename to src/main/java/codechicken/nei/recipe/ShapelessRecipeHandler.java diff --git a/src/codechicken/nei/recipe/StackInfo.java b/src/main/java/codechicken/nei/recipe/StackInfo.java similarity index 100% rename from src/codechicken/nei/recipe/StackInfo.java rename to src/main/java/codechicken/nei/recipe/StackInfo.java diff --git a/src/codechicken/nei/recipe/StackStringifyHandler.java b/src/main/java/codechicken/nei/recipe/StackStringifyHandler.java similarity index 100% rename from src/codechicken/nei/recipe/StackStringifyHandler.java rename to src/main/java/codechicken/nei/recipe/StackStringifyHandler.java diff --git a/src/codechicken/nei/recipe/TemplateRecipeHandler.java b/src/main/java/codechicken/nei/recipe/TemplateRecipeHandler.java similarity index 100% rename from src/codechicken/nei/recipe/TemplateRecipeHandler.java rename to src/main/java/codechicken/nei/recipe/TemplateRecipeHandler.java diff --git a/src/codechicken/nei/util/NBTJson.java b/src/main/java/codechicken/nei/util/NBTJson.java similarity index 100% rename from src/codechicken/nei/util/NBTJson.java rename to src/main/java/codechicken/nei/util/NBTJson.java diff --git a/resources/nei_at.cfg b/src/main/resources/META-INF/nei_at.cfg similarity index 100% rename from resources/nei_at.cfg rename to src/main/resources/META-INF/nei_at.cfg diff --git a/resources/assets/nei/asm/blocks.asm b/src/main/resources/assets/nei/asm/blocks.asm similarity index 100% rename from resources/assets/nei/asm/blocks.asm rename to src/main/resources/assets/nei/asm/blocks.asm diff --git a/resources/assets/nei/csv/handlers.csv b/src/main/resources/assets/nei/csv/handlers.csv similarity index 100% rename from resources/assets/nei/csv/handlers.csv rename to src/main/resources/assets/nei/csv/handlers.csv diff --git a/resources/assets/nei/lang/cs_CZ.lang b/src/main/resources/assets/nei/lang/cs_CZ.lang similarity index 100% rename from resources/assets/nei/lang/cs_CZ.lang rename to src/main/resources/assets/nei/lang/cs_CZ.lang diff --git a/resources/assets/nei/lang/de_DE.lang b/src/main/resources/assets/nei/lang/de_DE.lang similarity index 100% rename from resources/assets/nei/lang/de_DE.lang rename to src/main/resources/assets/nei/lang/de_DE.lang diff --git a/resources/assets/nei/lang/en_US.lang b/src/main/resources/assets/nei/lang/en_US.lang similarity index 100% rename from resources/assets/nei/lang/en_US.lang rename to src/main/resources/assets/nei/lang/en_US.lang diff --git a/resources/assets/nei/lang/et_EE.lang b/src/main/resources/assets/nei/lang/et_EE.lang similarity index 100% rename from resources/assets/nei/lang/et_EE.lang rename to src/main/resources/assets/nei/lang/et_EE.lang diff --git a/resources/assets/nei/lang/fr_FR.lang b/src/main/resources/assets/nei/lang/fr_FR.lang similarity index 100% rename from resources/assets/nei/lang/fr_FR.lang rename to src/main/resources/assets/nei/lang/fr_FR.lang diff --git a/resources/assets/nei/lang/it_IT.lang b/src/main/resources/assets/nei/lang/it_IT.lang similarity index 100% rename from resources/assets/nei/lang/it_IT.lang rename to src/main/resources/assets/nei/lang/it_IT.lang diff --git a/resources/assets/nei/lang/ko_KR.lang b/src/main/resources/assets/nei/lang/ko_KR.lang similarity index 100% rename from resources/assets/nei/lang/ko_KR.lang rename to src/main/resources/assets/nei/lang/ko_KR.lang diff --git a/resources/assets/nei/lang/pl_PL.lang b/src/main/resources/assets/nei/lang/pl_PL.lang similarity index 100% rename from resources/assets/nei/lang/pl_PL.lang rename to src/main/resources/assets/nei/lang/pl_PL.lang diff --git a/resources/assets/nei/lang/pt_BR.lang b/src/main/resources/assets/nei/lang/pt_BR.lang similarity index 100% rename from resources/assets/nei/lang/pt_BR.lang rename to src/main/resources/assets/nei/lang/pt_BR.lang diff --git a/resources/assets/nei/lang/ru_RU.lang b/src/main/resources/assets/nei/lang/ru_RU.lang similarity index 100% rename from resources/assets/nei/lang/ru_RU.lang rename to src/main/resources/assets/nei/lang/ru_RU.lang diff --git a/resources/assets/nei/lang/sk_SK.lang b/src/main/resources/assets/nei/lang/sk_SK.lang similarity index 100% rename from resources/assets/nei/lang/sk_SK.lang rename to src/main/resources/assets/nei/lang/sk_SK.lang diff --git a/resources/assets/nei/lang/tr_TR.lang b/src/main/resources/assets/nei/lang/tr_TR.lang similarity index 100% rename from resources/assets/nei/lang/tr_TR.lang rename to src/main/resources/assets/nei/lang/tr_TR.lang diff --git a/resources/assets/nei/lang/zh_CN.lang b/src/main/resources/assets/nei/lang/zh_CN.lang similarity index 100% rename from resources/assets/nei/lang/zh_CN.lang rename to src/main/resources/assets/nei/lang/zh_CN.lang diff --git a/resources/assets/nei/lang/zh_TW.lang b/src/main/resources/assets/nei/lang/zh_TW.lang similarity index 100% rename from resources/assets/nei/lang/zh_TW.lang rename to src/main/resources/assets/nei/lang/zh_TW.lang diff --git a/resources/assets/nei/textures/gui/inv.png b/src/main/resources/assets/nei/textures/gui/inv.png similarity index 100% rename from resources/assets/nei/textures/gui/inv.png rename to src/main/resources/assets/nei/textures/gui/inv.png diff --git a/resources/assets/nei/textures/gui/potion.png b/src/main/resources/assets/nei/textures/gui/potion.png similarity index 100% rename from resources/assets/nei/textures/gui/potion.png rename to src/main/resources/assets/nei/textures/gui/potion.png diff --git a/resources/assets/nei/textures/gui/recipebg.png b/src/main/resources/assets/nei/textures/gui/recipebg.png similarity index 100% rename from resources/assets/nei/textures/gui/recipebg.png rename to src/main/resources/assets/nei/textures/gui/recipebg.png diff --git a/resources/assets/nei/textures/nei_sprites.png b/src/main/resources/assets/nei/textures/nei_sprites.png similarity index 100% rename from resources/assets/nei/textures/nei_sprites.png rename to src/main/resources/assets/nei/textures/nei_sprites.png diff --git a/resources/assets/nei/textures/nei_tabbed_sprites.png b/src/main/resources/assets/nei/textures/nei_tabbed_sprites.png similarity index 100% rename from resources/assets/nei/textures/nei_tabbed_sprites.png rename to src/main/resources/assets/nei/textures/nei_tabbed_sprites.png diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info new file mode 100644 index 000000000..c190f4cc1 --- /dev/null +++ b/src/main/resources/mcmod.info @@ -0,0 +1,19 @@ +[ + { + "modid": "${modId}", + "name": "${modName}", + "version": "${modVersion}", + "mcversion": "${minecraftVersion}", + "description": "Recipe Viewer, Inventory Manager, Item Spawner, Cheats and more; GTNH Version + + + + +Supporters: EmuCraft Team, Victor Zimmer, lexi85, Ace_Trainer_Tullius, Bacon_Donut, Iarinu", + "url": "http://www.minecraftforum.net/topic/909223", + "credits": "Alexandria - original idea", + "license": "LGPL-3.0", + "authorList": [ "ChickenBones", "mitchej123" ], + "dependencies": [ "CodeChickenCore" ] + } +] \ No newline at end of file