From da25ed6addc3e72165b4ae2d7646c1c1c33f73de Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Thu, 9 Apr 2015 23:17:30 +0100 Subject: [PATCH] Added basic mod :) --- .gitignore | 12 ++ LICENSE.md | 93 ++++++++++ build.gradle | 149 ++++++++++++++++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49875 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 ++++++++++++++++++ gradlew.bat | 90 ++++++++++ src/main/java/techreborn/Core.java | 29 ++++ .../blocks/BlockThermalGenerator.java | 56 ++++++ .../java/techreborn/client/GuiHandler.java | 29 ++++ src/main/java/techreborn/client/SlotFake.java | 37 ++++ .../java/techreborn/client/SlotOutput.java | 16 ++ .../container/ContainerThermalGenerator.java | 43 +++++ .../client/gui/GuiThermalGenerator.java | 35 ++++ .../tiles/TileThermalGenerator.java | 39 +++++ .../blocks/ThermalGenerator_other.png | Bin 0 -> 15214 bytes .../textures/blocks/ThermalGenerator_top.png | Bin 0 -> 15022 bytes .../textures/gui/ThermalGenerator.png | Bin 0 -> 3800 bytes 18 files changed, 798 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE.md create mode 100644 build.gradle create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 src/main/java/techreborn/Core.java create mode 100644 src/main/java/techreborn/blocks/BlockThermalGenerator.java create mode 100644 src/main/java/techreborn/client/GuiHandler.java create mode 100644 src/main/java/techreborn/client/SlotFake.java create mode 100644 src/main/java/techreborn/client/SlotOutput.java create mode 100644 src/main/java/techreborn/client/container/ContainerThermalGenerator.java create mode 100644 src/main/java/techreborn/client/gui/GuiThermalGenerator.java create mode 100644 src/main/java/techreborn/tiles/TileThermalGenerator.java create mode 100644 src/main/resources/assets/techreborn/textures/blocks/ThermalGenerator_other.png create mode 100644 src/main/resources/assets/techreborn/textures/blocks/ThermalGenerator_top.png create mode 100644 src/main/resources/assets/techreborn/textures/gui/ThermalGenerator.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..4e7ae44d2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +/bin +/out +/run +/.gradle +*.iml +/.metadata +/.settings +./classpath +/dep + +TechReborn.iws +TechReborn.ipr \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 000000000..3cbf2c60f --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,93 @@ +Minecraft Mod Public License +============================ + +Version 1.0.1 + +0. Definitions +-------------- + +Minecraft: Denotes a copy of the Minecraft game licensed by Mojang AB + +User: Anybody that interacts with the software in one or more of the following ways: + - play + - decompile + - recompile or compile + - modify + - distribute + +Mod: The mod code designated by the present license, in source form, binary +form, as obtained standalone, as part of a wider distribution or resulting from +the compilation of the original or modified sources. + +Dependency: Code required for the mod to work properly. This includes +dependencies required to compile the code as well as any file or modification +that is explicitely or implicitely required for the mod to be working. + +Modpack: A collection of mods and configuration files pre-tested to work when installed together. + + +1. Scope +-------- + +The present license is granted to any user of the mod. As a prerequisite, to play +a user must own a legally acquired copy of Minecraft + +2. Liability +------------ + +This mod is provided 'as is' with no warranties, implied or otherwise. The owner +of this mod takes no responsibility for any damages incurred from the use of +this mod. This mod alters fundamental parts of the Minecraft game, parts of +Minecraft may not work with this mod installed. All damages caused from the use +or misuse of this mod fall on the user. + +The Mod author is not responsible for dragons, trolls or pirate ninja attacks, all mythological creature slaying is the responsibility of the user. Mod author cannot be held responsible for damages from mythological creatures, weather, acts of God, or cats. (Especially cats) + +If you download this mod as part of a modpack you should be aware that modpacks often make non-default changes to the mod and the pack may have issues not present in the standalone mod. The author cannot be held responsible for the incompetency or sadism of a modpack creator. + + +3. Play rights +-------------- + +The user is allowed to install this mod on a client or a server and to play +without restriction if they own a legally acquired copy of Minecraft. + +4. Modification rights +---------------------- + +The user has the right to decompile the source code, look at either the +decompiled version or the original source code, and to modify it. + +5. Derivation rights +-------------------- + +The user has the rights to derive code from this mod, that is to say to +write code that extends or instanciate the mod classes or interfaces, refer to +its objects, or calls its functions. This code is known as "derived" code, and +can be licensed under a license different from this mod. + +6. Distribution of original or modified copy rights +--------------------------------------------------- + +Is subject to distribution rights this entire mod in its various forms. This +include: + - original binary or source forms of this mod files + - modified versions of these binaries or source files, as well as binaries + resulting from source modifications + - patch to its source or binary files + - any copy of a portion of its binary source files + +The user is allowed to redistribute this mod partially, in totality, or +included in a modpack, providing the distribution is not limited by payment or donation ammount. +Distribution even in a modpack must be free and accesible to any valid user of the original mod. + +When distributing binary files, the user must provide means to obtain its +entire set of sources or modified sources at no costs. + +All distributions of this mod must remain licensed under the MMPL. + +This license is seperate from the license of any mod it depends on and does not invalidate any license requirments of the dependency. + +Modified version of binaries and sources, as well as files containing sections +copied from this mod, should be distributed under the terms of the present +license. \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 000000000..d846d6624 --- /dev/null +++ b/build.gradle @@ -0,0 +1,149 @@ +buildscript { + repositories { + mavenCentral() + maven { + name = "forge" + url = "http://files.minecraftforge.net/maven" + } + maven { + name = "sonatype" + url = "https://oss.sonatype.org/content/repositories/snapshots/" + } + } + dependencies { + classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' + } +} + +apply plugin: 'forge' +apply plugin: 'maven' +apply plugin: 'maven-publish' + +def ENV = System.getenv() +if (ENV.BUILD_NUMBER) { + version = "0.1." + "${System.getenv().BUILD_NUMBER}" +} else { + version = "0.1.BUILD" +} + +minecraft { + version = "1.7.10-10.13.3.1358-1.7.10" + replace "@MODVERSION@", project.version + replaceIn "Core.java" +} + +group = 'TechReborn' + +task deleteOldArtifacts(type: Delete) { + delete 'build/libs' +} + +classes.dependsOn deleteOldArtifacts + + +def grabDep(name, url) { + ant.get(src: url, dest: 'dep') + file("dep/" + url.substring(url.lastIndexOf("/"))).renameTo(file("dep/" + name + ".jar")) +} + +dependencies { + def f = new File('dep/') + if (f.exists()) { + f.delete() + } + f.mkdirs() + if (!f.exists()) { + f.mkdir() + } + println(" Downloading dependencies!") + grabDep('industrialcraft-2-2.2.712-experimental-dev.jar', 'http://ic2api.player.to:8080/job/IC2_experimental/712/artifact/build/libs/industrialcraft-2-2.2.712-experimental-dev.jar') + println(" Adding dependencies!") + compile files("dep/industrialcraft-2-2.2.712-experimental-dev.jar") + println(" Finished adding dependencies!") +} + +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 '*.info' + + // replace version and mcversion + expand 'version':project.version, 'mcversion':project.minecraft.version + } + + // copy everything else, thats not the mcmod.info + from(sourceSets.main.resources.srcDirs) { + exclude '**/*.info' + } + } + +task sourceJar(type: Jar) { + from sourceSets.main.allSource + appendix = 'src' + classifier = 'src' +} + +task deobfJar(type: Jar) { + from sourceSets.main.output + appendix = 'dev' + exclude "**/*.psd" + classifier = 'dev' +} + +jar { + exclude "**/*.psd" + appendix = 'universal' + classifier = 'universal' +} + +artifacts { + archives sourceJar + archives deobfJar +} + +uploadArchives { + repositories { + mavenDeployer { + repository(url: "file:///var/www/maven/") + pom { + groupId = "TechReborn" + version = project.version + artifactId = project.archivesBaseName + project { + name project.archivesBaseName + packaging 'jar' + description 'TechReborn' + url 'https://github.com/TechReborn/TechReborn' + scm { + url 'https://github.com/TechReborn/TechReborn' + connection 'scm:git:git@github.com:TechReborn/TechReborn.git' + developerConnection 'scm:git:git@github.com:TechReborn/TechReborn.git' + } + issueManagement { + system 'github' + url 'https://github.com/TechReborn/TechReborn/issues' + } + licenses { + license { + name 'License' + url 'https://github.com/TechReborn/TechReborn/blob/master/LICENSE' + distribution 'repo' + } + } + developers { + developer { + id 'modmuss50' + name 'modmuss50' + roles { role 'developer' } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..a7634b071cb255e91a4572934e55b8cd8877b3e4 GIT binary patch literal 49875 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 DCvKB) literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..baf39e469 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Sat Nov 30 13:07:41 MST 2013 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip diff --git a/gradlew b/gradlew new file mode 100644 index 000000000..91a7e269e --- /dev/null +++ b/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 000000000..8a0b282aa --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/java/techreborn/Core.java b/src/main/java/techreborn/Core.java new file mode 100644 index 000000000..cad270a6f --- /dev/null +++ b/src/main/java/techreborn/Core.java @@ -0,0 +1,29 @@ +package techreborn; + +import cpw.mods.fml.common.Mod; +import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.block.Block; +import techreborn.blocks.BlockThermalGenerator; +import techreborn.client.GuiHandler; +import techreborn.tiles.TileThermalGenerator; + +@Mod(modid = "techreborn", name = "TechReborn", version = "@MODVERSION@") +public class Core { + + public static Block thermalGenerator; + + @Mod.Instance + public static Core INSTANCE; + + @Mod.EventHandler + public void init(FMLPreInitializationEvent event){ + thermalGenerator = new BlockThermalGenerator().setBlockName("techreborn.thermalGenerator").setBlockTextureName("techreborn:ThermalGenerator_other"); + GameRegistry.registerBlock(thermalGenerator, "techreborn.thermalGenerator"); + GameRegistry.registerTileEntity(TileThermalGenerator.class, "TileThermalGenerator"); + + NetworkRegistry.INSTANCE.registerGuiHandler(INSTANCE, new GuiHandler()); + } + +} diff --git a/src/main/java/techreborn/blocks/BlockThermalGenerator.java b/src/main/java/techreborn/blocks/BlockThermalGenerator.java new file mode 100644 index 000000000..c1bdb3198 --- /dev/null +++ b/src/main/java/techreborn/blocks/BlockThermalGenerator.java @@ -0,0 +1,56 @@ +package techreborn.blocks; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import techreborn.Core; +import techreborn.client.GuiHandler; +import techreborn.tiles.TileThermalGenerator; + + +public class BlockThermalGenerator extends BlockContainer { + + @SideOnly(Side.CLIENT) + private IIcon top; + @SideOnly(Side.CLIENT) + private IIcon other; + + public BlockThermalGenerator() { + super(Material.iron); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister icon) { + top = icon.registerIcon("techreborn:ThermalGenerator_top"); + other = icon.registerIcon("techreborn:ThermalGenerator_other"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int currentSide, int meta) { + if (currentSide == 1) { + return top; + } else { + return other; + } + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileThermalGenerator(); + } + + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + player.openGui(Core.INSTANCE, GuiHandler.thermalGeneratorID, world, x, y, z); + return true; + } +} diff --git a/src/main/java/techreborn/client/GuiHandler.java b/src/main/java/techreborn/client/GuiHandler.java new file mode 100644 index 000000000..178042486 --- /dev/null +++ b/src/main/java/techreborn/client/GuiHandler.java @@ -0,0 +1,29 @@ +package techreborn.client; + + +import cpw.mods.fml.common.network.IGuiHandler; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import techreborn.client.container.ContainerThermalGenerator; +import techreborn.client.gui.GuiThermalGenerator; +import techreborn.tiles.TileThermalGenerator; + +public class GuiHandler implements IGuiHandler { + + public static final int thermalGeneratorID = 0; + @Override + public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { + if(ID == thermalGeneratorID){ + return new ContainerThermalGenerator((TileThermalGenerator) world.getTileEntity(x, y, z), player); + } + return null; + } + + @Override + public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { + if(ID == thermalGeneratorID){ + return new GuiThermalGenerator(player, (TileThermalGenerator)world.getTileEntity(x, y, z)); + } + return null; + } +} diff --git a/src/main/java/techreborn/client/SlotFake.java b/src/main/java/techreborn/client/SlotFake.java new file mode 100644 index 000000000..ad7a5e443 --- /dev/null +++ b/src/main/java/techreborn/client/SlotFake.java @@ -0,0 +1,37 @@ +package techreborn.client; + +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + + +public class SlotFake extends Slot { + + public boolean mCanInsertItem; + public boolean mCanStackItem; + public int mMaxStacksize = 127; + + + public SlotFake(IInventory par1iInventory, int par2, int par3, int par4, boolean aCanInsertItem, boolean aCanStackItem, int aMaxStacksize) { + super(par1iInventory, par2, par3, par4); + this.mCanInsertItem = aCanInsertItem; + this.mCanStackItem = aCanStackItem; + this.mMaxStacksize = aMaxStacksize; + } + + public boolean isItemValid(ItemStack par1ItemStack) { + return this.mCanInsertItem; + } + + public int getSlotStackLimit() { + return this.mMaxStacksize; + } + + public boolean getHasStack() { + return false; + } + + public ItemStack decrStackSize(int par1) { + return !this.mCanStackItem ? null : super.decrStackSize(par1); + } +} diff --git a/src/main/java/techreborn/client/SlotOutput.java b/src/main/java/techreborn/client/SlotOutput.java new file mode 100644 index 000000000..7729a9e4b --- /dev/null +++ b/src/main/java/techreborn/client/SlotOutput.java @@ -0,0 +1,16 @@ +package techreborn.client; + +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class SlotOutput extends Slot { + + public SlotOutput(IInventory par1iInventory, int par2, int par3, int par4) { + super(par1iInventory, par2, par3, par4); + } + + public boolean isItemValid(ItemStack par1ItemStack) { + return false; + } +} \ No newline at end of file diff --git a/src/main/java/techreborn/client/container/ContainerThermalGenerator.java b/src/main/java/techreborn/client/container/ContainerThermalGenerator.java new file mode 100644 index 000000000..de14be32b --- /dev/null +++ b/src/main/java/techreborn/client/container/ContainerThermalGenerator.java @@ -0,0 +1,43 @@ +package techreborn.client.container; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import techreborn.client.SlotFake; +import techreborn.client.SlotOutput; +import techreborn.tiles.TileThermalGenerator; + +public class ContainerThermalGenerator extends Container { + public TileThermalGenerator tileThermalGenerator; + public EntityPlayer player; + + public ContainerThermalGenerator(TileThermalGenerator tileThermalGenerator, EntityPlayer player) { + super(); + this.tileThermalGenerator = tileThermalGenerator; + this.player = player; + + this.addSlotToContainer(new Slot(player.inventory, 40, 80, 17)); + this.addSlotToContainer(new SlotOutput(player.inventory, 41, 80, 53)); + this.addSlotToContainer(new SlotFake(player.inventory, 42, 59, 42, false, false, 1)); + + int i; + + for (i = 0; i < 3; ++i) + { + for (int j = 0; j < 9; ++j) + { + this.addSlotToContainer(new Slot(player.inventory , j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for (i = 0; i < 9; ++i) + { + this.addSlotToContainer(new Slot(player.inventory , i, 8 + i * 18, 142)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return true; + } +} diff --git a/src/main/java/techreborn/client/gui/GuiThermalGenerator.java b/src/main/java/techreborn/client/gui/GuiThermalGenerator.java new file mode 100644 index 000000000..e8f6efcce --- /dev/null +++ b/src/main/java/techreborn/client/gui/GuiThermalGenerator.java @@ -0,0 +1,35 @@ +package techreborn.client.gui; + +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; +import techreborn.client.container.ContainerThermalGenerator; +import techreborn.tiles.TileThermalGenerator; + +public class GuiThermalGenerator extends GuiContainer { + + private static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/ThermalGenerator.png"); + + public GuiThermalGenerator(EntityPlayer player, TileThermalGenerator tile) { + super(new ContainerThermalGenerator(tile, player)); + this.xSize = 176; + this .ySize = 167; + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + this.mc.getTextureManager().bindTexture(texture); + int k = (this.width - this.xSize) / 2; + int l = (this.height - this.ySize) / 2; + this.drawTexturedModalRect(k, l , 0, 0, this.xSize, this.ySize); + } + + protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_) + { + this.fontRendererObj.drawString("Thermal Generator", 8, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory", new Object[0]), 8, this.ySize - 96 + 2, 4210752); + this.fontRendererObj.drawString("Liquid Amount", 10, 20, 16448255); + this.fontRendererObj.drawString("0", 10, 30, 16448255); + } +} diff --git a/src/main/java/techreborn/tiles/TileThermalGenerator.java b/src/main/java/techreborn/tiles/TileThermalGenerator.java new file mode 100644 index 000000000..26d369588 --- /dev/null +++ b/src/main/java/techreborn/tiles/TileThermalGenerator.java @@ -0,0 +1,39 @@ +package techreborn.tiles; + +import ic2.api.tile.IWrenchable; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import techreborn.Core; + +public class TileThermalGenerator extends TileEntity implements IWrenchable { + @Override + public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side) { + return false; + } + + @Override + public short getFacing() { + return 0; + } + + @Override + public void setFacing(short facing) { + + } + + @Override + public boolean wrenchCanRemove(EntityPlayer entityPlayer) { + return true; + } + + @Override + public float getWrenchDropRate() { + return 1.0F; + } + + @Override + public ItemStack getWrenchDrop(EntityPlayer entityPlayer) { + return new ItemStack(Core.thermalGenerator, 1); + } +} diff --git a/src/main/resources/assets/techreborn/textures/blocks/ThermalGenerator_other.png b/src/main/resources/assets/techreborn/textures/blocks/ThermalGenerator_other.png new file mode 100644 index 0000000000000000000000000000000000000000..d918562066bcef06fed2b7bffc19a10cbddb45a6 GIT binary patch literal 15214 zcmeI3ZEO@p7{|A0f}9csM8QB<4pc<-=e$1M(uqNcZmf)V(8gZ;T?3jBUyYrGczOiP85>$^7r3&?6zok={^i+}B=-Z0?gf3S*5DjH{DG5J zl?G?G5azZ2*6Yn7|zRZzD~DWbo)e)a3{x$99Iz}-xG-u zhH0-zmNc0tWBQ_TbVZE~PAW>d=hztGu-KxRmZZs`B^ZEfcd4o(*21#}fTy0R@2v+6 z@9_$ZFV7OCnkBMx)@W}E4Z0D-YYRa zj*}P=^9mkCQ0kPJPz+t+J}z{dp~500B`W&Zv;U_^fO-g-$O=*38 zw%k}A(_i`*5}WjdZiICO1U!CrqUH)O`~OFTwE^a-lsl8WpB>kR_K(_UJdw`zuXA(o zVtM zsGIc{AN+77Mb*r02{v|SzZj12tyeW(H}A}jWj!l4ynOe!Q`Nnlr$Y~K+PLw0dg0=w zj{An6YNH)J#;Grdl8(2}&pbqLd+76J7qUOUy5r2U-=|JH^8IhKXYigaR4U^%GF0%! z8JSI&KKZU=%E<%gTx{smc}GXq#bRC3yOB^0w|~i+nyn|>?tN=`MR51%g8h#y*uCq> z{NPJdJU>d*FBjgsc)Vv{w==SO`!)JZ~UHvR<#keN&X literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/techreborn/textures/blocks/ThermalGenerator_top.png b/src/main/resources/assets/techreborn/textures/blocks/ThermalGenerator_top.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8d8a0f71e5e16dbaa49017258643d793bb11d8 GIT binary patch literal 15022 zcmeI3OKclO7{>=tr4pzV3H70JS+*(4xNs;!f?2=)*&c!@2c)s&$2b4^ z{%sKJdxL!D`7o*fBGfcqunyv~+6FAR!i7jk*))t*qGg)#>l3Sr&zMmvAR5=A!|H zt>T)n==wxR#*&h$s0m>q6H}9FBCXB~nxe*KB`&LRN!4^EqpL}w`x0|A^q1jV6@9&M zr8^vrvSKX^JzbWY&1S3_kGXzTRx_E5tZ1^PNwkL)>^mWDNltK~W76{}kihh9FSK1p zhucSM(i30|u zeUHfNBye|qlPv8KC%iD}A}q7-?vuH(n)KVLT7~xT7UYYPjKk^CD*OzI#ssTyLw@9QFwaOb}Y9U zJY&eP_h6|9Mx=m4lB1=Vl$3;|WJ;Q*YYTdEVNOwXMHw>b^aLJ7TJ{zW@o`*6`a&Pq zvMc+?avAg-^(Yqg6(W0I9Zj?O)1+m@cLC~7*RYLbq$RARR4HYdB%WDF zs8&4Pp5$oyn03K5ccU8WT3ggQg|#xqSd}X2N?D305{i^bq~nsNRVr~xv|KJHde%ef zW7b!Fn;t^AKGY|=`hPma1e>v;mhFI+&i+tI(ZXsUGaKZk(bk?&x7){shy8#=yD%&E zwqgH#=^r0aPJ1`&*o+REoEgeupFT#jMjTebcdXjI zrkezAC2V4!+ zYJEjX9KNM+}@L_A&<4e{#(%=ukW_|FK7yV$!hf3O&ykD>NY!dSca*C%oiLx z%xT@xK=V*m^e5SYu|eB&n_o-<+uP4cF1wD z`2dyU0zlXy$HnFYRE`S(VTT+Sn-5SqE&zlba$IaaK;^gq5O&CMvH1X%;{rg~A;-n$ z15}O+0AYt57n=`IIW7Q%9dcZ3K0xKT01$S_ak2RTmE!_H*dfQo<^xoY3jkq<92c7p zP&qCDgdK8RY(7BcxBw7#$Z@gx0F~ncK-eM2#pVN4jtc-`ha4B14^TNS0E8WKTx>o- z<+uP4cF1wD`2dyU0zlXy$HnFYRE`S(VTVjyGlQozi9;XFY|>{i5AQsFl0LsFn9J)$ zgbpqubp2I??)^!>e?n+iLFn!^g!Fe1I_tjm;;k#R@AgU|Uuu0@uK#@36i$3XA7Z%i z59xfB(nLPetSA53%ayGoRo4{qXP`_t)>fyz$lM+0#$tAIcwX v)z2MWpOfCdb@BQ0uU&n4zVLyOMvtP@kEd&I&)xoz4uV#eRtq0rzV^yr`d>XF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/techreborn/textures/gui/ThermalGenerator.png b/src/main/resources/assets/techreborn/textures/gui/ThermalGenerator.png new file mode 100644 index 0000000000000000000000000000000000000000..673d8b764225e5089c0af5be4c3bb1c515f382fa GIT binary patch literal 3800 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 k9H?pBIO6T5cLmH7xHGxSd#cu_!