diff --git a/.gitignore b/.gitignore index a6d84602f..7b742a5dd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,23 @@ -eclipse/ -build/ -*.iml -*.iws +# eclipse +bin +*.launch +.settings +.metadata +.classpath +.project + +# idea +out *.ipr -.gradle/ -libs/ -out/ \ No newline at end of file +*.iws +*.iml +.idea + +# gradle +build + +# other +eclipse +run +libs +classes diff --git a/README.md b/README.md index e381a3a2b..c49784837 100644 --- a/README.md +++ b/README.md @@ -10,25 +10,14 @@ Setup Workspace git clone [git-repo-url] ``` -Download [CodeChickenCore-1.7.2-1.0.0-dev][1], [NotEnoughItems-1.7.2-1.0.1-dev][1] & [Waila-1.5.2a_1.7.2][2] +If you don't have [Gradle][1] installed on your computer you can use `gradlew` or `gradlew.bat` instead -Add a folder called `libs`, in the folder put the three downloaded `.jar` files. +For help setting up a ForgeGradle workspace, go to this [forum page][2]. -If you don't have [Gradle][3] installed on your computer you can use `gradlew` or `gradlew.bat` instead +How to install it is a bit different depending on what IDE you are using. -For help setting up a ForgeGradle workspace, go to this [forum page][4]. +Instructions on how to install is in [README.txt][3] -##### Installing for Intellij IDEA -```sh -gradle setupDecompWorkspace idea -``` - -##### Installing for Eclipse -```sh -gradle setupDecompWorkspace eclipse -``` - -[1]:http://www.chickenbones.craftsaddle.org/Files/New_Versions/links.php -[2]:http://www.minecraftforum.net/topic/1846244-172- -[3]:http://www.gradle.org/ -[4]:http://www.minecraftforge.net/forum/index.php/topic,14048.0.html +[1]:http://www.gradle.org/ +[2]:http://www.minecraftforge.net/forum/index.php/topic,14048.0.html +[3]:README.txt diff --git a/README.txt b/README.txt new file mode 100644 index 000000000..b45931f43 --- /dev/null +++ b/README.txt @@ -0,0 +1,59 @@ +------------------------------------------- +Source installation information for modders +------------------------------------------- +This code follows the Minecraft Forge installation methodology. It will apply +some small patches to the vanilla MCP source code, giving you and it access +to some of the data and functions you need to build a successful mod. + +Note also that the patches are built against "unrenamed" MCP source code (aka +srgnames) - this means that you will not be able to read them directly against +normal code. + +Source pack installation information: + +Standalone source installation +============================== + +Step 1: Open your command-line and browse to the folder where you extracted the zip file. + +Step 2: Once you have a command window up in the folder that the downloaded material was placed, type: + +Windows: "gradlew setupDecompWorkspace" +Linux/Mac OS: "./gradlew setupDecompWorkspace" + +Step 3: After all that finished, you're left with a choice. +For eclipse, run "gradlew eclipse" (./gradlew eclipse if you are on Mac/Linux) + +If you preffer to use IntelliJ, steps are a little different. +1. Open IDEA, and import project. +2. Select your build.gradle file and have it import. +3. Once it's finished you must close IntelliJ and run the following command: + +"gradlew genIntellijRuns" (./gradlew genIntellijRuns if you are on Mac/Linux) + +Step 4: The final step is to open Eclipse and switch your workspace to /eclipse/ (if you use IDEA, it should automatically start on your project) + +If at any point you are missing libraries in your IDE, or you've run into problems you can run "gradlew --refresh-dependencies" to refresh the local cache. "gradlew clean" to reset everything {this does not effect your code} and then start the processs again. + +Should it still not work, +Refer to #ForgeGradle on EsperNet for more information about the gradle environment. + +Tip: +If you do not care about seeing Minecraft's source code you can replace "setupDecompWorkspace" with one of the following: +"setupDevWorkspace": Will patch, deobfusicated, and gather required assets to run minecraft, but will not generated human readable source code. +"setupCIWorkspace": Same as Dev but will not download any assets. This is useful in build servers as it is the fastest because it does the least work. + +Tip: +When using Decomp workspace, the Minecraft source code is NOT added to your workspace in a editable way. Minecraft is treated like a normal Library. Sources are there for documentation and research purposes and usually can be accessed under the 'referenced libraries' section of your IDE. + +Forge source installation +========================= +MinecraftForge ships with this code and installs it as part of the forge +installation process, no further action is required on your part. + +LexManos' Install Video +======================= +https://www.youtube.com/watch?v=8VEdtQLuLO0&feature=youtu.be + +For more details update more often refer to the Forge Forums: +http://www.minecraftforge.net/forum/index.php/topic,14048.0.html diff --git a/build.gradle b/build.gradle index 8c82d7b44..b1473b903 100644 --- a/build.gradle +++ b/build.gradle @@ -1,29 +1,75 @@ + +// For those who want the bleeding edge buildscript { repositories { - mavenCentral() + jcenter() 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' + classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT' } } +apply plugin: 'net.minecraftforge.gradle.forge' -apply plugin: 'forge' +/* +// for people who want stable - not yet functional for MC 1.8.9 - we require the forgegradle 2.1 snapshot +plugins { + id "net.minecraftforge.gradle.forge" version "2.0.1" +} +*/ -version = "A92" +repositories { + maven { // WAILA + name 'Prof. Mobius' + url 'http://mobiusstrip.eu/maven' + } + maven { // NEI and friends + name 'Chickenbones' + url 'http://chickenbones.net/maven/' + } +} + +version = "A94" group= "vswe.stevesfactory" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "StevesFactoryManager" minecraft { - version = "1.7.10-10.13.0.1188" - assetDir = "eclipse/assets" + version = "1.8.9-11.15.1.1722" + runDir = "run" + + // the mappings can be changed at any time, and must be in the following format. + // snapshot_YYYYMMDD snapshot are built nightly. + // stable_# stables are built at the discretion of the MCP team. + // Use non-default mappings at your own risk. they may not always work. + // simply re-run your setup task after changing the mappings to update your workspace. + mappings = "stable_20" +} + +dependencies { + // you may put jars on which you depend on in ./libs + // or you may define them like so.. + //compile "some.group:artifact:version:classifier" + //compile "some.group:artifact:version" + + // real examples + //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env + //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env + + // the 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. + //provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' + + // the deobf configurations: 'deobfCompile' and 'deobfProvided' are the same as the normal compile and provided, + // except that these dependencies get remapped to your current MCP mappings + //deobfCompile 'com.mod-buildcraft:buildcraft:6.0.8:dev' + //deobfProvided 'com.mod-buildcraft:buildcraft:6.0.8:dev' + + // for more info... + // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html + // http://www.gradle.org/docs/current/userguide/dependency_management.html + compile 'mcp.mobius.waila:Waila:1.6.0-B3_1.8.8:dev' } processResources @@ -35,13 +81,13 @@ processResources // replace stuff in mcmod.info, nothing else from(sourceSets.main.resources.srcDirs) { include 'mcmod.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 'mcmod.info' } -} +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 3c7abdf12..30d399d8d 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f2d31dc27..9397848f1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Jun 11 01:18:37 CEST 2014 +#Mon Sep 14 12:28:28 PDT 2015 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.7-bin.zip diff --git a/logs/latest.log b/logs/latest.log deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/main/java/vswe/stevesfactory/GeneratedInfo.java b/src/main/java/vswe/stevesfactory/GeneratedInfo.java index 9ebba69a4..25c3ffd2a 100644 --- a/src/main/java/vswe/stevesfactory/GeneratedInfo.java +++ b/src/main/java/vswe/stevesfactory/GeneratedInfo.java @@ -2,6 +2,6 @@ public class GeneratedInfo { - public static final String version = /*@v*/"A92"; + public static final String version = /*@v*/"A94"; public static final boolean inDev = /*@d*/false; } diff --git a/src/main/java/vswe/stevesfactory/GuiHandler.java b/src/main/java/vswe/stevesfactory/GuiHandler.java index 96b0ef0d2..140d0f187 100644 --- a/src/main/java/vswe/stevesfactory/GuiHandler.java +++ b/src/main/java/vswe/stevesfactory/GuiHandler.java @@ -1,9 +1,10 @@ package vswe.stevesfactory; -import cpw.mods.fml.common.network.IGuiHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.common.network.IGuiHandler; import vswe.stevesfactory.blocks.ITileEntityInterface; @@ -14,7 +15,7 @@ public GuiHandler() { @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { - TileEntity te = world.getTileEntity(x, y, z); + TileEntity te = world.getTileEntity(new BlockPos(x, y, z)); if (te != null && te instanceof ITileEntityInterface) { return ((ITileEntityInterface)te).getContainer(te, player.inventory); @@ -25,7 +26,7 @@ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { - TileEntity te = world.getTileEntity(x, y, z); + TileEntity te = world.getTileEntity(new BlockPos(x, y, z)); if (te != null && te instanceof ITileEntityInterface) { return ((ITileEntityInterface)te).getGui(te, player.inventory); diff --git a/src/main/java/vswe/stevesfactory/Localization.java b/src/main/java/vswe/stevesfactory/Localization.java index e18011808..81f500266 100644 --- a/src/main/java/vswe/stevesfactory/Localization.java +++ b/src/main/java/vswe/stevesfactory/Localization.java @@ -1,6 +1,7 @@ package vswe.stevesfactory; +import net.minecraft.util.EnumFacing; import net.minecraft.util.StatCollector; public enum Localization { @@ -14,12 +15,12 @@ public enum Localization { CONDITION_LONG, FLOW_CONTROL_SHORT, FLOW_CONTROL_LONG, - LIQUID_INPUT_SHORT, - LIQUID_INPUT_LONG, - LIQUID_OUTPUT_SHORT, - LIQUID_OUTPUT_LONG, - LIQUID_CONDITION_SHORT, - LIQUID_CONDITION_LONG, + FLUID_INPUT_SHORT, + FLUID_INPUT_LONG, + FLUID_OUTPUT_SHORT, + FLUID_OUTPUT_LONG, + FLUID_CONDITION_SHORT, + FLUID_CONDITION_LONG, REDSTONE_EMITTER_SHORT, REDSTONE_EMITTER_LONG, REDSTONE_CONDITION_SHORT, @@ -105,7 +106,7 @@ public enum Localization { NO_CONDITION_ERROR, BUCKETS, MILLI_BUCKETS, - LIQUIDS_MENU, + FLUIDS_MENU, USE_ALL, REVERSED, LOOP_ORDER_MENU, @@ -191,8 +192,8 @@ public enum Localization { VARIABLE_GREEN, VARIABLE_RED, VARIABLE_BLACK, - NO_LIQUID_SELECTED, - CHANGE_LIQUID, + NO_FLUID_SELECTED, + CHANGE_FLUID, EDIT_SETTING, NO_ITEM_SELECTED, CHANGE_ITEM, @@ -378,17 +379,17 @@ public String toString() { return StatCollector.translateToLocal("gui." + StevesFactoryManager.UNLOCALIZED_START + name); } - public static Localization getForgeDirectionLocalization(int id) { - switch (id) { - case 0: + public static Localization getDirectionLocalization(EnumFacing facing) { + switch (facing) { + case DOWN: return DOWN; - case 1: + case UP: return UP; - case 2: + case NORTH: return NORTH; - case 3: + case SOUTH: return SOUTH; - case 4: + case WEST: return WEST; default: return EAST; diff --git a/src/main/java/vswe/stevesfactory/StevesFactoryManager.java b/src/main/java/vswe/stevesfactory/StevesFactoryManager.java index dd6f3fb03..8712ba206 100644 --- a/src/main/java/vswe/stevesfactory/StevesFactoryManager.java +++ b/src/main/java/vswe/stevesfactory/StevesFactoryManager.java @@ -1,24 +1,25 @@ package vswe.stevesfactory; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.SidedProxy; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLInterModComms; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.network.FMLEventChannel; -import cpw.mods.fml.common.network.NetworkRegistry; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.SidedProxy; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLInterModComms; +import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.network.FMLEventChannel; +import net.minecraftforge.fml.common.network.NetworkRegistry; import vswe.stevesfactory.blocks.ModBlocks; import vswe.stevesfactory.components.ModItemHelper; import vswe.stevesfactory.network.FileHelper; import vswe.stevesfactory.network.PacketEventHandler; import vswe.stevesfactory.proxy.CommonProxy; -@Mod(modid = "StevesFactoryManager", name = "Steve's Factory Manager", version = GeneratedInfo.version) +@Mod(modid = StevesFactoryManager.MODID, name = "Steve's Factory Manager", version = GeneratedInfo.version) public class StevesFactoryManager { - public static final String RESOURCE_LOCATION = "stevesfactory"; + public static final String MODID = "StevesFactoryManager"; + public static final String RESOURCE_LOCATION = "stevesfactorymanager"; public static final String CHANNEL = "FactoryManager"; public static final String UNLOCALIZED_START = "sfm."; @@ -27,7 +28,7 @@ public class StevesFactoryManager { @SidedProxy(clientSide = "vswe.stevesfactory.proxy.ClientProxy", serverSide = "vswe.stevesfactory.proxy.CommonProxy") public static CommonProxy proxy; - @Mod.Instance("StevesFactoryManager") + @Mod.Instance(MODID) public static StevesFactoryManager instance; @@ -35,22 +36,21 @@ public class StevesFactoryManager { public void preInit(FMLPreInitializationEvent event) { packetHandler = NetworkRegistry.INSTANCE.newEventDrivenChannel(CHANNEL); - FileHelper.setConfigDir(event.getModConfigurationDirectory()); - ModBlocks.init(); + + proxy.preInit(); + + FileHelper.setConfigDir(event.getModConfigurationDirectory()); } @Mod.EventHandler public void init(FMLInitializationEvent event) { - proxy.init(); - packetHandler.register(new PacketEventHandler()); ModBlocks.addRecipes(); //new ChatListener(); NetworkRegistry.INSTANCE.registerGuiHandler(this, new GuiHandler()); - FMLInterModComms.sendMessage("Waila", "register", "vswe.stevesfactory.waila.Provider.callbackRegister"); } diff --git a/src/main/java/vswe/stevesfactory/animation/AnimationController.java b/src/main/java/vswe/stevesfactory/animation/AnimationController.java index 8d9291e17..e2aa4a685 100644 --- a/src/main/java/vswe/stevesfactory/animation/AnimationController.java +++ b/src/main/java/vswe/stevesfactory/animation/AnimationController.java @@ -1,7 +1,6 @@ package vswe.stevesfactory.animation; -import com.sun.swing.internal.plaf.metal.resources.metal_it; import vswe.stevesfactory.blocks.TileEntityManager; import vswe.stevesfactory.components.*; diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockCable.java b/src/main/java/vswe/stevesfactory/blocks/BlockCable.java index eb7482803..c612432be 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockCable.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockCable.java @@ -1,12 +1,11 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.block.state.IBlockState; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; import net.minecraft.world.World; import vswe.stevesfactory.StevesFactoryManager; @@ -20,42 +19,36 @@ public BlockCable() { super(Material.iron); setCreativeTab(ModBlocks.creativeTab); setStepSound(soundTypeMetal); - setBlockName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_UNLOCALIZED_NAME); + setUnlocalizedName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_UNLOCALIZED_NAME); setHardness(0.4F); } - @SideOnly(Side.CLIENT) @Override - public void registerBlockIcons(IIconRegister register) { - blockIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable"); - } - - @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); + public void onBlockAdded(World world, BlockPos pos, IBlockState state) { + super.onBlockAdded(world, pos, state); - updateInventories(world, x, y, z); + updateInventories(world, pos, state); } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - super.onNeighborBlockChange(world, x, y, z, block); + public void onNeighborBlockChange(World world, BlockPos pos, IBlockState state, Block block) { + super.onNeighborBlockChange(world, pos, state, block); - updateInventories(world, x, y, z); + updateInventories(world, pos, state); } @Override - public void breakBlock(World world, int x, int y, int z, Block block, int meta) { - super.breakBlock(world, x, y, z, block, meta); + public void breakBlock(World world, BlockPos pos,IBlockState state) { + super.breakBlock(world, pos, state); - updateInventories(world, x, y, z); + updateInventories(world, pos, state); } - public void updateInventories(World world, int blockX, int blockY, int blockZ) { + public void updateInventories(World world, BlockPos pos, IBlockState state) { List visited = new ArrayList(); Queue queue = new PriorityQueue(); - WorldCoordinate start = new WorldCoordinate(blockX, blockY, blockZ, 0); + WorldCoordinate start = new WorldCoordinate(pos.getX(), pos.getY(), pos.getZ(), 0); queue.add(start); visited.add(start); @@ -71,14 +64,14 @@ public void updateInventories(World world, int blockX, int blockY, int blockZ) { if (!visited.contains(target)) { visited.add(target); //if (element.getDepth() < TileEntityManager.MAX_CABLE_LENGTH){ - Block block = world.getBlock(target.getX(), target.getY(), target.getZ()); - int meta = world.getBlockMetadata(target.getX(), target.getY(), target.getZ()); - if (block == ModBlocks.blockManager){ - TileEntity tileEntity = world.getTileEntity(target.getX(), target.getY(), target.getZ()); + IBlockState block = world.getBlockState(new BlockPos(x, y, z)); + int meta = block.getBlock().getMetaFromState(block); + if (block.getBlock() == ModBlocks.blockManager){ + TileEntity tileEntity = world.getTileEntity(new BlockPos(target.getX(), target.getY(), target.getZ())); if (tileEntity != null && tileEntity instanceof TileEntityManager) { ((TileEntityManager)tileEntity).updateInventories(); } - }else if (isCable(block, meta) /*&& target.getDepth() < TileEntityManager.MAX_CABLE_LENGTH*/) { + }else if (isCable(block.getBlock(), meta) /*&& target.getDepth() < TileEntityManager.MAX_CABLE_LENGTH*/) { queue.add(target); } //} @@ -87,11 +80,11 @@ public void updateInventories(World world, int blockX, int blockY, int blockZ) { } } } - } + } public boolean isCable(Block block, int meta) { diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockCableBUD.java b/src/main/java/vswe/stevesfactory/blocks/BlockCableBUD.java index 4f896c3ce..a08ed7f0f 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockCableBUD.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockCableBUD.java @@ -1,13 +1,12 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.block.state.IBlockState; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; import net.minecraft.world.World; import vswe.stevesfactory.StevesFactoryManager; @@ -16,7 +15,7 @@ public BlockCableBUD() { super(Material.iron); setCreativeTab(ModBlocks.creativeTab); setStepSound(soundTypeMetal); - setBlockName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_BUD_UNLOCALIZED_NAME); + setUnlocalizedName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_BUD_UNLOCALIZED_NAME); setHardness(1.2F); } @@ -25,15 +24,14 @@ public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityBUD(); } - @SideOnly(Side.CLIENT) @Override - public void registerBlockIcons(IIconRegister register) { - blockIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_bud"); + public int getRenderType() { + return 3; } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - TileEntityBUD bud = TileEntityCluster.getTileEntity(TileEntityBUD.class, world, x, y, z); + public void onNeighborBlockChange(World world, BlockPos pos, IBlockState state, Block block) { + TileEntityBUD bud = TileEntityCluster.getTileEntity(TileEntityBUD.class, world, pos); if (bud != null) { bud.onTrigger(); } diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockCableBreaker.java b/src/main/java/vswe/stevesfactory/blocks/BlockCableBreaker.java index d4a0ea883..0544fcaa8 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockCableBreaker.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockCableBreaker.java @@ -1,20 +1,21 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyDirection; +import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; import vswe.stevesfactory.StevesFactoryManager; //This is indeed not a subclass to the cable, you can't relay signals through this block @@ -23,7 +24,7 @@ public BlockCableBreaker() { super(Material.iron); setCreativeTab(ModBlocks.creativeTab); setStepSound(soundTypeMetal); - setBlockName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_BREAKER_UNLOCALIZED_NAME); + setUnlocalizedName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_BREAKER_UNLOCALIZED_NAME); setHardness(1.2F); } @@ -32,77 +33,68 @@ public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityBreaker(); } - @SideOnly(Side.CLIENT) - private IIcon doubleIIcon; - @SideOnly(Side.CLIENT) - private IIcon frontIIcon; - @SideOnly(Side.CLIENT) - private IIcon sideIIcon; + public static final IProperty FRONT = PropertyDirection.create("front"); + public static final IProperty DIRECTION = PropertyDirection.create("direction"); - - @SideOnly(Side.CLIENT) @Override - public void registerBlockIcons(IIconRegister register) { - blockIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_idle"); - doubleIIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_breaker"); - frontIIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_breaker_front"); - sideIIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_breaker_direction"); + public BlockState createBlockState() { + return new BlockState(this, DIRECTION, FRONT); } - @SideOnly(Side.CLIENT) - @Override - public IIcon getIcon(int side, int meta) { - return side == 3 ? doubleIIcon : blockIcon; + public static EnumFacing getSide(int meta) { + return EnumFacing.getFront(meta % EnumFacing.values().length); } - @SideOnly(Side.CLIENT) @Override - public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { - - TileEntityBreaker breaker = TileEntityCluster.getTileEntity(TileEntityBreaker.class, world, x, y, z); + public IBlockState getStateFromMeta(int meta) { + return getDefaultState().withProperty(FRONT, getSide(meta)).withProperty(DIRECTION, getSide(meta)); + } - if (breaker != null) { - int meta = breaker.getBlockMetadata() % ForgeDirection.VALID_DIRECTIONS.length; - int direction = breaker.getPlaceDirection(); + @Override + public int getMetaFromState(IBlockState state) { + return ((EnumFacing)state.getValue(FRONT)).getIndex(); + } - if (side == meta && side == direction) { - return doubleIIcon; - }else if(side == meta) { - return frontIIcon; - }else if(side == direction) { - return sideIIcon; - } + @Override + public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) { + TileEntityBreaker entityBreaker = (TileEntityBreaker) worldIn.getTileEntity(pos); + if (entityBreaker != null && entityBreaker.getPlaceDirection() != null) { + return state.withProperty(DIRECTION, entityBreaker.getPlaceDirection()).withProperty(FRONT, getSide(getMetaFromState(state))); } - - return blockIcon; + return state.withProperty(DIRECTION, getSide(getMetaFromState(state))).withProperty(FRONT, getSide(getMetaFromState(state))); } - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack item) { - int meta = BlockPistonBase.determineOrientation(world, x, y, z, entity); + public int getRenderType() { + return 3; + } - TileEntityBreaker breaker = TileEntityCluster.getTileEntity(TileEntityBreaker.class, world, x, y, z); - if (breaker != null) { - breaker.setMetaData(meta); - breaker.setPlaceDirection(meta); + @Override + public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase entity, ItemStack item) { + if (!world.isRemote) { + EnumFacing facing = BlockPistonBase.getFacingFromEntity(world, pos, entity); + + TileEntityBreaker breaker = TileEntityCluster.getTileEntity(TileEntityBreaker.class, world, pos); + if (breaker != null) { + breaker.setPlaceDirection(facing); + breaker.setMetaData(facing.getIndex()); + } } } @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) { + if (player.isSneaking()) { - side = ForgeDirection.VALID_DIRECTIONS[side].getOpposite().ordinal(); + side = side.getOpposite(); } - TileEntityBreaker breaker = TileEntityCluster.getTileEntity(TileEntityBreaker.class, world, x, y, z); + TileEntityBreaker breaker = TileEntityCluster.getTileEntity(TileEntityBreaker.class, world, pos); if (breaker != null && !breaker.isBlocked()) { breaker.setPlaceDirection(side); return true; } - return false; } } diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockCableCamouflages.java b/src/main/java/vswe/stevesfactory/blocks/BlockCableCamouflages.java index c587f40f0..c47701e16 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockCableCamouflages.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockCableCamouflages.java @@ -1,17 +1,20 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; +import net.minecraft.util.BlockPos; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -import vswe.stevesfactory.StevesFactoryManager; +import net.minecraftforge.common.property.ExtendedBlockState; +import net.minecraftforge.common.property.IExtendedBlockState; +import net.minecraftforge.common.property.IUnlistedProperty; import java.util.List; @@ -31,27 +34,42 @@ public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityCamouflage(); } - @SideOnly(Side.CLIENT) - private IIcon[] icons; + public static final UnlistedBlockPosProperty BLOCK_POS = new UnlistedBlockPosProperty("block_pos"); + public static final IProperty CAMO_TYPE = PropertyCamouflageType.create("camo_type"); - @SideOnly(Side.CLIENT) @Override - public void registerBlockIcons(IIconRegister register) { - icons = new IIcon[TileEntityCamouflage.CamouflageType.values().length]; - for (int i = 0; i < icons.length; i++) { - icons[i] = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":" + TileEntityCamouflage.CamouflageType.values()[i].getIcon()); - } + protected BlockState createBlockState() { + + IProperty [] listedProperties = new IProperty[]{CAMO_TYPE}; + IUnlistedProperty[] unlistedProperties = new IUnlistedProperty[]{BLOCK_POS}; + return new ExtendedBlockState(this, listedProperties, unlistedProperties); } - @SideOnly(Side.CLIENT) + @Override - public IIcon getIcon(int side, int meta) { - return getDefaultIcon(side, meta, meta); + public IBlockState getStateFromMeta(int meta) { + return getDefaultState().withProperty(CAMO_TYPE, TileEntityCamouflage.CamouflageType.getCamouflageType(meta)); } - @SideOnly(Side.CLIENT) @Override - protected IIcon getDefaultIcon(int side, int blockMeta, int camoMeta) { - return icons[camoMeta % icons.length]; + public int getMetaFromState(IBlockState state) { + + if (state.getValue(CAMO_TYPE) != null) { + return ((TileEntityCamouflage.CamouflageType)state.getValue(CAMO_TYPE)).ordinal(); + } + + return 0; + } + + @Override + public IBlockState getExtendedState(IBlockState state, IBlockAccess world, BlockPos pos) { + + TileEntityCamouflage tileEntity = (TileEntityCamouflage) world.getTileEntity(pos); + if (state instanceof IExtendedBlockState && tileEntity != null) { + + return ((IExtendedBlockState)state).withProperty(BLOCK_POS, pos); + } + + return state; } @Override @@ -66,13 +84,13 @@ public int getId(int meta) { } @Override - public int damageDropped(int meta) { - return meta; + public int damageDropped(IBlockState state) { + return state.getBlock().getMetaFromState(state); } @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack item) { - TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, world, x, y, z); + public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase entity, ItemStack item) { + TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, world, pos); if (camouflage != null) { camouflage.setMetaData(item.getItemDamage()); } diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockCableCluster.java b/src/main/java/vswe/stevesfactory/blocks/BlockCableCluster.java index 02c0ab755..50f01dabf 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockCableCluster.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockCableCluster.java @@ -1,11 +1,13 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyBool; +import net.minecraft.block.properties.PropertyDirection; +import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -13,12 +15,14 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import vswe.stevesfactory.StevesFactoryManager; +import net.minecraftforge.common.property.ExtendedBlockState; +import net.minecraftforge.common.property.IExtendedBlockState; +import net.minecraftforge.common.property.IUnlistedProperty; import java.util.ArrayList; import java.util.List; @@ -32,70 +36,70 @@ protected BlockCableCluster() { setHardness(2F); } + public static final IProperty FACING = PropertyDirection.create("facing"); + public static final IProperty ADVANCED = PropertyBool.create("advanced"); + @Override + protected BlockState createBlockState() { - @SideOnly(Side.CLIENT) - private IIcon sideIcon; - @SideOnly(Side.CLIENT) - private IIcon frontIcon; - @SideOnly(Side.CLIENT) - private IIcon sideIconAdv; - @SideOnly(Side.CLIENT) - private IIcon frontIconAdv; + IProperty [] listedProperties = new IProperty[]{ADVANCED, FACING}; + IUnlistedProperty[] unlistedProperties = new IUnlistedProperty[]{BlockCableCamouflages.BLOCK_POS}; + return new ExtendedBlockState(this, listedProperties, unlistedProperties); + } - @SideOnly(Side.CLIENT) @Override - public void registerBlockIcons(IIconRegister register) { - sideIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_cluster"); - frontIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_cluster_front"); - sideIconAdv = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_cluster_adv"); - frontIconAdv = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_cluster_adv_front"); + public IBlockState getStateFromMeta(int meta) { + return getDefaultState().withProperty(ADVANCED, isAdvanced(meta)).withProperty(FACING, getSide(meta)); } - @SideOnly(Side.CLIENT) @Override - public IIcon getIcon(int side, int meta) { - //pretend the meta is 3 - return getIconFromSideAndMeta(side, addAdvancedMeta(3, meta)); + public int getMetaFromState(IBlockState state) { + return addAdvancedMeta(((EnumFacing) state.getValue(FACING)).getIndex(), ((Boolean) state.getValue(ADVANCED)) ? 8 : 0); } - @SideOnly(Side.CLIENT) @Override - public IIcon getDefaultIcon(int side, int blockMeta, int camoMeta) { - return getIconFromSideAndMeta(side, blockMeta); + public IBlockState getExtendedState(IBlockState state, IBlockAccess world, BlockPos pos) { + + TileEntityCluster tileEntity = (TileEntityCluster) world.getTileEntity(pos); + if (state instanceof IExtendedBlockState && tileEntity != null) { + + return ((IExtendedBlockState)state).withProperty(BlockCableCamouflages.BLOCK_POS, pos); + } + + return state; } @Override - public void breakBlock(World world, int x, int y, int z, Block oldBlock, int oldMeta) { - ItemStack itemStack = getItemStack(world, x, y, z, oldMeta); + public void breakBlock(World world, BlockPos pos, IBlockState state) { + /*ItemStack itemStack = getItemStack(world, pos, state); if (itemStack != null) { - dropBlockAsItem(world, x, y, z, itemStack); - } + dropBlockAsItem(world, pos, itemStack, 0); + }*/ - super.breakBlock(world, x, y, z, oldBlock, oldMeta); + super.breakBlock(world, pos, state); - if (isAdvanced(world.getBlockMetadata(x, y, z))) { - ModBlocks.blockCable.updateInventories(world, x, y, z); + if (isAdvanced(state.getBlock().getMetaFromState(state))) { + ModBlocks.blockCable.updateInventories(world, pos, state); } } @Override - public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) { - ItemStack itemStack = getItemStack(world, x, y, z, world.getBlockMetadata(x, y, z)); + public ItemStack getPickBlock(MovingObjectPosition target, World world, BlockPos pos, EntityPlayer player) { + ItemStack itemStack = getItemStack(world, pos, world.getBlockState(pos)); if (itemStack != null) { return itemStack; } - return super.getPickBlock(target, world, x, y, z) ; + return super.getPickBlock(target, world, pos, player) ; } - private ItemStack getItemStack(World world, int x, int y, int z, int meta) { - TileEntity te = world.getTileEntity(x, y, z); + private ItemStack getItemStack(IBlockAccess world, BlockPos pos, IBlockState state) { + TileEntity te = world.getTileEntity(pos); if (te != null && te instanceof TileEntityCluster) { TileEntityCluster cluster = (TileEntityCluster)te; - ItemStack itemStack = new ItemStack(ModBlocks.blockCableCluster, 1, damageDropped(meta)); + ItemStack itemStack = new ItemStack(ModBlocks.blockCableCluster, 1, damageDropped(state)); NBTTagCompound compound = new NBTTagCompound(); itemStack.setTagCompound(compound); NBTTagCompound cable = new NBTTagCompound(); @@ -109,13 +113,11 @@ private ItemStack getItemStack(World world, int x, int y, int z, int meta) { @Override - public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { - return new ArrayList(); //TODO Drop items here, not sure how to though since the TE is gone. please help - } - - @SideOnly(Side.CLIENT) - private IIcon getIconFromSideAndMeta(int side, int meta) { - return side == getSideMeta(meta) % ForgeDirection.VALID_DIRECTIONS.length ? isAdvanced(meta) ? frontIconAdv : frontIcon : isAdvanced(meta) ? sideIconAdv : sideIcon; + public ArrayList getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { + ArrayList drop = new ArrayList(); + drop.add(getItemStack(world, pos, state)); + return drop; + //return new ArrayList(); //TODO Drop items here, not sure how to though since the TE is gone. please help } @Override @@ -123,8 +125,8 @@ public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityCluster(); } - private TileEntityCluster getTe(IBlockAccess world, int x, int y, int z) { - TileEntity te = world.getTileEntity(x, y, z); + private TileEntityCluster getTe(IBlockAccess world, BlockPos pos) { + TileEntity te = world.getTileEntity(pos); if (te != null && te instanceof TileEntityCluster) { return (TileEntityCluster)te; } @@ -132,35 +134,35 @@ private TileEntityCluster getTe(IBlockAccess world, int x, int y, int z) { } @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack itemStack) { - int meta = addAdvancedMeta(BlockPistonBase.determineOrientation(world, x, y, z, entity), itemStack.getItemDamage()); - world.setBlockMetadataWithNotify(x, y, z, meta, 2); + public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase entity, ItemStack itemStack) { + int meta = addAdvancedMeta(BlockPistonBase.getFacingFromEntity(world, pos, entity).getIndex(), itemStack.getItemDamage()); + world.setBlockState(pos, state.getBlock().getStateFromMeta(meta), 2); - TileEntityCluster cluster = getTe(world, x, y, z); + TileEntityCluster cluster = getTe(world, pos); if (cluster != null) { cluster.loadElements(itemStack); - cluster.onBlockPlacedBy(entity, itemStack); + cluster.onBlockPlacedBy(state, entity, itemStack); } } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - TileEntityCluster cluster = getTe(world, x, y, z); + public void onNeighborBlockChange(World world, BlockPos pos, IBlockState state, Block block) { + TileEntityCluster cluster = getTe(world, pos); if (cluster != null) { - cluster.onNeighborBlockChange(block); + cluster.onNeighborBlockChange(block, state); } - if (isAdvanced(world.getBlockMetadata(x, y, z))) { - ModBlocks.blockCable.updateInventories(world, x, y, z); + if (isAdvanced(state.getBlock().getMetaFromState(state))) { + ModBlocks.blockCable.updateInventories(world, pos, state); } } @Override - public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int side) { - TileEntityCluster cluster = getTe(world, x, y, z); + public boolean canConnectRedstone(IBlockAccess world, BlockPos pos, EnumFacing side) { + TileEntityCluster cluster = getTe(world, pos); if (cluster != null) { return cluster.canConnectRedstone(side); @@ -170,21 +172,21 @@ public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int s } @Override - public void onBlockAdded(World world, int x, int y, int z) { - TileEntityCluster cluster = getTe(world, x, y, z); + public void onBlockAdded(World world, BlockPos pos, IBlockState state) { + TileEntityCluster cluster = getTe(world, pos); if (cluster != null) { - cluster.onBlockAdded(); + cluster.onBlockAdded(state); } - if (isAdvanced(world.getBlockMetadata(x, y, z))) { - ModBlocks.blockCable.updateInventories(world, x, y, z); + if (isAdvanced(state.getBlock().getMetaFromState(state))) { + ModBlocks.blockCable.updateInventories(world, pos, state); } } @Override - public boolean shouldCheckWeakPower(IBlockAccess world, int x, int y, int z, int side) { - TileEntityCluster cluster = getTe(world, x, y, z); + public boolean shouldCheckWeakPower(IBlockAccess world, BlockPos pos, EnumFacing side) { + TileEntityCluster cluster = getTe(world, pos); if (cluster != null) { return cluster.shouldCheckWeakPower(side); @@ -194,33 +196,33 @@ public boolean shouldCheckWeakPower(IBlockAccess world, int x, int y, int z, int } @Override - public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) { - TileEntityCluster cluster = getTe(world, x, y, z); + public int getWeakPower(IBlockAccess world, BlockPos pos, IBlockState state, EnumFacing side) { + TileEntityCluster cluster = getTe(world, pos); if (cluster != null) { - return cluster.isProvidingWeakPower(side); + return cluster.isProvidingWeakPower(state, side); } return 0; } @Override - public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int side) { - TileEntityCluster cluster = getTe(world, x, y, z); + public int getStrongPower(IBlockAccess world, BlockPos pos, IBlockState state, EnumFacing side) { + TileEntityCluster cluster = getTe(world, pos); if (cluster != null) { - return cluster.isProvidingStrongPower(side); + return cluster.isProvidingStrongPower(state, side); } return 0; } @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - TileEntityCluster cluster = getTe(world, x, y, z); + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) { + TileEntityCluster cluster = getTe(world, pos); if (cluster != null) { - return cluster.onBlockActivated(player, side, hitX, hitY, hitZ); + return cluster.onBlockActivated(player, state, side, hitX, hitY, hitZ); } return false; @@ -242,6 +244,10 @@ public int getSideMeta(int meta) { return meta & 7; } + public EnumFacing getSide(int meta) { + return EnumFacing.getFront(getSideMeta(meta)); + } + private int addAdvancedMeta(int meta, int advancedMeta) { return meta | (advancedMeta & 8); } @@ -251,8 +257,8 @@ private int getAdvancedMeta(int meta) { } @Override - public int damageDropped(int meta) { - return getAdvancedMeta(meta); + public int damageDropped(IBlockState state) { + return getAdvancedMeta(state.getBlock().getMetaFromState(state)); } } diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockCableCreative.java b/src/main/java/vswe/stevesfactory/blocks/BlockCableCreative.java index eb9656141..1692a30aa 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockCableCreative.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockCableCreative.java @@ -1,10 +1,7 @@ package vswe.stevesfactory.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.tileentity.TileEntity; import net.minecraft.world.World; import vswe.stevesfactory.StevesFactoryManager; @@ -15,7 +12,7 @@ public BlockCableCreative() { super(Material.iron); setCreativeTab(ModBlocks.creativeTab); setStepSound(soundTypeMetal); - setBlockName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_CREATIVE_UNLOCALIZED_NAME); + setUnlocalizedName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_CREATIVE_UNLOCALIZED_NAME); setHardness(1.2F); } @@ -24,9 +21,9 @@ public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityCreative(); } - @SideOnly(Side.CLIENT) @Override - public void registerBlockIcons(IIconRegister register) { - blockIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_creative"); + public int getRenderType() { + return 3; } + } \ No newline at end of file diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockCableDirectionAdvanced.java b/src/main/java/vswe/stevesfactory/blocks/BlockCableDirectionAdvanced.java index 0b30807d4..e2634dbd8 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockCableDirectionAdvanced.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockCableDirectionAdvanced.java @@ -1,20 +1,20 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyBool; +import net.minecraft.block.properties.PropertyDirection; +import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import vswe.stevesfactory.StevesFactoryManager; import java.util.List; @@ -27,52 +27,34 @@ public BlockCableDirectionAdvanced() { setHardness(1.2F); } - @SideOnly(Side.CLIENT) - private IIcon activeIcon; - @SideOnly(Side.CLIENT) - private IIcon advancedActiveIcon; - @SideOnly(Side.CLIENT) - private IIcon inactiveIcon; - @SideOnly(Side.CLIENT) - private IIcon advancedInactiveIcon; + public static final IProperty FACING = PropertyDirection.create("facing"); + public static final IProperty ADVANCED = PropertyBool.create("advanced"); - @SideOnly(Side.CLIENT) @Override - public void registerBlockIcons(IIconRegister register) { - activeIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":" + getFrontTextureName(false)); - advancedActiveIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":" + getFrontTextureName(true)); - inactiveIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":" + getSideTextureName(false)); - advancedInactiveIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":" + getSideTextureName(true)); + protected BlockState createBlockState() { + return new BlockState(this, ADVANCED, FACING); } - protected abstract String getFrontTextureName(boolean isAdvanced); - protected abstract String getSideTextureName(boolean isAdvanced); - - @SideOnly(Side.CLIENT) @Override - public IIcon getIcon(int side, int meta) { - //pretend the meta is 3 - return getIconFromSideAndMeta(side, addAdvancedMeta(3, meta)); + public IBlockState getStateFromMeta(int meta) { + return getDefaultState().withProperty(ADVANCED, isAdvanced(meta)).withProperty(FACING, getSide(meta)); } - @SideOnly(Side.CLIENT) @Override - public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { - int meta = world.getBlockMetadata(x, y, z); - - return getIconFromSideAndMeta(side, meta); + public int getMetaFromState(IBlockState state) { + return addAdvancedMeta(((EnumFacing) state.getValue(FACING)).getIndex(), ((Boolean) state.getValue(ADVANCED)) ? 8 : 0); } - @SideOnly(Side.CLIENT) - private IIcon getIconFromSideAndMeta(int side, int meta) { - return side == (getSideMeta(meta) % ForgeDirection.VALID_DIRECTIONS.length) ? isAdvanced(meta) ? advancedActiveIcon : activeIcon : isAdvanced(meta) ? advancedInactiveIcon : inactiveIcon; + @Override + public int getRenderType() { + return 3; } @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack item) { - int meta = addAdvancedMeta(BlockPistonBase.determineOrientation(world, x, y, z, entity), item.getItemDamage()); + public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase entity, ItemStack item) { + int meta = addAdvancedMeta(BlockPistonBase.getFacingFromEntity(world, pos, entity).getIndex(), item.getItemDamage()); - TileEntityClusterElement element = TileEntityCluster.getTileEntity(getTeClass(), world, x, y, z); + TileEntityClusterElement element = TileEntityCluster.getTileEntity(getTeClass(), world, pos); if (element != null) { element.setMetaData(meta); } @@ -94,6 +76,10 @@ public int getSideMeta(int meta) { return meta & 7; } + public EnumFacing getSide(int meta) { + return EnumFacing.getFront(getSideMeta(meta)); + } + private int addAdvancedMeta(int meta, int advancedMeta) { return meta | (advancedMeta & 8); } @@ -103,8 +89,8 @@ private int getAdvancedMeta(int meta) { } @Override - public int damageDropped(int meta) { - return getAdvancedMeta(meta); + public int damageDropped(IBlockState state) { + return getAdvancedMeta(state.getBlock().getMetaFromState(state)); } } diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockCableInput.java b/src/main/java/vswe/stevesfactory/blocks/BlockCableInput.java index c850cbef5..9d6169ca2 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockCableInput.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockCableInput.java @@ -1,12 +1,12 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.block.state.IBlockState; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import vswe.stevesfactory.StevesFactoryManager; @@ -17,7 +17,7 @@ public BlockCableInput() { super(Material.iron); setCreativeTab(ModBlocks.creativeTab); setStepSound(soundTypeMetal); - setBlockName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_INPUT_UNLOCALIZED_NAME); + setUnlocalizedName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_INPUT_UNLOCALIZED_NAME); setHardness(1.2F); } @@ -26,33 +26,32 @@ public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityInput(); } - @SideOnly(Side.CLIENT) @Override - public void registerBlockIcons(IIconRegister register) { - blockIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_input"); + public int getRenderType() { + return 3; } @Override - public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int side) { + public boolean canConnectRedstone(IBlockAccess world, BlockPos pos, EnumFacing side) { return true; } @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); + public void onBlockAdded(World world, BlockPos pos, IBlockState state) { + super.onBlockAdded(world, pos, state); - updateRedstone(world, x, y, z); + updateRedstone(world, pos); } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - super.onNeighborBlockChange(world, x, y, z, block); + public void onNeighborBlockChange(World world, BlockPos pos, IBlockState state, Block block) { + super.onNeighborBlockChange(world, pos, state, block); - updateRedstone(world, x, y, z); + updateRedstone(world, pos); } - private void updateRedstone(World world, int x, int y, int z) { - TileEntityInput input = TileEntityCluster.getTileEntity(TileEntityInput.class, world, x, y, z); + private void updateRedstone(World world, BlockPos pos) { + TileEntityInput input = TileEntityCluster.getTileEntity(TileEntityInput.class, world, pos); if (input != null) { input.triggerRedstone(); } diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockCableIntake.java b/src/main/java/vswe/stevesfactory/blocks/BlockCableIntake.java index 72449253a..d3c660d09 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockCableIntake.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockCableIntake.java @@ -12,17 +12,6 @@ public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityIntake(); } - - @Override - protected String getFrontTextureName(boolean isAdvanced) { - return isAdvanced ? "cable_intake_out_instant" : "cable_intake_out"; - } - - @Override - protected String getSideTextureName(boolean isAdvanced) { - return isAdvanced ? "cable_intake_instant" : "cable_intake"; - } - @Override protected Class getTeClass() { return TileEntityIntake.class; diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockCableOutput.java b/src/main/java/vswe/stevesfactory/blocks/BlockCableOutput.java index 02ad60f4c..c09bd931a 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockCableOutput.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockCableOutput.java @@ -1,24 +1,30 @@ package vswe.stevesfactory.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.block.properties.IProperty; +import net.minecraft.block.properties.PropertyInteger; +import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.IBlockState; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.property.ExtendedBlockState; +import net.minecraftforge.common.property.IExtendedBlockState; +import net.minecraftforge.common.property.IUnlistedProperty; +import net.minecraftforge.common.property.Properties; import vswe.stevesfactory.StevesFactoryManager; //This is indeed not a subclass to the cable, you can't relay signals through this block -public class BlockCableOutput extends BlockContainer { +public class BlockCableOutput extends BlockContainer { public BlockCableOutput() { super(Material.iron); setCreativeTab(ModBlocks.creativeTab); setStepSound(soundTypeMetal); - setBlockName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_OUTPUT_UNLOCALIZED_NAME); + setUnlocalizedName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_OUTPUT_UNLOCALIZED_NAME); setHardness(1.2F); } @@ -27,39 +33,49 @@ public TileEntity createNewTileEntity(World world, int var2) { return new TileEntityOutput(); } - @SideOnly(Side.CLIENT) - private IIcon inactiveIcon; - @SideOnly(Side.CLIENT) - private IIcon weakIcon; - @SideOnly(Side.CLIENT) - private IIcon strongIcon; + public static final IUnlistedProperty STRONG_SIDES = new Properties.PropertyAdapter(PropertyInteger.create("strong_sides", 0, 63)); // 000000 -> 111111 + public static final IUnlistedProperty WEAK_SIDES = new Properties.PropertyAdapter(PropertyInteger.create("strong_sides", 0, 63)); // 000000 -> 111111 - @SideOnly(Side.CLIENT) @Override - public void registerBlockIcons(IIconRegister register) { - strongIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_output_strong"); - weakIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_output_weak"); - inactiveIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_idle"); - } - + protected BlockState createBlockState() { - @Override - public IIcon getIcon(int side, int meta) { - return weakIcon; + IProperty [] listedProperties = new IProperty[0]; + IUnlistedProperty[] unlistedProperties = new IUnlistedProperty[]{STRONG_SIDES, WEAK_SIDES}; + return new ExtendedBlockState(this, listedProperties, unlistedProperties); } @Override - public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { - TileEntityOutput te = getTileEntity(world, x, y, z); - if (te != null && te.getStrengthFromSide(side) > 0) { - return te.hasStrongSignalAtSide(side) ? strongIcon : weakIcon; + public IBlockState getExtendedState(IBlockState state, IBlockAccess world, BlockPos pos) { + + TileEntityOutput tileEntity = (TileEntityOutput) world.getTileEntity(pos); + if (state instanceof IExtendedBlockState && tileEntity != null) { + + int strongVals = 0; + int weakVals = 0; + for (EnumFacing facing: EnumFacing.values()) { + if (tileEntity.getStrengthFromSide(facing) > 0) { + if (tileEntity.hasStrongSignalAtSide(facing)) { + strongVals |= 1 << facing.getIndex(); + } else { + weakVals |= 1 << facing.getIndex(); + } + } + } + + return ((IExtendedBlockState)state).withProperty(STRONG_SIDES, strongVals).withProperty(WEAK_SIDES, weakVals); } - return inactiveIcon; } + return state; + } + + @Override + public int getRenderType() { + return 3; + } @Override - public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) { - TileEntityOutput te = getTileEntity(world, x, y, z); + public int getWeakPower(IBlockAccess world, BlockPos pos, IBlockState state, EnumFacing side) { + TileEntityOutput te = getTileEntity(world, pos); if (te != null) { return te.getStrengthFromOppositeSide(side); } @@ -67,8 +83,8 @@ public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int sid } @Override - public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int side) { - TileEntityOutput te = getTileEntity(world, x, y, z); + public int getStrongPower(IBlockAccess world, BlockPos pos, IBlockState state, EnumFacing side) { + TileEntityOutput te = getTileEntity(world, pos); if (te != null && te.hasStrongSignalAtOppositeSide(side)) { return te.getStrengthFromOppositeSide(side); } @@ -76,12 +92,12 @@ public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int s return 0; } - private TileEntityOutput getTileEntity(IBlockAccess world, int x, int y, int z) { - return TileEntityCluster.getTileEntity(TileEntityOutput.class, world, x, y, z); + private TileEntityOutput getTileEntity(IBlockAccess world, BlockPos pos) { + return TileEntityCluster.getTileEntity(TileEntityOutput.class, world, pos); } @Override - public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int side) { + public boolean canConnectRedstone(IBlockAccess world, BlockPos pos, EnumFacing side) { return true; } diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockCableRelay.java b/src/main/java/vswe/stevesfactory/blocks/BlockCableRelay.java index a89986873..0e55704bb 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockCableRelay.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockCableRelay.java @@ -1,11 +1,14 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import net.minecraft.world.World; +import net.minecraftforge.fml.common.network.internal.FMLNetworkHandler; import vswe.stevesfactory.StevesFactoryManager; //This is indeed not a subclass to the cable, you can't relay signals through this block @@ -17,21 +20,10 @@ public TileEntity createNewTileEntity(World world, int var2) { } @Override - protected String getFrontTextureName(boolean isAdvanced) { - return isAdvanced ? "cable_relay_advanced" : "cable_relay"; - } - - @Override - protected String getSideTextureName(boolean isAdvanced) { - return "cable_idle"; - } - - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack item) { - super.onBlockPlacedBy(world, x, y, z, entity, item); + public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase entity, ItemStack item) { + super.onBlockPlacedBy(world, pos, state, entity, item); - TileEntityRelay relay = TileEntityCluster.getTileEntity(TileEntityRelay.class, world, x, y, z); + TileEntityRelay relay = TileEntityCluster.getTileEntity(TileEntityRelay.class, world, pos); if (relay != null && isAdvanced(relay.getBlockMetadata()) && !world.isRemote) { relay.setOwner(entity); } @@ -44,11 +36,11 @@ protected Class getTeClass() { @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float xSide, float ySide, float zSide) { - TileEntityRelay relay = TileEntityCluster.getTileEntity(TileEntityRelay.class, world, x, y, z); + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float xSide, float ySide, float zSide) { + TileEntityRelay relay = TileEntityCluster.getTileEntity(TileEntityRelay.class, world, pos); if (relay != null && isAdvanced(relay.getBlockMetadata())) { if (!world.isRemote) { - FMLNetworkHandler.openGui(player, StevesFactoryManager.instance, 0, world, x, y, z); + FMLNetworkHandler.openGui(player, StevesFactoryManager.instance, 0, world, pos.getX(), pos.getY(), pos.getZ()); } return true; diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockCableSign.java b/src/main/java/vswe/stevesfactory/blocks/BlockCableSign.java index 449286840..a8ebc1b30 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockCableSign.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockCableSign.java @@ -1,17 +1,18 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyDirection; +import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import net.minecraft.world.World; import vswe.stevesfactory.StevesFactoryManager; @@ -21,7 +22,7 @@ public BlockCableSign() { super(Material.iron); setCreativeTab(ModBlocks.creativeTab); setStepSound(soundTypeMetal); - setBlockName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_SIGN_UNLOCALIZED_NAME); + setUnlocalizedName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.CABLE_SIGN_UNLOCALIZED_NAME); setHardness(1.2F); } @@ -30,39 +31,34 @@ public TileEntity createNewTileEntity(World world, int meta) { return new TileEntitySignUpdater(); } - @SideOnly(Side.CLIENT) - private IIcon frontIcon; + public static final IProperty FACING = PropertyDirection.create("facing"); - @SideOnly(Side.CLIENT) @Override - public void registerBlockIcons(IIconRegister register) { - blockIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_idle"); - frontIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":cable_sign"); + protected BlockState createBlockState() { + return new BlockState(this, FACING); } - @SideOnly(Side.CLIENT) @Override - public IIcon getIcon(int side, int meta) { - return getIconFromSideAndMeta(side, 3); + public IBlockState getStateFromMeta(int meta) { + return getDefaultState().withProperty(FACING, EnumFacing.getFront(meta)); } - @SideOnly(Side.CLIENT) @Override - public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { - return getIconFromSideAndMeta(side, world.getBlockMetadata(x, y, z)); - } - @SideOnly(Side.CLIENT) - private IIcon getIconFromSideAndMeta(int side, int meta) { - return side == meta ? frontIcon : blockIcon; + public int getMetaFromState(IBlockState state) { + return ((EnumFacing) state.getValue(FACING)).getIndex(); } + @Override + public int getRenderType() { + return 3; + } @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack item) { - int meta = BlockPistonBase.determineOrientation(world, x, y, z, entity); + public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase entity, ItemStack item) { + int meta = BlockPistonBase.getFacingFromEntity(world, pos, entity).getIndex(); - TileEntitySignUpdater sign = TileEntityCluster.getTileEntity(TileEntitySignUpdater.class, world, x, y, z); + TileEntitySignUpdater sign = TileEntityCluster.getTileEntity(TileEntitySignUpdater.class, world, pos); if (sign != null) { sign.setMetaData(meta); } diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockCamouflageBase.java b/src/main/java/vswe/stevesfactory/blocks/BlockCamouflageBase.java index 6410d6137..324a3abd1 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockCamouflageBase.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockCamouflageBase.java @@ -1,17 +1,15 @@ package vswe.stevesfactory.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.block.state.IBlockState; import net.minecraft.client.particle.EffectRenderer; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.IIcon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; +import net.minecraft.util.*; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public abstract class BlockCamouflageBase extends BlockContainer { @@ -22,28 +20,27 @@ protected BlockCamouflageBase(Material material) { @Override @SideOnly(Side.CLIENT) - public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { - if (!setBlockCollisionBoundsBasedOnState(world, x, y, z)) { + public AxisAlignedBB getSelectedBoundingBox(World world, BlockPos pos) { + if (!setBlockCollisionBoundsBasedOnState(world, pos)) { setBlockBounds(0, 0, 0, 0, 0, 0); } - return super.getSelectedBoundingBoxFromPool(world, x, y, z); + return super.getSelectedBoundingBox(world, pos); } @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - if (!setBlockCollisionBoundsBasedOnState(world, x, y, z)) { + public AxisAlignedBB getCollisionBoundingBox(World world, BlockPos pos, IBlockState state) { + if (!setBlockCollisionBoundsBasedOnState(world, pos)) { return null; } - - return super.getCollisionBoundingBoxFromPool(world, x, y, z); + return super.getCollisionBoundingBox(world, pos, state); } - private boolean setBlockCollisionBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { - setBlockBoundsBasedOnState(world, x, y, z); + private boolean setBlockCollisionBoundsBasedOnState(IBlockAccess world, BlockPos pos) { + setBlockBoundsBasedOnState(world, pos); - TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, world, x, y, z); + TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, world, pos); if (camouflage != null && camouflage.getCamouflageType().useSpecialShape()) { if (!camouflage.isUseCollision()) { return false; @@ -56,26 +53,26 @@ private boolean setBlockCollisionBoundsBasedOnState(IBlockAccess world, int x, i } @Override - public boolean getBlocksMovement(IBlockAccess world, int x, int y, int z) { - TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, world, x, y, z); + public boolean isPassable(IBlockAccess world, BlockPos pos) { + TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, world, pos); return camouflage == null || camouflage.isNormalBlock(); } @Override - public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 start, Vec3 end) { - if (!setBlockCollisionBoundsBasedOnState(world, x, y, z)) { + public MovingObjectPosition collisionRayTrace(World world, BlockPos pos, Vec3 start, Vec3 end) { + if (!setBlockCollisionBoundsBasedOnState(world, pos)) { setBlockBounds(0, 0, 0, 0, 0, 0); } - return super.collisionRayTrace(world, x, y, z, start, end); + return super.collisionRayTrace(world, pos, start, end); } @SideOnly(Side.CLIENT) @Override public boolean addHitEffects(World worldObj, MovingObjectPosition target, EffectRenderer effectRenderer){ - TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, worldObj, target.blockX, target.blockY, target.blockZ); + TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, worldObj, new BlockPos(target.getBlockPos().getX(), target.getBlockPos().getY(), target.getBlockPos().getZ())); if (camouflage != null) { if (camouflage.addBlockEffect(this, target.sideHit, effectRenderer)) { return true; @@ -85,8 +82,8 @@ public boolean addHitEffects(World worldObj, MovingObjectPosition target, Effect } @Override - public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { - TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, world, x, y, z); + public void setBlockBoundsBasedOnState(IBlockAccess world, BlockPos pos) { + TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, world, pos); if (camouflage != null && camouflage.getCamouflageType().useSpecialShape()) { camouflage.setBlockBounds(this); }else{ @@ -95,12 +92,12 @@ public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) } @Override - public float getBlockHardness(World world, int x, int y, int z) { - TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, world, x, y, z); + public float getBlockHardness(World world, BlockPos pos) { + TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, world, pos); if (camouflage != null && camouflage.getCamouflageType().useSpecialShape() && !camouflage.isUseCollision()) { return 600000; } - return super.getBlockHardness(world, x, y, z); + return super.getBlockHardness(world, pos); } @Override @@ -110,7 +107,7 @@ public void setBlockBoundsForItemRender() { @Override public int getRenderType() { - return ModBlocks.CAMOUFLAGE_RENDER_ID; + return 3; } @Override @@ -118,28 +115,15 @@ public boolean isOpaqueCube() { return false; } - @SideOnly(Side.CLIENT) @Override - public final IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { - TileEntityCamouflage te = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, world, x, y, z); - - if (te != null) { - IIcon icon = te.getIconWithDefault(world, x, y, z, this, side, false); - - if (icon != null) { - return icon; - } - } - - return getDefaultIcon(side, world.getBlockMetadata(x, y, z), 0); - } - - - @Override - public boolean renderAsNormalBlock() { + public boolean isFullCube() { return false; } @SideOnly(Side.CLIENT) - protected abstract IIcon getDefaultIcon(int side, int blockMeta, int camoMeta); + public EnumWorldBlockLayer getBlockLayer() + { + return EnumWorldBlockLayer.TRANSLUCENT; + } + } diff --git a/src/main/java/vswe/stevesfactory/blocks/BlockManager.java b/src/main/java/vswe/stevesfactory/blocks/BlockManager.java index fe88ccbb7..7cac631ed 100644 --- a/src/main/java/vswe/stevesfactory/blocks/BlockManager.java +++ b/src/main/java/vswe/stevesfactory/blocks/BlockManager.java @@ -1,21 +1,23 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyBool; +import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; +import net.minecraftforge.fml.common.network.internal.FMLNetworkHandler; import vswe.stevesfactory.GeneratedInfo; import vswe.stevesfactory.StevesFactoryManager; @@ -23,79 +25,72 @@ public class BlockManager extends BlockContainer { public BlockManager() { super(Material.iron); - setBlockName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.MANAGER_UNLOCALIZED_NAME); + setUnlocalizedName(StevesFactoryManager.UNLOCALIZED_START + ModBlocks.MANAGER_UNLOCALIZED_NAME); setStepSound(soundTypeMetal); setCreativeTab(ModBlocks.creativeTab); setHardness(2F); } + public static final IProperty LIMITLESS = PropertyBool.create("limitless"); @Override - public TileEntity createNewTileEntity(World world, int meta) { - return new TileEntityManager(); + protected BlockState createBlockState() { + return new BlockState(this, LIMITLESS); } @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float xSide, float ySide, float zSide) { - if (!world.isRemote) { - FMLNetworkHandler.openGui(player, StevesFactoryManager.instance, 0, world, x, y, z); - } + public IBlockState getStateFromMeta(int meta) { + return getDefaultState().withProperty(LIMITLESS, meta == 1); + } - return true; + @Override + public int getMetaFromState(IBlockState state) { + return (Boolean) state.getValue(LIMITLESS) ? 1 : 0; } - @SideOnly(Side.CLIENT) - private IIcon sideIcon; - @SideOnly(Side.CLIENT) - private IIcon topIcon; - @SideOnly(Side.CLIENT) - private IIcon botIcon; - @SideOnly(Side.CLIENT) @Override - public void registerBlockIcons(IIconRegister register) { - sideIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":manager_side"); - topIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":manager_top"); - botIcon = register.registerIcon(StevesFactoryManager.RESOURCE_LOCATION + ":manager_bot"); + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityManager(); } - @SideOnly(Side.CLIENT) @Override - public IIcon getIcon(int side, int meta) { - if (side == 0) { - return botIcon; - }else if(side == 1) { - return topIcon; - }else{ - return sideIcon; + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float xSide, float ySide, float zSide) { + if (!world.isRemote) { + FMLNetworkHandler.openGui(player, StevesFactoryManager.instance, 0, world, pos.getX(), pos.getY(), pos.getZ()); } + + return true; } @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); + public void onBlockAdded(World world, BlockPos pos, IBlockState state) { + super.onBlockAdded(world, pos, state); - updateInventories(world, x, y, z); + updateInventories(world, pos); } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - super.onNeighborBlockChange(world, x, y, z, block); + public void onNeighborBlockChange(World world, BlockPos pos, IBlockState state, Block block) { + super.onNeighborBlockChange(world, pos, state, block); - updateInventories(world, x, y, z); + updateInventories(world, pos); } - + @Override + public int getRenderType() { + return 3; + } @Override - public void breakBlock(World world, int x, int y, int z, Block block, int meta) { - super.breakBlock(world, x, y, z, block, meta); + public void breakBlock(World world, BlockPos pos, IBlockState state) { + super.breakBlock(world, pos, state); - updateInventories(world, x, y, z); + updateInventories(world, pos); } - private void updateInventories(World world, int x, int y, int z) { - TileEntity tileEntity = world.getTileEntity(x, y, z); + private void updateInventories(World world, BlockPos pos) { + TileEntity tileEntity = world.getTileEntity(pos); if (tileEntity != null && tileEntity instanceof TileEntityManager) { ((TileEntityManager)tileEntity).updateInventories(); } @@ -103,18 +98,18 @@ private void updateInventories(World world, int x, int y, int z) { @Override - public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) { + public ItemStack getPickBlock(MovingObjectPosition target, World world, BlockPos pos, EntityPlayer player) { if (GeneratedInfo.inDev) { System.out.println("Picked" + world.isRemote); - TileEntity te = world.getTileEntity(x, y, z); + TileEntity te = world.getTileEntity(pos); if (te != null && te instanceof TileEntityManager) { TileEntityManager manager = (TileEntityManager)te; - if (manager.xCoord != x || manager.yCoord != y || manager.zCoord != z) { + if (manager.getPos().getX() != pos.getX() || manager.getPos().getY() != pos.getY() || manager.getPos().getZ() != pos.getZ()) { return null; } - ItemStack itemStack = super.getPickBlock(target, world, x, y, z); + ItemStack itemStack = super.getPickBlock(target, world, pos, player); if (itemStack != null) { NBTTagCompound tagCompound = itemStack.getTagCompound(); if (tagCompound == null) { @@ -134,16 +129,16 @@ public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, i System.out.println("failed to write"); return null; }else{ - return super.getPickBlock(target, world, x, y, z); + return super.getPickBlock(target, world, pos, player); } } @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack itemStack) { + public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase entity, ItemStack itemStack) { if (GeneratedInfo.inDev) { System.out.println("Placed" + world.isRemote); - TileEntity te = world.getTileEntity(x, y, z); + TileEntity te = world.getTileEntity(pos); if (te != null && te instanceof TileEntityManager) { TileEntityManager manager = (TileEntityManager)te; if (itemStack.hasTagCompound() && itemStack.getTagCompound().hasKey("Manager")) { @@ -154,7 +149,7 @@ public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase e } } }else{ - super.onBlockPlacedBy(world, x, y, z, entity, itemStack); + super.onBlockPlacedBy(world, pos, state, entity, itemStack); } } diff --git a/src/main/java/vswe/stevesfactory/blocks/ClusterRecipe.java b/src/main/java/vswe/stevesfactory/blocks/ClusterRecipe.java index ddb9906b3..cb0dd3f6e 100644 --- a/src/main/java/vswe/stevesfactory/blocks/ClusterRecipe.java +++ b/src/main/java/vswe/stevesfactory/blocks/ClusterRecipe.java @@ -7,6 +7,7 @@ import net.minecraft.item.crafting.IRecipe; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.oredict.RecipeSorter; import java.util.ArrayList; import java.util.List; @@ -15,6 +16,10 @@ public class ClusterRecipe implements IRecipe { private ItemStack output; + public ClusterRecipe() { + RecipeSorter.register("sfm:clustercombining", ClusterRecipe.class, RecipeSorter.Category.SHAPELESS, "after:minecraft:shapeless"); + } + @Override public boolean matches(InventoryCrafting inventorycrafting, World world) { output = null; @@ -102,4 +107,17 @@ public int getRecipeSize() { public ItemStack getRecipeOutput() { return output; } + + @Override + public ItemStack[] getRemainingItems(InventoryCrafting p_179532_1_) { + ItemStack[] aitemstack = new ItemStack[p_179532_1_.getSizeInventory()]; + + for (int i = 0; i < aitemstack.length; ++i) + { + ItemStack itemstack = p_179532_1_.getStackInSlot(i); + aitemstack[i] = net.minecraftforge.common.ForgeHooks.getContainerItem(itemstack); + } + + return aitemstack; + } } diff --git a/src/main/java/vswe/stevesfactory/blocks/ConnectionBlock.java b/src/main/java/vswe/stevesfactory/blocks/ConnectionBlock.java index 4e071f80b..34fcec913 100644 --- a/src/main/java/vswe/stevesfactory/blocks/ConnectionBlock.java +++ b/src/main/java/vswe/stevesfactory/blocks/ConnectionBlock.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.components.ComponentMenuContainer; import vswe.stevesfactory.components.IContainerSelection; @@ -71,7 +71,7 @@ public String getDescription(GuiManager gui) { str += getVariableTag(gui); - str += "\n" + Localization.X + ": " + tileEntity.xCoord + " " + Localization.Y + ": " + tileEntity.yCoord + " " + Localization.Z + ": " + tileEntity.zCoord; + str += "\n" + Localization.X + ": " + tileEntity.getPos().getX() + " " + Localization.Y + ": " + tileEntity.getPos().getY() + " " + Localization.Z + ": " + tileEntity.getPos().getZ(); int distance = getDistance(gui.getManager()); str += "\n" + distance + " " + (distance > 1 ? Localization.BLOCKS_AWAY : Localization.BLOCK_AWAY); str += "\n" + cableDistance + " " + (cableDistance > 1 ? Localization.CABLES_AWAY : Localization.CABLE_AWAY); @@ -81,7 +81,7 @@ public String getDescription(GuiManager gui) { public int getDistance(TileEntityManager manager) { - return (int)Math.round(Math.sqrt(manager.getDistanceFrom(tileEntity.xCoord + 0.5, tileEntity.yCoord + 0.5, tileEntity.zCoord + 0.5))); + return (int)Math.round(Math.sqrt(manager.getDistanceSq(tileEntity.getPos().getX() + 0.5, tileEntity.getPos().getY() + 0.5, tileEntity.getPos().getZ() + 0.5))); } public int getCableDistance() { diff --git a/src/main/java/vswe/stevesfactory/blocks/ITileEntityInterface.java b/src/main/java/vswe/stevesfactory/blocks/ITileEntityInterface.java index 0081f8b71..455f411a3 100644 --- a/src/main/java/vswe/stevesfactory/blocks/ITileEntityInterface.java +++ b/src/main/java/vswe/stevesfactory/blocks/ITileEntityInterface.java @@ -1,12 +1,12 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.network.DataReader; import vswe.stevesfactory.network.DataWriter; diff --git a/src/main/java/vswe/stevesfactory/blocks/ItemCluster.java b/src/main/java/vswe/stevesfactory/blocks/ItemCluster.java index 6f3c48781..cd74e1f9a 100644 --- a/src/main/java/vswe/stevesfactory/blocks/ItemCluster.java +++ b/src/main/java/vswe/stevesfactory/blocks/ItemCluster.java @@ -6,6 +6,8 @@ import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import net.minecraft.world.World; import vswe.stevesfactory.Localization; import vswe.stevesfactory.StevesFactoryManager; @@ -25,12 +27,12 @@ public ItemCluster(Block block) { public static final String NBT_TYPES = "Types"; @Override - public boolean onItemUse(ItemStack item, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { + public boolean onItemUse(ItemStack item, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) { NBTTagCompound compound = item.getTagCompound(); if (compound != null && compound.hasKey(NBT_CABLE)) { NBTTagCompound cable = compound.getCompoundTag(NBT_CABLE); if (cable.hasKey(NBT_TYPES)) { - return super.onItemUse(item, player, world, x, y, z, side, hitX, hitY, hitZ); + return super.onItemUse(item, player, world, pos, side, hitX, hitY, hitZ); } } diff --git a/src/main/java/vswe/stevesfactory/blocks/ModBlocks.java b/src/main/java/vswe/stevesfactory/blocks/ModBlocks.java index 6f86d390b..4a799b764 100644 --- a/src/main/java/vswe/stevesfactory/blocks/ModBlocks.java +++ b/src/main/java/vswe/stevesfactory/blocks/ModBlocks.java @@ -1,16 +1,16 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.common.registry.GameRegistry; public final class ModBlocks { - public static final byte NBT_CURRENT_PROTOCOL_VERSION = 12; + public static final byte NBT_CURRENT_PROTOCOL_VERSION = 13; public static final String NBT_PROTOCOL_VERSION = "ProtocolVersion"; private static final String MANAGER_TILE_ENTITY_TAG = "TileEntityMachineManagerName"; @@ -58,7 +58,6 @@ public final class ModBlocks { private static final String CABLE_CAMOUFLAGE_TILE_ENTITY_TAG = "TileEntityCableCamouflageName"; public static final String CABLE_CAMOUFLAGE_NAME_TAG = "BlockCableCamouflageName"; - public static int CAMOUFLAGE_RENDER_ID; private static final String CABLE_SIGN_TILE_ENTITY_TAG = "TileEntityCableSignName"; public static final String CABLE_SIGN_NAME_TAG = "BlockCableSignName"; diff --git a/src/main/java/vswe/stevesfactory/blocks/PropertyCamouflageType.java b/src/main/java/vswe/stevesfactory/blocks/PropertyCamouflageType.java new file mode 100644 index 000000000..ccf02e26e --- /dev/null +++ b/src/main/java/vswe/stevesfactory/blocks/PropertyCamouflageType.java @@ -0,0 +1,46 @@ +package vswe.stevesfactory.blocks; + +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.Collections2; +import com.google.common.collect.Lists; +import net.minecraft.block.properties.PropertyEnum; + +import java.util.Collection; + +public class PropertyCamouflageType extends PropertyEnum { + + protected PropertyCamouflageType(String name, Collection allowedValues) { + super(name, TileEntityCamouflage.CamouflageType.class, allowedValues); + } + + /** + * Create a new PropertyDirection with the given name + */ + public static PropertyCamouflageType create(String name) + { + /** + * Create a new PropertyDirection with all directions that match the given Predicate + */ + return create(name, Predicates.alwaysTrue()); + } + + /** + * Create a new PropertyDirection with all directions that match the given Predicate + */ + public static PropertyCamouflageType create(String name, Predicate filter) + { + /** + * Create a new PropertyDirection for the given direction values + */ + return create(name, Collections2.filter(Lists.newArrayList(TileEntityCamouflage.CamouflageType.values()), filter)); + } + + /** + * Create a new PropertyDirection for the given direction values + */ + public static PropertyCamouflageType create(String name, Collection values) + { + return new PropertyCamouflageType(name, values); + } +} diff --git a/src/main/java/vswe/stevesfactory/blocks/RenderCamouflage.java b/src/main/java/vswe/stevesfactory/blocks/RenderCamouflage.java index 4e12cf056..6da324a07 100644 --- a/src/main/java/vswe/stevesfactory/blocks/RenderCamouflage.java +++ b/src/main/java/vswe/stevesfactory/blocks/RenderCamouflage.java @@ -1,9 +1,10 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import cpw.mods.fml.client.registry.RenderingRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +/* +import net.minecraftforge.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraftforge.fml.client.registry.RenderingRegistry; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; @@ -126,3 +127,4 @@ public int getRenderId() { } +*/ \ No newline at end of file diff --git a/src/main/java/vswe/stevesfactory/blocks/TileEntityBUD.java b/src/main/java/vswe/stevesfactory/blocks/TileEntityBUD.java index 86dfe0a97..d8614ca59 100644 --- a/src/main/java/vswe/stevesfactory/blocks/TileEntityBUD.java +++ b/src/main/java/vswe/stevesfactory/blocks/TileEntityBUD.java @@ -1,9 +1,11 @@ package vswe.stevesfactory.blocks; import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraftforge.common.util.ForgeDirection; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import java.util.ArrayList; import java.util.EnumSet; @@ -12,8 +14,8 @@ public class TileEntityBUD extends TileEntityClusterElement implements ISystemListener, ITriggerNode{ private List managerList = new ArrayList(); - private int[] oldData = new int[ForgeDirection.VALID_DIRECTIONS.length]; - private int[] data = new int[ForgeDirection.VALID_DIRECTIONS.length]; + private int[] oldData = new int[EnumFacing.values().length]; + private int[] data = new int[EnumFacing.values().length]; @Override public void added(TileEntityManager owner) { @@ -54,12 +56,14 @@ public void updateData() { if (worldObj != null) { data = new int[data.length]; for (int i = 0; i < data.length; i++) { - ForgeDirection direction = ForgeDirection.VALID_DIRECTIONS[i]; - int x = direction.offsetX + this.xCoord; - int y = direction.offsetY + this.yCoord; - int z = direction.offsetZ + this.zCoord; + EnumFacing direction = EnumFacing.getFront(i); + int x = direction.getFrontOffsetX() + this.getPos().getX(); + int y = direction.getFrontOffsetY() + this.getPos().getY(); + int z = direction.getFrontOffsetZ() + this.getPos().getZ(); - data[i] = (Block.getIdFromBlock(worldObj.getBlock(x, y, z)) << 4) | (worldObj.getBlockMetadata(x, y, z) & 15); + IBlockState state = worldObj.getBlockState(new BlockPos(x, y, z)); + + data[i] = (Block.getIdFromBlock(state.getBlock()) << 4) | (state.getBlock().getMetaFromState(state) & 15); } } } diff --git a/src/main/java/vswe/stevesfactory/blocks/TileEntityBreaker.java b/src/main/java/vswe/stevesfactory/blocks/TileEntityBreaker.java index ac5ebf61d..e7ee66f7f 100644 --- a/src/main/java/vswe/stevesfactory/blocks/TileEntityBreaker.java +++ b/src/main/java/vswe/stevesfactory/blocks/TileEntityBreaker.java @@ -2,9 +2,8 @@ import com.mojang.authlib.GameProfile; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -14,9 +13,14 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.IChatComponent; import net.minecraft.world.WorldServer; import net.minecraftforge.common.util.FakePlayerFactory; -import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.network.*; import java.util.ArrayList; @@ -31,20 +35,21 @@ public class TileEntityBreaker extends TileEntityClusterElement implements IInve private List inventory; private List inventoryCache; private boolean broken; - private int placeDirection; + private EnumFacing placeDirection; private boolean blocked; private List getInventory() { if (inventory == null) { - ForgeDirection direction = ForgeDirection.VALID_DIRECTIONS[getBlockMetadata() % ForgeDirection.VALID_DIRECTIONS.length]; - - int x = xCoord + direction.offsetX; - int y = yCoord + direction.offsetY; - int z = zCoord + direction.offsetZ; - Block block = worldObj.getBlock(x, y, z); - if (canBreakBlock(block, x, y, z)) { - inventory = block.getDrops(worldObj, x, y, z, worldObj.getBlockMetadata(x, y, z), 0); + EnumFacing direction = EnumFacing.getFront(getBlockMetadata() % EnumFacing.values().length); + + int x = getPos().getX() + direction.getFrontOffsetX(); + int y = getPos().getY() + direction.getFrontOffsetY(); + int z = getPos().getZ() + direction.getFrontOffsetZ(); + BlockPos pos = new BlockPos(x, y, z); + IBlockState state = worldObj.getBlockState(pos); + if (canBreakBlock(state.getBlock(), pos)) { + inventory = state.getBlock().getDrops(worldObj, pos, state, 0); } if (inventory == null) { inventory = new ArrayList(); @@ -62,39 +67,36 @@ private List placeItem(ItemStack itemstack) { List items = new ArrayList(); if (itemstack != null && itemstack.getItem() != null && itemstack.stackSize > 0) { - ForgeDirection side = ForgeDirection.VALID_DIRECTIONS[getBlockMetadata() % ForgeDirection.VALID_DIRECTIONS.length]; - ForgeDirection direction = ForgeDirection.VALID_DIRECTIONS[placeDirection].getOpposite(); + EnumFacing side = EnumFacing.getFront(getBlockMetadata() % EnumFacing.values().length); + EnumFacing direction = placeDirection.getOpposite(); - - - float hitX = 0.5F + direction.offsetX * 0.5F; - float hitY = 0.5F + direction.offsetY * 0.5F; - float hitZ = 0.5F + direction.offsetZ * 0.5F; + float hitX = 0.5F + direction.getFrontOffsetX() * 0.5F; + float hitY = 0.5F + direction.getFrontOffsetY() * 0.5F; + float hitZ = 0.5F + direction.getFrontOffsetZ() * 0.5F; EntityPlayerMP player = FakePlayerFactory.get((WorldServer) worldObj, new GameProfile(FAKE_PLAYER_ID, FAKE_PLAYER_NAME)); int rotationSide = ROTATION_SIDE_MAPPING[direction.ordinal()]; player.prevRotationPitch = player.rotationYaw = rotationSide * 90; - player.prevRotationYaw = player.rotationPitch = direction == ForgeDirection.UP ? 90 : direction == ForgeDirection.DOWN ? -90 : 0; - player.prevPosX = player.posX = xCoord + side.offsetX + 0.5 + direction.offsetX * 0.4; - player.prevPosY = player.posY = yCoord + side.offsetY + 0.5 + direction.offsetY * 0.4; - player.prevPosZ = player.posZ = zCoord + side.offsetZ + 0.5 + direction.offsetZ * 0.4; + player.prevRotationYaw = player.rotationPitch = direction == EnumFacing.UP ? 90 : direction == EnumFacing.DOWN ? -90 : 0; + player.prevPosX = player.posX = getPos().getX() + side.getFrontOffsetX() + 0.5 + direction.getFrontOffsetX() * 0.4; + player.prevPosY = player.posY = getPos().getY() + side.getFrontOffsetY() + 0.5 + direction.getFrontOffsetY() * 0.4; + player.prevPosZ = player.posZ = getPos().getZ() + side.getFrontOffsetZ() + 0.5 + direction.getFrontOffsetZ() * 0.4; player.eyeHeight = 0; - player.yOffset = 1.82F; player.theItemInWorldManager.setBlockReachDistance(1); blocked = true; try { - player.inventory.clearInventory(null, -1); + player.inventory.clear(); player.inventory.currentItem = 0; player.inventory.setInventorySlotContents(0, itemstack); ItemStack result = itemstack.useItemRightClick(worldObj, player); if (ItemStack.areItemStacksEqual(result, itemstack)) { - int x = xCoord + side.offsetX - direction.offsetX; - int y = yCoord + side.offsetY - direction.offsetY; - int z = zCoord + side.offsetZ - direction.offsetZ; + int x = getPos().getX() + side.getFrontOffsetX() - direction.getFrontOffsetX(); + int y = getPos().getY() + side.getFrontOffsetY() - direction.getFrontOffsetY(); + int z = getPos().getZ() + side.getFrontOffsetZ() - direction.getFrontOffsetZ(); - player.theItemInWorldManager.activateBlockOrUseItem(player, worldObj, itemstack, x, y, z, direction.ordinal(), hitX, hitY, hitZ); + player.theItemInWorldManager.activateBlockOrUseItem(player, worldObj, itemstack, new BlockPos(x, y, z), direction, hitX, hitY, hitZ); }else{ player.inventory.setInventorySlotContents(0, result); @@ -116,9 +118,9 @@ private List placeItem(ItemStack itemstack) { } @Override - public void updateEntity() { + public void update() { if (missingPlaceDirection) { - setPlaceDirection(getBlockMetadata()); + setPlaceDirection(EnumFacing.getFront(getBlockMetadata())); missingPlaceDirection = false; } if (worldObj.isRemote) { @@ -126,29 +128,28 @@ public void updateEntity() { } if (inventory != null) { - ForgeDirection direction = ForgeDirection.VALID_DIRECTIONS[getBlockMetadata() % ForgeDirection.VALID_DIRECTIONS.length]; - + EnumFacing direction = EnumFacing.getFront(getBlockMetadata() % EnumFacing.values().length); for (ItemStack itemStack : getInventoryForDrop()) { List items = placeItem(itemStack); if (items != null && !items.isEmpty()) { for (ItemStack item : items) { - double x = xCoord + 0.5 + direction.offsetX * 0.75; - double y = yCoord + 0.5 + direction.offsetY * 0.75; - double z = zCoord + 0.5 + direction.offsetZ * 0.75; + double x = getPos().getX() + 0.5 + direction.getFrontOffsetX() * 0.75; + double y = getPos().getY() + 0.5 + direction.getFrontOffsetY() * 0.75; + double z = getPos().getZ() + 0.5 + direction.getFrontOffsetZ() * 0.75; - if (direction.offsetY == 0) { + if (direction.getFrontOffsetY() == 0) { y -= 0.1; } EntityItem entityitem = new EntityItem(worldObj, x, y, z, item); - entityitem.motionX = direction.offsetX * 0.1; - entityitem.motionY = direction.offsetY * 0.1; - entityitem.motionZ = direction.offsetZ * 0.1; + entityitem.motionX = direction.getFrontOffsetX() * 0.1; + entityitem.motionY = direction.getFrontOffsetY() * 0.1; + entityitem.motionZ = direction.getFrontOffsetZ() * 0.1; - entityitem.delayBeforeCanPickup = 40; + entityitem.setPickupDelay(40); worldObj.spawnEntityInWorld(entityitem); } } @@ -247,21 +248,26 @@ public void setInventorySlotContents(int id, ItemStack itemstack) { } @Override - public ItemStack getStackInSlotOnClosing(int i) { + public ItemStack removeStackFromSlot(int i) { return null; } @Override - public String getInventoryName() { + public String getName() { return ModBlocks.blockCableBreaker.getLocalizedName(); } @Override - public boolean hasCustomInventoryName() { + public boolean hasCustomName() { return true; } + @Override + public IChatComponent getDisplayName() { + return new ChatComponentText(ModBlocks.blockCableBreaker.getLocalizedName()); + } + @Override public int getInventoryStackLimit() { return 64; @@ -273,12 +279,12 @@ public boolean isUseableByPlayer(EntityPlayer entityplayer) { } @Override - public void openInventory() { + public void openInventory(EntityPlayer player) { } @Override - public void closeInventory() { + public void closeInventory(EntityPlayer player) { } @@ -287,6 +293,26 @@ public boolean isItemValidForSlot(int i, ItemStack itemstack) { return true; } + @Override + public int getField(int id) { + return 0; + } + + @Override + public void setField(int id, int value) { + + } + + @Override + public int getFieldCount() { + return 0; + } + + @Override + public void clear() { + + } + @Override public void markDirty() { super.markDirty(); @@ -304,29 +330,31 @@ public void markDirty() { } if (!match) { - ForgeDirection direction = ForgeDirection.VALID_DIRECTIONS[getBlockMetadata() % ForgeDirection.VALID_DIRECTIONS.length]; + EnumFacing direction = EnumFacing.getFront(getBlockMetadata() % EnumFacing.values().length); - int x = xCoord + direction.offsetX; - int y = yCoord + direction.offsetY; - int z = zCoord + direction.offsetZ; + int x = getPos().getX() + direction.getFrontOffsetX(); + int y = getPos().getY() + direction.getFrontOffsetY(); + int z = getPos().getZ() + direction.getFrontOffsetZ(); - Block block = worldObj.getBlock(x, y, z); + BlockPos pos = new BlockPos(x, y, z); + IBlockState state = worldObj.getBlockState(pos); + Block block = state.getBlock(); - if (canBreakBlock(block, x, y, z)) { + if (canBreakBlock(block, pos)) { broken = true; - int meta = worldObj.getBlockMetadata(x, y, z); - block.breakBlock(worldObj, x, y, z, block, meta); - worldObj.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(block) + (meta << 12)); - worldObj.setBlockToAir(x, y, z); + int meta = state.getBlock().getMetaFromState(state); + block.breakBlock(worldObj, pos, state); + worldObj.playAuxSFX(2001, pos, Block.getIdFromBlock(block) + (meta << 12)); + worldObj.setBlockToAir(pos); } } } } - private boolean canBreakBlock(Block block, int x, int y, int z) { - return block != null && Block.getIdFromBlock(block) != Block.getIdFromBlock(Blocks.bedrock) && block.getBlockHardness(worldObj, x, y, z) >= 0; + private boolean canBreakBlock(Block block, BlockPos pos) { + return block != null && Block.getIdFromBlock(block) != Block.getIdFromBlock(Blocks.bedrock) && block.getBlockHardness(worldObj, pos) >= 0; } @Override @@ -340,10 +368,10 @@ protected EnumSet getRegistrations() { @Override protected void readContentFromNBT(NBTTagCompound tagCompound) { if (tagCompound.hasKey(NBT_DIRECTION)) { - setPlaceDirection(tagCompound.getByte(NBT_DIRECTION)); + setPlaceDirection(EnumFacing.getFront(tagCompound.getByte(NBT_DIRECTION))); }else{ if (worldObj != null) { - setPlaceDirection(getBlockMetadata()); + setPlaceDirection(EnumFacing.getFront(getBlockMetadata())); }else{ missingPlaceDirection = true; } @@ -352,7 +380,7 @@ protected void readContentFromNBT(NBTTagCompound tagCompound) { @Override protected void writeContentToNBT(NBTTagCompound tagCompound) { - tagCompound.setByte(NBT_DIRECTION, (byte)placeDirection); + tagCompound.setByte(NBT_DIRECTION, (byte) (placeDirection != null ? placeDirection.getIndex() : 0)); } private static final int UPDATE_BUFFER_DISTANCE = 5; @@ -364,7 +392,7 @@ private void keepClientDataUpdated() { return; } - double distance = Minecraft.getMinecraft().thePlayer.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); + double distance = Minecraft.getMinecraft().thePlayer.getDistanceSq(getPos().getX() + 0.5, getPos().getY() + 0.5, getPos().getZ() + 0.5); if (distance > Math.pow(PacketHandler.BLOCK_UPDATE_RANGE, 2)) { hasUpdatedData = false; @@ -377,7 +405,8 @@ private void keepClientDataUpdated() { @Override public void writeData(DataWriter dw, EntityPlayer player, boolean onServer, int id) { if (onServer) { - dw.writeData(placeDirection, DataBitHelper.PLACE_DIRECTION); + if (placeDirection == null) placeDirection = BlockCableBreaker.getSide(getBlockMetadata()); //might be a cheap fix, but seams to some kind of sync bug between threads or something + dw.writeData(placeDirection.getIndex(), DataBitHelper.PLACE_DIRECTION); }else{ //nothing to write, empty packet } @@ -389,8 +418,10 @@ public void readData(DataReader dr, EntityPlayer player, boolean onServer, int i //respond by sending the data to the client that required it PacketHandler.sendBlockPacket(this, player, 0); }else{ - placeDirection = dr.readData(DataBitHelper.PLACE_DIRECTION); - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + int val = dr.readData(DataBitHelper.PLACE_DIRECTION); + setPlaceDirection(EnumFacing.getFront(val)); + worldObj.markBlockForUpdate(getPos()); + markDirty(); } } @@ -399,13 +430,14 @@ public int infoBitLength(boolean onServer) { return 0; } - public int getPlaceDirection() { + public EnumFacing getPlaceDirection() { return placeDirection; } - public void setPlaceDirection(int placeDirection) { + public void setPlaceDirection(EnumFacing placeDirection) { if (this.placeDirection != placeDirection) { this.placeDirection = placeDirection; + this.markDirty(); if (!isPartOfCluster() && worldObj != null && !worldObj.isRemote) { PacketHandler.sendBlockPacket(this, null, 0); diff --git a/src/main/java/vswe/stevesfactory/blocks/TileEntityCamouflage.java b/src/main/java/vswe/stevesfactory/blocks/TileEntityCamouflage.java index 21d762cf2..5b2b3744a 100644 --- a/src/main/java/vswe/stevesfactory/blocks/TileEntityCamouflage.java +++ b/src/main/java/vswe/stevesfactory/blocks/TileEntityCamouflage.java @@ -1,7 +1,5 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EffectRenderer; @@ -11,9 +9,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.common.util.ForgeDirection; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.IStringSerializable; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.components.ComponentMenuCamouflageInside; import vswe.stevesfactory.components.ComponentMenuCamouflageShape; import vswe.stevesfactory.network.*; @@ -42,40 +42,40 @@ public boolean isNormalBlock() { private static final Random rand = new Random(); @SideOnly(Side.CLIENT) - public boolean addBlockEffect(Block camoBlock, int sideHit, EffectRenderer effectRenderer) { + public boolean addBlockEffect(Block camoBlock, EnumFacing sideHit, EffectRenderer effectRenderer) { try { - if (ids[sideHit] != 0) { - Block block = Block.getBlockById(ids[sideHit]); + if (ids[sideHit.ordinal()] != 0) { + Block block = Block.getBlockById(ids[sideHit.ordinal()]); if (block != null) { float f = 0.1F; - double x = (double)xCoord + rand.nextDouble() * (camoBlock.getBlockBoundsMaxX() - camoBlock.getBlockBoundsMinX() - (double)(f * 2.0F)) + (double)f + camoBlock.getBlockBoundsMinX(); - double y = (double)yCoord + rand.nextDouble() * (camoBlock.getBlockBoundsMaxY() - camoBlock.getBlockBoundsMinY() - (double)(f * 2.0F)) + (double)f + camoBlock.getBlockBoundsMinY(); - double z = (double)zCoord + rand.nextDouble() * (camoBlock.getBlockBoundsMaxZ() - camoBlock.getBlockBoundsMinZ() - (double)(f * 2.0F)) + (double)f + camoBlock.getBlockBoundsMinZ(); + double x = (double)getPos().getX() + rand.nextDouble() * (camoBlock.getBlockBoundsMaxX() - camoBlock.getBlockBoundsMinX() - (double)(f * 2.0F)) + (double)f + camoBlock.getBlockBoundsMinX(); + double y = (double)getPos().getY() + rand.nextDouble() * (camoBlock.getBlockBoundsMaxY() - camoBlock.getBlockBoundsMinY() - (double)(f * 2.0F)) + (double)f + camoBlock.getBlockBoundsMinY(); + double z = (double)getPos().getZ() + rand.nextDouble() * (camoBlock.getBlockBoundsMaxZ() - camoBlock.getBlockBoundsMinZ() - (double)(f * 2.0F)) + (double)f + camoBlock.getBlockBoundsMinZ(); switch (sideHit) { - case 0: - y = (double)yCoord + camoBlock.getBlockBoundsMinY() - (double)f; + case DOWN: + y = (double)getPos().getY() + camoBlock.getBlockBoundsMinY() - (double)f; break; - case 1: - y = (double)yCoord + camoBlock.getBlockBoundsMaxY() + (double)f; + case UP: + y = (double)getPos().getY() + camoBlock.getBlockBoundsMaxY() + (double)f; break; - case 2: - z = (double)zCoord + camoBlock.getBlockBoundsMinZ() - (double)f; + case NORTH: + z = (double)getPos().getZ() + camoBlock.getBlockBoundsMinZ() - (double)f; break; - case 3: - z = (double)zCoord + camoBlock.getBlockBoundsMaxZ() + (double)f; + case SOUTH: + z = (double)getPos().getZ() + camoBlock.getBlockBoundsMaxZ() + (double)f; break; - case 4: - x = (double)xCoord + camoBlock.getBlockBoundsMinX() - (double)f; + case WEST: + x = (double)getPos().getX() + camoBlock.getBlockBoundsMinX() - (double)f; break; - case 5: - x = (double)xCoord + camoBlock.getBlockBoundsMaxX() + (double)f; + case EAST: + x = (double)getPos().getX() + camoBlock.getBlockBoundsMaxX() + (double)f; break; } - effectRenderer.addEffect((new EntityDiggingFX(this.worldObj, x, y, z, 0.0D, 0.0D, 0.0D, block, metas[sideHit])).multiplyVelocity(0.2F).multipleParticleScaleBy(0.6F)); + effectRenderer.addEffect((new EntityDiggingFX.Factory().getEntityFX(0, this.worldObj, x, y, z, 0.0D, 0.0D, 0.0D, Block.getIdFromBlock(camoBlock))).multiplyVelocity(0.2F).multipleParticleScaleBy(0.6F)); return true; } } @@ -85,7 +85,7 @@ public boolean addBlockEffect(Block camoBlock, int sideHit, EffectRenderer effec } - public enum CamouflageType { + public enum CamouflageType implements IStringSerializable { NORMAL("BlockCableCamouflage", "cable_camo", false, false), INSIDE("BlockCableInsideCamouflage", "cable_camo_inside", true, false), SHAPE("BlockCableShapeCamouflage", "cable_camo_shape", true, true); @@ -107,7 +107,7 @@ public String getUnlocalized() { } public String getIcon() { - return icon; + return "stevesfactorymanager:blocks/" + icon; } public boolean useDoubleRendering() { @@ -117,6 +117,21 @@ public boolean useDoubleRendering() { public boolean useSpecialShape() { return useShape; } + + public static CamouflageType getCamouflageType(int id) { + CamouflageType type = values()[id % values().length]; + return type; + } + + @Override + public String getName() { + return icon; + } + + @Override + public String toString() { + return super.toString().toLowerCase(); + } } public CamouflageType getCamouflageType() { @@ -138,8 +153,8 @@ public boolean isFullCollision() { private boolean useCollision = true; private boolean fullCollision = false; private int[] bounds = {0, 32, 0, 32, 0, 32}; - private int[] ids = new int[ForgeDirection.VALID_DIRECTIONS.length * 2]; - private int[] metas = new int[ForgeDirection.VALID_DIRECTIONS.length * 2]; + private int[] ids = new int[EnumFacing.values().length * 2]; + private int[] metas = new int[EnumFacing.values().length * 2]; public void setBounds(ComponentMenuCamouflageShape menu) { if (getCamouflageType().useSpecialShape() && menu.shouldUpdate()) { @@ -176,17 +191,17 @@ public void setItem(ItemStack item, int side, ComponentMenuCamouflageInside.Insi setItem(item, side); break; case ONLY_INSIDE: - setItemForInside(item, side + ForgeDirection.VALID_DIRECTIONS.length); + setItemForInside(item, side + EnumFacing.values().length); break; case SAME: setItem(item, side); - setItemForInside(item, side + ForgeDirection.VALID_DIRECTIONS.length); + setItemForInside(item, side + EnumFacing.values().length); break; case OPPOSITE: setItem(item, side); int sidePairInternalId = side % 2; int insideSide = side + (sidePairInternalId == 0 ? 1 : -1); - setItemForInside(item, insideSide + ForgeDirection.VALID_DIRECTIONS.length); + setItemForInside(item, insideSide + EnumFacing.values().length); break; default: } @@ -206,7 +221,7 @@ private void setItem(ItemStack item, int side) { ids[side] = 0; metas[side] = 0; }else if(item.getItem() != null && item.getItem() instanceof ItemBlock) { - Block block = ((ItemBlock)item.getItem()).field_150939_a; + Block block = ((ItemBlock)item.getItem()).block; if (block != null) { ids[side] = Block.getIdFromBlock(block); metas[side] = item.getItem().getMetadata(item.getItemDamage()); @@ -315,7 +330,7 @@ public void readData(DataReader dr, EntityPlayer player, boolean onServer, int i } } } - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + worldObj.markBlockForUpdate(new BlockPos(getPos().getX(), getPos().getY(), getPos().getZ())); } } @@ -335,7 +350,7 @@ public int infoBitLength(boolean onServer) { private boolean isServerDirty; @Override - public void updateEntity() { + public void update() { if (worldObj.isRemote) { keepClientDataUpdated(); }else{ @@ -348,7 +363,7 @@ public void updateEntity() { @SideOnly(Side.CLIENT) private void keepClientDataUpdated() { - double distance = Minecraft.getMinecraft().thePlayer.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); + double distance = Minecraft.getMinecraft().thePlayer.getDistanceSq(getPos().getX() + 0.5, getPos().getY() + 0.5, getPos().getZ() + 0.5); if (distance > Math.pow(PacketHandler.BLOCK_UPDATE_RANGE, 2)) { hasClientUpdatedData = false; @@ -422,31 +437,4 @@ protected void readContentFromNBT(NBTTagCompound tagCompound) { } } - @SideOnly(Side.CLIENT) - private IIcon getIcon(int side, boolean inside) { - if (inside) { - side += ForgeDirection.VALID_DIRECTIONS.length; - } - - Block block = Block.getBlockById(ids[side]); - if (block != null) { - try { - IIcon icon = block.getIcon(side, metas[side]); - if (icon != null) { - return icon; - } - }catch (Exception ignored) {} - } - return null; - } - - @SideOnly(Side.CLIENT) - public IIcon getIconWithDefault(IBlockAccess world, int x, int y, int z, BlockCamouflageBase block, int side, boolean inside) { - IIcon icon = getIcon(side, inside); - if (icon == null) { - icon = block.getDefaultIcon(side, world.getBlockMetadata(x, y, z), getBlockMetadata()); //here we actually want to fetch the meta data of the block, rather then getting the tile entity version - } - - return icon; - } } diff --git a/src/main/java/vswe/stevesfactory/blocks/TileEntityCluster.java b/src/main/java/vswe/stevesfactory/blocks/TileEntityCluster.java index 0660df9a6..62723661b 100644 --- a/src/main/java/vswe/stevesfactory/blocks/TileEntityCluster.java +++ b/src/main/java/vswe/stevesfactory/blocks/TileEntityCluster.java @@ -1,9 +1,8 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.EntityLivingBase; @@ -14,7 +13,12 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.ITickable; import net.minecraft.world.IBlockAccess; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.network.*; import java.util.ArrayList; @@ -22,7 +26,7 @@ import java.util.List; import java.util.Map; -public class TileEntityCluster extends TileEntity implements ITileEntityInterface, IPacketBlock { +public class TileEntityCluster extends TileEntity implements ITileEntityInterface, IPacketBlock, ITickable { private boolean requestedInfo; private List elements; @@ -57,7 +61,7 @@ private void loadElements(byte[] types) { for (byte type : types) { ClusterRegistry block = ClusterRegistry.getRegistryList().get(type); registryList.add(block); - TileEntityClusterElement element = (TileEntityClusterElement)block.getBlock().createNewTileEntity(getWorldObj(), 0); + TileEntityClusterElement element = (TileEntityClusterElement)block.getBlock().createNewTileEntity(getWorld(), 0); elements.add(element); if (element instanceof ITileEntityInterface) { interfaceObject = (ITileEntityInterface)element; @@ -67,9 +71,7 @@ private void loadElements(byte[] types) { for (ClusterMethodRegistration clusterMethodRegistration : element.getRegistrations()) { methodRegistration.get(clusterMethodRegistration).add(new Pair(block, element)); } - element.xCoord = xCoord; - element.yCoord = yCoord; - element.zCoord = zCoord; + element.setPos(new BlockPos(getPos().getX(), getPos().getY(), getPos().getZ())); element.setWorldObj(worldObj); element.setPartOfCluster(true); } @@ -91,10 +93,10 @@ public List getElements() { @Override - public void updateEntity() { + public void update() { for (TileEntityClusterElement element : elements) { setWorldObject(element); - element.updateEntity(); + element.update(); } if (!requestedInfo && worldObj.isRemote) { @@ -118,24 +120,24 @@ private List getRegistrations(ClusterMethodRegistration method) { return methodRegistration.get(method); } - public void onBlockPlacedBy(EntityLivingBase entity, ItemStack itemStack) { + public void onBlockPlacedBy(IBlockState state, EntityLivingBase entity, ItemStack itemStack) { for (Pair blockContainer : getRegistrations(ClusterMethodRegistration.ON_BLOCK_PLACED_BY)) { setWorldObject(blockContainer.te); - blockContainer.registry.getBlock().onBlockPlacedBy(worldObj, xCoord, yCoord, zCoord, entity, blockContainer.registry.getItemStack()); + blockContainer.registry.getBlock().onBlockPlacedBy(worldObj, new BlockPos(getPos().getX(), getPos().getY(), getPos().getZ()), state, entity, blockContainer.registry.getItemStack()); } } - public void onNeighborBlockChange(Block block) { + public void onNeighborBlockChange(Block block, IBlockState state) { for (Pair blockContainer : getRegistrations(ClusterMethodRegistration.ON_NEIGHBOR_BLOCK_CHANGED)) { setWorldObject(blockContainer.te); - blockContainer.registry.getBlock().onNeighborBlockChange(worldObj, xCoord, yCoord, zCoord, block); + blockContainer.registry.getBlock().onNeighborBlockChange(worldObj, new BlockPos(getPos().getX(), getPos().getY(), getPos().getZ()), state, block); } } - public boolean canConnectRedstone(int side) { + public boolean canConnectRedstone(EnumFacing side) { for (Pair blockContainer : getRegistrations(ClusterMethodRegistration.CAN_CONNECT_REDSTONE)) { setWorldObject(blockContainer.te); - if (blockContainer.registry.getBlock().canConnectRedstone(worldObj, xCoord, yCoord, zCoord, side)) { + if (blockContainer.registry.getBlock().canConnectRedstone(worldObj, new BlockPos(getPos().getX(), getPos().getY(), getPos().getZ()), side)) { return true; } } @@ -143,17 +145,17 @@ public boolean canConnectRedstone(int side) { return false; } - public void onBlockAdded() { + public void onBlockAdded(IBlockState state) { for (Pair blockContainer : getRegistrations(ClusterMethodRegistration.ON_BLOCK_ADDED)) { setWorldObject(blockContainer.te); - blockContainer.registry.getBlock().onBlockAdded(worldObj, xCoord, yCoord, zCoord); + blockContainer.registry.getBlock().onBlockAdded(worldObj, new BlockPos(getPos().getX(), getPos().getY(), getPos().getZ()), state); } } - public boolean shouldCheckWeakPower(int side) { + public boolean shouldCheckWeakPower(EnumFacing side) { for (Pair blockContainer : getRegistrations(ClusterMethodRegistration.SHOULD_CHECK_WEAK_POWER)) { setWorldObject(blockContainer.te); - if (blockContainer.registry.getBlock().shouldCheckWeakPower(worldObj, xCoord, yCoord, zCoord, side)) { + if (blockContainer.registry.getBlock().shouldCheckWeakPower(worldObj, new BlockPos(getPos().getX(), getPos().getY(), getPos().getZ()), side)) { return true; } } @@ -162,32 +164,32 @@ public boolean shouldCheckWeakPower(int side) { } - public int isProvidingWeakPower(int side) { + public int isProvidingWeakPower(IBlockState state, EnumFacing side) { int max = 0; for (Pair blockContainer : getRegistrations(ClusterMethodRegistration.IS_PROVIDING_WEAK_POWER)) { setWorldObject(blockContainer.te); - max = Math.max(max, blockContainer.registry.getBlock().isProvidingWeakPower(worldObj, xCoord, yCoord, zCoord, side)); + max = Math.max(max, blockContainer.registry.getBlock().getStrongPower(worldObj, new BlockPos(getPos().getX(), getPos().getY(), getPos().getZ()), state, side)); } return max; } - public int isProvidingStrongPower(int side) { + public int isProvidingStrongPower(IBlockState state, EnumFacing side) { int max = 0; for (Pair blockContainer : getRegistrations(ClusterMethodRegistration.IS_PROVIDING_STRONG_POWER)) { setWorldObject(blockContainer.te); - max = Math.max(max, blockContainer.registry.getBlock().isProvidingStrongPower(worldObj, xCoord, yCoord, zCoord, side)); + max = Math.max(max, blockContainer.registry.getBlock().getWeakPower(worldObj, new BlockPos(getPos().getX(), getPos().getY(), getPos().getZ()), state, side)); } return max; } - public boolean onBlockActivated(EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + public boolean onBlockActivated(EntityPlayer player, IBlockState state, EnumFacing side, float hitX, float hitY, float hitZ) { for (Pair blockContainer : getRegistrations(ClusterMethodRegistration.ON_BLOCK_ACTIVATED)) { setWorldObject(blockContainer.te); - if (blockContainer.registry.getBlock().onBlockActivated(worldObj, xCoord, yCoord, zCoord, player, side, hitX, hitY, hitZ)) { + if (blockContainer.registry.getBlock().onBlockActivated(worldObj, new BlockPos(getPos().getX(), getPos().getY(), getPos().getZ()), state, player, side, hitX, hitY, hitZ)) { return true; } } @@ -196,8 +198,8 @@ public boolean onBlockActivated(EntityPlayer player, int side, float hitX, float } - public static T getTileEntity(Class clazz, IBlockAccess world, int x, int y, int z) { - TileEntity te = world.getTileEntity(x, y, z); + public static T getTileEntity(Class clazz, IBlockAccess world, BlockPos pos) { + TileEntity te = world.getTileEntity(pos); if (te != null) { if (clazz.isInstance(te)) { diff --git a/src/main/java/vswe/stevesfactory/blocks/TileEntityClusterElement.java b/src/main/java/vswe/stevesfactory/blocks/TileEntityClusterElement.java index cab1cd855..6d6699ead 100644 --- a/src/main/java/vswe/stevesfactory/blocks/TileEntityClusterElement.java +++ b/src/main/java/vswe/stevesfactory/blocks/TileEntityClusterElement.java @@ -1,13 +1,15 @@ package vswe.stevesfactory.blocks; +import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ITickable; import java.util.EnumSet; -public abstract class TileEntityClusterElement extends TileEntity { +public abstract class TileEntityClusterElement extends TileEntity implements ITickable { private ClusterRegistry registryElement; private boolean isPartOfCluster; @@ -37,11 +39,19 @@ public int getBlockMetadata() { } } + public void setState(IBlockState state) { + if (isPartOfCluster) { + this.meta = state.getBlock().getMetaFromState(state); + }else{ + worldObj.setBlockState(pos, state, 2); + } + } + public void setMetaData(int meta) { if (isPartOfCluster) { this.meta = meta; }else{ - worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, meta, 2); + worldObj.setBlockState(pos, worldObj.getBlockState(pos).getBlock().getStateFromMeta(meta), 2); } } @@ -57,6 +67,11 @@ public final void readFromNBT(NBTTagCompound tagCompound) { readContentFromNBT(tagCompound); } + @Override + public void update() { + + } + protected void readContentFromNBT(NBTTagCompound tagCompound) {} protected void writeContentToNBT(NBTTagCompound tagCompound) {} protected abstract EnumSet getRegistrations(); diff --git a/src/main/java/vswe/stevesfactory/blocks/TileEntityCreative.java b/src/main/java/vswe/stevesfactory/blocks/TileEntityCreative.java index dc8b9eb7e..8435eefcb 100644 --- a/src/main/java/vswe/stevesfactory/blocks/TileEntityCreative.java +++ b/src/main/java/vswe/stevesfactory/blocks/TileEntityCreative.java @@ -3,7 +3,8 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; -import net.minecraftforge.common.util.ForgeDirection; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.IChatComponent; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; @@ -16,32 +17,32 @@ public class TileEntityCreative extends TileEntityClusterElement implements IInv @Override - public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { + public int fill(EnumFacing from, FluidStack resource, boolean doFill) { return resource == null ? 0 : resource.amount; } @Override - public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) { + public FluidStack drain(EnumFacing from, FluidStack resource, boolean doDrain) { return resource == null ? null : resource.copy(); } @Override - public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { + public FluidStack drain(EnumFacing from, int maxDrain, boolean doDrain) { return null; } @Override - public boolean canFill(ForgeDirection from, Fluid fluid) { + public boolean canFill(EnumFacing from, Fluid fluid) { return true; } @Override - public boolean canDrain(ForgeDirection from, Fluid fluid) { + public boolean canDrain(EnumFacing from, Fluid fluid) { return true; } @Override - public FluidTankInfo[] getTankInfo(ForgeDirection from) { + public FluidTankInfo[] getTankInfo(EnumFacing from) { return new FluidTankInfo[0]; } @@ -61,7 +62,7 @@ public ItemStack decrStackSize(int i, int j) { } @Override - public ItemStack getStackInSlotOnClosing(int i) { + public ItemStack removeStackFromSlot(int i) { return null; } @@ -71,15 +72,20 @@ public void setInventorySlotContents(int i, ItemStack itemstack) { } @Override - public String getInventoryName() { + public String getName() { return ModBlocks.CABLE_CREATIVE_NAME_TAG; } @Override - public boolean hasCustomInventoryName() { + public boolean hasCustomName() { return false; } + @Override + public IChatComponent getDisplayName() { + return null; + } + @Override public int getInventoryStackLimit() { return 64; @@ -91,12 +97,12 @@ public boolean isUseableByPlayer(EntityPlayer entityplayer) { } @Override - public void openInventory() { + public void openInventory(EntityPlayer player) { } @Override - public void closeInventory() { + public void closeInventory(EntityPlayer player) { } @@ -105,8 +111,33 @@ public boolean isItemValidForSlot(int i, ItemStack itemstack) { return true; } + @Override + public int getField(int id) { + return 0; + } + + @Override + public void setField(int id, int value) { + + } + + @Override + public int getFieldCount() { + return 0; + } + + @Override + public void clear() { + + } + @Override protected EnumSet getRegistrations() { return EnumSet.noneOf(ClusterMethodRegistration.class); } + + @Override + public void update() { + + } } diff --git a/src/main/java/vswe/stevesfactory/blocks/TileEntityInput.java b/src/main/java/vswe/stevesfactory/blocks/TileEntityInput.java index 6e4f886d5..0661031c6 100644 --- a/src/main/java/vswe/stevesfactory/blocks/TileEntityInput.java +++ b/src/main/java/vswe/stevesfactory/blocks/TileEntityInput.java @@ -2,7 +2,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraftforge.common.util.ForgeDirection; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import java.util.ArrayList; import java.util.EnumSet; @@ -11,8 +12,8 @@ public class TileEntityInput extends TileEntityClusterElement implements IRedstoneNode, ISystemListener, ITriggerNode { private List managerList = new ArrayList(); - private int[] oldPowered = new int[ForgeDirection.VALID_DIRECTIONS.length]; - private int[] isPowered = new int[ForgeDirection.VALID_DIRECTIONS.length]; + private int[] oldPowered = new int[EnumFacing.values().length]; + private int[] isPowered = new int[EnumFacing.values().length]; @Override @@ -30,8 +31,9 @@ public void removed(TileEntityManager owner) { public void triggerRedstone() { isPowered = new int[isPowered.length]; for (int i = 0; i < isPowered.length; i++) { - ForgeDirection direction = ForgeDirection.VALID_DIRECTIONS[i]; - isPowered[i] = worldObj.getIndirectPowerLevelTo(direction.offsetX + this.xCoord, direction.offsetY + this.yCoord, direction.offsetZ + this.zCoord, direction.ordinal()); + EnumFacing direction = EnumFacing.getFront(i); + BlockPos pos = new BlockPos(direction.getFrontOffsetX() + this.getPos().getX(), direction.getFrontOffsetY() + this.getPos().getY(), direction.getFrontOffsetZ() + this.getPos().getZ()); + isPowered[i] = worldObj.getRedstonePower(pos, direction); } for (int i = managerList.size() - 1; i >= 0; i--) { @@ -72,10 +74,10 @@ public void writeContentToNBT(NBTTagCompound nbtTagCompound) { nbtTagCompound.setByte(ModBlocks.NBT_PROTOCOL_VERSION, ModBlocks.NBT_CURRENT_PROTOCOL_VERSION); NBTTagList sidesTag = new NBTTagList(); - for (int i = 0; i < isPowered.length; i++) { + for (int power : isPowered) { NBTTagCompound sideTag = new NBTTagCompound(); - sideTag.setByte(NBT_POWER, (byte)isPowered[i]); + sideTag.setByte(NBT_POWER, (byte) power); sidesTag.appendTag(sideTag); } diff --git a/src/main/java/vswe/stevesfactory/blocks/TileEntityIntake.java b/src/main/java/vswe/stevesfactory/blocks/TileEntityIntake.java index 87f1027fb..11b3b85ec 100644 --- a/src/main/java/vswe/stevesfactory/blocks/TileEntityIntake.java +++ b/src/main/java/vswe/stevesfactory/blocks/TileEntityIntake.java @@ -5,7 +5,9 @@ import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; -import net.minecraftforge.common.util.ForgeDirection; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.IChatComponent; import java.util.ArrayList; import java.util.EnumSet; @@ -61,24 +63,24 @@ public void setInventorySlotContents(int id, ItemStack itemstack) { id--; if (id < 0 || !canPickUp(items.get(id))) { if (itemstack != null) { - ForgeDirection direction = ForgeDirection.VALID_DIRECTIONS[ModBlocks.blockCableIntake.getSideMeta(getBlockMetadata()) % ForgeDirection.VALID_DIRECTIONS.length]; + EnumFacing direction = EnumFacing.getFront(ModBlocks.blockCableIntake.getSideMeta(getBlockMetadata()) % EnumFacing.values().length); - double posX = xCoord + 0.5 + direction.offsetX * 0.75; - double posY = yCoord + 0.5 + direction.offsetY * 0.75; - double posZ = zCoord + 0.5 + direction.offsetZ * 0.75; + double posX = getPos().getX() + 0.5 + direction.getFrontOffsetX() * 0.75; + double posY = getPos().getY() + 0.5 + direction.getFrontOffsetY() * 0.75; + double posZ = getPos().getZ() + 0.5 + direction.getFrontOffsetZ() * 0.75; - if (direction.offsetY == 0) { + if (direction.getFrontOffsetY() == 0) { posY -= 0.1; } EntityItem item = new EntityItem(worldObj, posX, posY, posZ, itemstack); - item.motionX = direction.offsetX * 0.2; - item.motionY = direction.offsetY * 0.2; - item.motionZ = direction.offsetZ * 0.2; + item.motionX = direction.getFrontOffsetX() * 0.2; + item.motionY = direction.getFrontOffsetY() * 0.2; + item.motionZ = direction.getFrontOffsetZ() * 0.2; - item.delayBeforeCanPickup = 40; + item.setPickupDelay(40); worldObj.spawnEntityInWorld(item); @@ -99,30 +101,35 @@ public void setInventorySlotContents(int id, ItemStack itemstack) { } @Override - public String getInventoryName() { + public String getName() { return ModBlocks.blockCableIntake.getLocalizedName(); } @Override - public boolean hasCustomInventoryName() { + public boolean hasCustomName() { return true; } + @Override + public IChatComponent getDisplayName() { + return new ChatComponentText(ModBlocks.blockCableIntake.getLocalizedName()); + } + private static final int DISTANCE = 3; private void updateInventory() { if (items == null) { items = new ArrayList(); - int lowX = xCoord - DISTANCE; - int lowY = yCoord - DISTANCE; - int lowZ = zCoord - DISTANCE; + int lowX = getPos().getX() - DISTANCE; + int lowY = getPos().getY() - DISTANCE; + int lowZ = getPos().getZ() - DISTANCE; - int highX = xCoord + 1 + DISTANCE; - int highY = yCoord + 1 + DISTANCE; - int highZ = zCoord + 1 + DISTANCE; + int highX = getPos().getX() + 1 + DISTANCE; + int highY = getPos().getY() + 1 + DISTANCE; + int highZ = getPos().getZ() + 1 + DISTANCE; - items = worldObj.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(lowX, lowY, lowZ, highX, highY, highZ)); + items = worldObj.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(lowX, lowY, lowZ, highX, highY, highZ)); //remove items we can't use right away, this check is done when we interact with items too, to make sure it hasn't changed for (Iterator iterator = items.iterator(); iterator.hasNext(); ) { @@ -135,7 +142,7 @@ private void updateInventory() { } @Override - public ItemStack getStackInSlotOnClosing(int i) { + public ItemStack removeStackFromSlot(int i) { return null; } @@ -150,12 +157,12 @@ public boolean isUseableByPlayer(EntityPlayer entityplayer) { } @Override - public void openInventory() { + public void openInventory(EntityPlayer player) { } @Override - public void closeInventory() { + public void closeInventory(EntityPlayer player) { } @@ -165,12 +172,32 @@ public boolean isItemValidForSlot(int i, ItemStack itemstack) { } @Override - public void updateEntity() { + public int getField(int id) { + return 0; + } + + @Override + public void setField(int id, int value) { + + } + + @Override + public int getFieldCount() { + return 0; + } + + @Override + public void clear() { + items.clear(); + } + + @Override + public void update() { items = null; } private boolean canPickUp(EntityItem item) { - return !item.isDead && (item.delayBeforeCanPickup == 0 || ModBlocks.blockCableIntake.isAdvanced(getBlockMetadata())); + return !item.isDead && (!item.cannotPickup() || ModBlocks.blockCableIntake.isAdvanced(getBlockMetadata())); } @Override diff --git a/src/main/java/vswe/stevesfactory/blocks/TileEntityManager.java b/src/main/java/vswe/stevesfactory/blocks/TileEntityManager.java index edd40674b..0c8120f0f 100644 --- a/src/main/java/vswe/stevesfactory/blocks/TileEntityManager.java +++ b/src/main/java/vswe/stevesfactory/blocks/TileEntityManager.java @@ -1,7 +1,5 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -9,6 +7,10 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ITickable; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.components.*; import vswe.stevesfactory.interfaces.ContainerManager; @@ -20,7 +22,7 @@ import java.util.*; -public class TileEntityManager extends TileEntity implements ITileEntityInterface { +public class TileEntityManager extends TileEntity implements ITileEntityInterface, ITickable { public static final TriggerHelperRedstone redstoneTrigger = new TriggerHelperRedstone(3, 4); public static final TriggerHelperRedstone redstoneCondition = new TriggerHelperRedstone(1, 2); public static final TriggerHelperBUD budTrigger = new TriggerHelperBUD(); @@ -215,14 +217,14 @@ public void updateInventories() { WorldCoordinate[] oldCoordinates = new WorldCoordinate[inventories.size()]; for (int i = 0; i < oldCoordinates.length; i++) { TileEntity inventory = inventories.get(i).getTileEntity(); - oldCoordinates[i] = new WorldCoordinate(inventory.xCoord, inventory.yCoord, inventory.zCoord); + oldCoordinates[i] = new WorldCoordinate(inventory.getPos().getX(), inventory.getPos().getY(), inventory.getPos().getZ()); oldCoordinates[i].setTileEntity(inventory); } List visited = new ArrayList(); inventories.clear(); Queue queue = new PriorityQueue(); - WorldCoordinate start = new WorldCoordinate(xCoord, yCoord, zCoord, 0); + WorldCoordinate start = new WorldCoordinate(getPos().getX(), getPos().getY(), getPos().getZ(), 0); queue.add(start); visited.add(start); @@ -237,7 +239,7 @@ public void updateInventories() { if (!visited.contains(target) && (Settings.isLimitless(this) || inventories.size() < MAX_CONNECTED_INVENTORIES)) { visited.add(target); - TileEntity te = worldObj.getTileEntity(target.getX(), target.getY(), target.getZ()); + TileEntity te = worldObj.getTileEntity(new BlockPos(target.getX(), target.getY(), target.getZ())); if (te instanceof TileEntityCluster) { @@ -249,8 +251,8 @@ public void updateInventories() { addInventory(te, target); } - - if ((Settings.isLimitless(this) || element.getDepth() < MAX_CABLE_LENGTH) && ModBlocks.blockCable.isCable(worldObj.getBlock(target.getX(), target.getY(), target.getZ()), worldObj.getBlockMetadata(target.getX(), target.getY(), target.getZ()))){ + BlockPos pos = new BlockPos(target.getX(), target.getY(), target.getZ()); + if ((Settings.isLimitless(this) || element.getDepth() < MAX_CABLE_LENGTH) && ModBlocks.blockCable.isCable(worldObj.getBlockState(pos).getBlock(), worldObj.getBlockState(pos).getBlock().getMetaFromState(worldObj.getBlockState(pos)))){ queue.add(target); } } @@ -267,7 +269,7 @@ public void updateInventories() { if (oldCoordinate.getTileEntity() instanceof ISystemListener) { boolean found = false; for (ConnectionBlock inventory : inventories) { - if (oldCoordinate.getX() == inventory.getTileEntity().xCoord && oldCoordinate.getY() == inventory.getTileEntity().yCoord && oldCoordinate.getZ() == inventory.getTileEntity().zCoord) { + if (oldCoordinate.getX() == inventory.getTileEntity().getPos().getX() && oldCoordinate.getY() == inventory.getTileEntity().getPos().getY() && oldCoordinate.getZ() == inventory.getTileEntity().getPos().getZ()) { found = true; break; } @@ -352,7 +354,7 @@ private List getNewSelection(WorldCoordinate[] oldCoordinates, List(); } } - public boolean hasStrongSignalAtSide(int side) { - return strong[side]; + public boolean hasStrongSignalAtSide(EnumFacing side) { + return strong[side.ordinal()]; } - - public boolean hasStrongSignalAtOppositeSide(int side) { - return strong[getOpposite(side)]; - } - - public int getStrengthFromSide(int side) { - return strengths[side]; + public boolean hasStrongSignalAtOppositeSide(EnumFacing side) { + return strong[side.getOpposite().ordinal()]; } - public int getStrengthFromOppositeSide(int side) { - return getStrengthFromSide(getOpposite(side)); + public int getStrengthFromSide(EnumFacing side) { + return strengths[side.ordinal()]; } - private int getOpposite(int side) { - return ForgeDirection.getOrientation(side).getOpposite().ordinal(); + public int getStrengthFromOppositeSide(EnumFacing side) { + return getStrengthFromSide(side.getOpposite()); } - public void updateState(ComponentMenuRedstoneSidesEmitter sides, ComponentMenuRedstoneOutput output, ComponentMenuPulse pulse) { boolean updateClient = false; - for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { + for (int i = 0; i < EnumFacing.values().length; i++) { if (sides.isSideRequired(i)) { int oldStrength = updatedStrength[i]; boolean oldStrong = updatedStrong[i]; @@ -85,7 +80,7 @@ public void updateState(ComponentMenuRedstoneSidesEmitter sides, ComponentMenuRe if (updateBlocks) { - addBlockScheduledForUpdate(i); + addBlockScheduledForUpdate(EnumFacing.getFront(i)); } if (pulse.shouldEmitPulse()) { @@ -123,8 +118,6 @@ public void updateState(ComponentMenuRedstoneSidesEmitter sides, ComponentMenuRe } } - - } } @@ -133,14 +126,13 @@ public void updateState(ComponentMenuRedstoneSidesEmitter sides, ComponentMenuRe } } - private void addBlockScheduledForUpdate(int side) { + private void addBlockScheduledForUpdate(EnumFacing side) { hasUpdatedThisTick = true; - ForgeDirection direction = ForgeDirection.getOrientation(side); - int x = xCoord + direction.offsetX; - int y = yCoord + direction.offsetY; - int z = zCoord + direction.offsetZ; + int x = getPos().getX() + side.getFrontOffsetX(); + int y = getPos().getY() + side.getFrontOffsetY(); + int z = getPos().getZ() + side.getFrontOffsetZ(); - WorldCoordinate coordinate = new WorldCoordinate(x, y, z); + BlockPos coordinate = new BlockPos(x, y, z); if (!scheduledToUpdate.contains(coordinate)) { scheduledToUpdate.add(coordinate); } @@ -184,17 +176,17 @@ private void updateSideState(int side, ComponentMenuRedstoneOutput output) { } - private void notifyUpdate(int x, int y, int z, boolean spread) { - if (worldObj.getBlock(x, y, z) != ModBlocks.blockCable && (x != xCoord || y != yCoord || z != zCoord)) { - worldObj.notifyBlockOfNeighborChange(x, y, z, ModBlocks.blockCableOutput); + private void notifyUpdate(BlockPos pos, boolean spread) { + if (worldObj.getBlockState(pos).getBlock() != ModBlocks.blockCable && (pos.getX() != getPos().getX() || pos.getY() != getPos().getY() || pos.getZ() != getPos().getZ())) { + worldObj.notifyBlockOfStateChange(pos, ModBlocks.blockCableOutput); if (spread) { - notifyUpdate(x - 1, y, z, false); - notifyUpdate(x + 1, y, z, false); - notifyUpdate(x, y - 1, z, false); - notifyUpdate(x, y + 1, z, false); - notifyUpdate(x, y, z - 1, false); - notifyUpdate(x, y, z + 1, false); + notifyUpdate(pos.add(-1, 0, 0),false); + notifyUpdate(pos.add(1, 0, 0), false); + notifyUpdate(pos.add(0, -1, 0),false); + notifyUpdate(pos.add(0, 1, 0), false); + notifyUpdate(pos.add(0, 0, -1),false); + notifyUpdate(pos.add(0, 0, 1), false); } } } @@ -267,7 +259,7 @@ public void writeContentToNBT(NBTTagCompound nbtTagCompound) { @Override public void writeData(DataWriter dw, EntityPlayer player, boolean onServer, int id) { if (onServer) { - for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { + for (int i = 0; i < EnumFacing.values().length; i++) { boolean isOn = updatedStrength[i] > 0; dw.writeBoolean(isOn); if (isOn) { @@ -286,7 +278,7 @@ public void readData(DataReader dr, EntityPlayer player, boolean onServer, int i //respond by sending the data to the client that required it PacketHandler.sendBlockPacket(this, player, 0); }else{ - for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { + for (int i = 0; i < EnumFacing.values().length; i++) { boolean isOn = dr.readBoolean(); if (isOn) { strengths[i] = dr.readData(DataBitHelper.MENU_REDSTONE_ANALOG); @@ -295,7 +287,7 @@ public void readData(DataReader dr, EntityPlayer player, boolean onServer, int i strengths[i] = 0; } } - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + worldObj.markBlockForUpdate(new BlockPos(getPos().getX(), getPos().getY(), getPos().getZ())); } } @@ -307,10 +299,10 @@ public int infoBitLength(boolean onServer) { private List[] pulseTimers; private boolean hasUpdatedThisTick; - private List scheduledToUpdate = new ArrayList(); + private List scheduledToUpdate = new ArrayList(); @Override - public void updateEntity() { + public void update() { if (worldObj.isRemote) { keepClientDataUpdated(); }else{ @@ -318,14 +310,14 @@ public void updateEntity() { if (hasUpdatedThisTick) { hasUpdatedThisTick = false; - List coordinates = new ArrayList(scheduledToUpdate); + List coordinates = new ArrayList(scheduledToUpdate); scheduledToUpdate.clear(); for (int i = 0; i < strengths.length; i++) { strengths[i] = updatedStrength[i]; strong[i] = updatedStrong[i]; } - for (WorldCoordinate coordinate : coordinates) { - notifyUpdate(coordinate.getX(), coordinate.getY(), coordinate.getZ(), true); + for (BlockPos coordinate : coordinates) { + notifyUpdate(coordinate, true); } } } @@ -334,7 +326,7 @@ public void updateEntity() { private void updatePulses() { boolean updateClient = false; - for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { + for (int i = 0; i < EnumFacing.values().length; i++) { Iterator iterator = pulseTimers[i].iterator(); while (iterator.hasNext()) { @@ -344,7 +336,7 @@ private void updatePulses() { if (updatedStrength[i] != timer.strength || updatedStrong[i] == timer.strong) { updatedStrength[i] = timer.strength; updatedStrong[i] = timer.strong; - addBlockScheduledForUpdate(i); + addBlockScheduledForUpdate(EnumFacing.getFront(i)); updateClient = true; } iterator.remove(); @@ -366,7 +358,7 @@ private void keepClientDataUpdated() { return; } - double distance = Minecraft.getMinecraft().thePlayer.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); + double distance = Minecraft.getMinecraft().thePlayer.getDistanceSq(getPos().getX() + 0.5, getPos().getY() + 0.5, getPos().getZ() + 0.5); if (distance > Math.pow(PacketHandler.BLOCK_UPDATE_RANGE, 2)) { hasUpdatedData = false; @@ -386,6 +378,8 @@ protected EnumSet getRegistrations() { return EnumSet.of(ClusterMethodRegistration.CAN_CONNECT_REDSTONE, ClusterMethodRegistration.SHOULD_CHECK_WEAK_POWER, ClusterMethodRegistration.IS_PROVIDING_WEAK_POWER, ClusterMethodRegistration.IS_PROVIDING_STRONG_POWER); } + + private class PulseTimer { private int strength; private boolean strong; diff --git a/src/main/java/vswe/stevesfactory/blocks/TileEntityRelay.java b/src/main/java/vswe/stevesfactory/blocks/TileEntityRelay.java index bed46b638..ef8669e00 100644 --- a/src/main/java/vswe/stevesfactory/blocks/TileEntityRelay.java +++ b/src/main/java/vswe/stevesfactory/blocks/TileEntityRelay.java @@ -1,7 +1,5 @@ package vswe.stevesfactory.blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -16,20 +14,22 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.StringUtils; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.IChatComponent; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.interfaces.ContainerRelay; import vswe.stevesfactory.interfaces.GuiRelay; import vswe.stevesfactory.network.DataBitHelper; import vswe.stevesfactory.network.DataReader; import vswe.stevesfactory.network.DataWriter; import vswe.stevesfactory.network.PacketHandler; -import vswe.stevesfactory.util.Utils; import vswe.stevesfactory.wrappers.InventoryWrapper; import vswe.stevesfactory.wrappers.InventoryWrapperHorse; import vswe.stevesfactory.wrappers.InventoryWrapperPlayer; @@ -37,7 +37,7 @@ import java.util.ArrayList; import java.util.EnumSet; import java.util.List; - +import java.util.UUID; public class TileEntityRelay extends TileEntityClusterElement implements IInventory, ISidedInventory, IFluidHandler, ITileEntityInterface { @@ -51,17 +51,17 @@ public class TileEntityRelay extends TileEntityClusterElement implements IInvent //used by the advanced version private List permissions = new ArrayList(); private boolean doesListRequireOp = false; - private String owner = "Unknown"; + private UUID owner = null; private boolean creativeMode; public static int PERMISSION_MAX_LENGTH = 255; - public String getOwner() { + public UUID getOwner() { return owner; } public void setOwner(EntityLivingBase entity) { if (entity != null && entity instanceof EntityPlayer) { - owner = Utils.stripControlCodes(((EntityPlayer) entity).getDisplayName()); + owner = entity.getUniqueID(); } } @@ -90,13 +90,13 @@ private boolean isAdvanced() { } @Override - public int[] getAccessibleSlotsFromSide(int var1) { + public int[] getSlotsForFace(EnumFacing side) { try { IInventory inventory = getInventory(); if (inventory != null) { if (inventory instanceof ISidedInventory) { - return ((ISidedInventory)inventory).getAccessibleSlotsFromSide(var1); + return ((ISidedInventory)inventory).getSlotsForFace(side); }else{ int size = inventory.getSizeInventory(); if (cachedAllSlots == null || cachedAllSlots.length != size) { @@ -116,13 +116,13 @@ public int[] getAccessibleSlotsFromSide(int var1) { } @Override - public boolean canInsertItem(int i, ItemStack itemstack, int j) { + public boolean canInsertItem(int i, ItemStack itemstack, EnumFacing side) { try { IInventory inventory = getInventory(); if (inventory != null) { if (inventory instanceof ISidedInventory) { - return ((ISidedInventory)inventory).canInsertItem(i, itemstack, j); + return ((ISidedInventory)inventory).canInsertItem(i, itemstack, side); }else{ return inventory.isItemValidForSlot(i, itemstack); } @@ -135,13 +135,13 @@ public boolean canInsertItem(int i, ItemStack itemstack, int j) { } @Override - public boolean canExtractItem(int i, ItemStack itemstack, int j) { + public boolean canExtractItem(int i, ItemStack itemstack, EnumFacing side) { try { IInventory inventory = getInventory(); if (inventory != null) { if (inventory instanceof ISidedInventory) { - return ((ISidedInventory)inventory).canExtractItem(i, itemstack, j); + return ((ISidedInventory)inventory).canExtractItem(i, itemstack, side); }else{ return inventory.isItemValidForSlot(i, itemstack); } @@ -199,7 +199,7 @@ public ItemStack decrStackSize(int i, int j) { } @Override - public ItemStack getStackInSlotOnClosing(int i) { + public ItemStack removeStackFromSlot(int i) { //don't drop the things twice return null; } @@ -218,12 +218,12 @@ public void setInventorySlotContents(int i, ItemStack itemstack) { } @Override - public String getInventoryName() { + public String getName() { try { IInventory inventory = getInventory(); if (inventory != null) { - return inventory.getInventoryName(); + return inventory.getName(); } return "Unknown"; @@ -233,12 +233,12 @@ public String getInventoryName() { } @Override - public boolean hasCustomInventoryName() { + public boolean hasCustomName() { try { IInventory inventory = getInventory(); if (inventory != null) { - return inventory.hasCustomInventoryName(); + return inventory.hasCustomName(); } return false; @@ -247,6 +247,21 @@ public boolean hasCustomInventoryName() { } } + @Override + public IChatComponent getDisplayName() { + try { + IInventory inventory = getInventory(); + + if (inventory != null) { + return inventory.getDisplayName(); + } + + return null; + }finally { + unBlockUsage(); + } + } + @Override public int getInventoryStackLimit() { try { @@ -294,25 +309,55 @@ public boolean isItemValidForSlot(int i, ItemStack itemstack) { } @Override - public void openInventory() { + public int getField(int id) { + try { + IInventory inventory = getInventory(); + + if (inventory != null) { + return inventory.getFieldCount(); + } + + return 0; + }finally { + unBlockUsage(); + } + } + + @Override + public void setField(int id, int value) { + try { + IInventory inventory = getInventory(); + + if (inventory != null) { + inventory.setField(id, value); + } + }finally { + unBlockUsage(); + } + } + + @Override + public int getFieldCount() { try { IInventory inventory = getInventory(); if (inventory != null) { - inventory.openInventory(); + return inventory.getFieldCount(); } + + return 0; }finally { unBlockUsage(); } } @Override - public void closeInventory() { + public void clear() { try { IInventory inventory = getInventory(); if (inventory != null) { - inventory.closeInventory(); + inventory.clear(); } }finally { unBlockUsage(); @@ -320,7 +365,33 @@ public void closeInventory() { } @Override - public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { + public void openInventory(EntityPlayer player) { + try { + IInventory inventory = getInventory(); + + if (inventory != null) { + inventory.openInventory(player); + } + }finally { + unBlockUsage(); + } + } + + @Override + public void closeInventory(EntityPlayer player) { + try { + IInventory inventory = getInventory(); + + if (inventory != null) { + inventory.closeInventory(player); + } + }finally { + unBlockUsage(); + } + } + + @Override + public int fill(EnumFacing from, FluidStack resource, boolean doFill) { try { IFluidHandler tank = getTank(); @@ -335,7 +406,7 @@ public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { } @Override - public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) { + public FluidStack drain(EnumFacing from, FluidStack resource, boolean doDrain) { try { IFluidHandler tank = getTank(); @@ -350,7 +421,7 @@ public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrai } @Override - public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { + public FluidStack drain(EnumFacing from, int maxDrain, boolean doDrain) { try { IFluidHandler tank = getTank(); @@ -365,7 +436,7 @@ public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { } @Override - public boolean canFill(ForgeDirection from, Fluid fluid) { + public boolean canFill(EnumFacing from, Fluid fluid) { try { IFluidHandler tank = getTank(); @@ -380,7 +451,7 @@ public boolean canFill(ForgeDirection from, Fluid fluid) { } @Override - public boolean canDrain(ForgeDirection from, Fluid fluid) { + public boolean canDrain(EnumFacing from, Fluid fluid) { try { IFluidHandler tank = getTank(); @@ -395,7 +466,7 @@ public boolean canDrain(ForgeDirection from, Fluid fluid) { } @Override - public FluidTankInfo[] getTankInfo(ForgeDirection from) { + public FluidTankInfo[] getTankInfo(EnumFacing from) { try { IFluidHandler tank = getTank(); @@ -463,15 +534,15 @@ private T getContainer(Class type, int id) { } } - ForgeDirection direction = ForgeDirection.VALID_DIRECTIONS[ModBlocks.blockCableRelay.getSideMeta(getBlockMetadata()) % ForgeDirection.VALID_DIRECTIONS.length]; + EnumFacing direction = ((EnumFacing)getWorld().getBlockState(getPos()).getValue(BlockCableRelay.FACING)); - int x = xCoord + direction.offsetX; - int y = yCoord + direction.offsetY; - int z = zCoord + direction.offsetZ; + int x = getPos().getX() + direction.getFrontOffsetX(); + int y = getPos().getY() + direction.getFrontOffsetY(); + int z = getPos().getZ() + direction.getFrontOffsetZ(); - World world = getWorldObj(); + World world = getWorld(); if (world != null) { - TileEntity te = world.getTileEntity(x, y, z); + TileEntity te = world.getTileEntity(new BlockPos(x, y, z)); if (te != null && type.isInstance(te)) { if (te instanceof TileEntityRelay) { @@ -482,11 +553,11 @@ private T getContainer(Class type, int id) { } - List entities = world.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1)); + List entities = world.getEntitiesWithinAABB(Entity.class, new AxisAlignedBB(x, y, z, x + 1, y + 1, z + 1)); if (entities != null) { double closest = -1; for (Entity entity : entities) { - double distance = entity.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); + double distance = entity.getDistanceSq(getPos().getX() + 0.5, getPos().getY() + 0.5, getPos().getZ() + 0.5); if (isEntityValid(entity, type, id) && (closest == -1 || distance < closest)) { closest = distance; cachedEntities[id] = entity; @@ -528,7 +599,7 @@ private T getEntityContainer(int id) { } @Override - public void updateEntity() { + public void update() { cachedEntities[0] = null; cachedEntities[1] = null; cachedInventoryWrapper = null; @@ -541,7 +612,7 @@ public boolean allowPlayerInteraction(EntityPlayer player) { private boolean isPlayerActive(EntityPlayer player) { if (player != null) { for (UserPermission permission : permissions) { - if (permission.getName().equals(Utils.stripControlCodes(player.getDisplayName()))) { + if (permission.getUserId().equals(player.getUniqueID())) { return permission.isActive(); } } @@ -563,12 +634,13 @@ public GuiScreen getGui(TileEntity te, InventoryPlayer inv) { @Override public void writeAllData(DataWriter dw) { - dw.writeString(owner, DataBitHelper.NAME_LENGTH); + dw.writeString(owner.toString(), DataBitHelper.UUID_LENGTH); dw.writeBoolean(creativeMode); dw.writeBoolean(doesListRequireOp); dw.writeData(permissions.size(), DataBitHelper.PERMISSION_ID); for (UserPermission permission : permissions) { - dw.writeString(permission.getName(), DataBitHelper.NAME_LENGTH); + dw.writeString(permission.getUserId().toString(), DataBitHelper.UUID_LENGTH); + dw.writeString(permission.getUserName(), DataBitHelper.NAME_LENGTH); dw.writeBoolean(permission.isActive()); dw.writeBoolean(permission.isOp()); } @@ -577,17 +649,15 @@ public void writeAllData(DataWriter dw) { @Override public void readAllData(DataReader dr, EntityPlayer player) { - owner = dr.readString(DataBitHelper.NAME_LENGTH); - if (owner == null) { - owner = "Unknown"; - } + owner = UUID.fromString(dr.readString(DataBitHelper.UUID_LENGTH)); + creativeMode = dr.readBoolean(); doesListRequireOp = dr.readBoolean(); int length = dr.readData(DataBitHelper.PERMISSION_ID); permissions.clear(); for (int i = 0; i < length; i++) { - UserPermission permission = new UserPermission(dr.readString(DataBitHelper.NAME_LENGTH)); + UserPermission permission = new UserPermission(UUID.fromString(dr.readString(DataBitHelper.UUID_LENGTH)), dr.readString(DataBitHelper.NAME_LENGTH)); permission.setActive(dr.readBoolean()); permission.setOp(dr.readBoolean()); permissions.add(permission); @@ -606,13 +676,14 @@ public void readUpdatedData(DataReader dr, EntityPlayer player) { } } - String username = Utils.stripControlCodes(player.getDisplayName()); + UUID userId = player.getUniqueID(); + boolean isOp = false; - if (worldObj.isRemote || username.equals(owner)) { + if (worldObj.isRemote || userId.equals(owner)) { isOp = true; }else{ for (UserPermission permission : permissions) { - if (username.equals(permission.getName())) { + if (userId.equals(permission.getUserId())) { isOp = permission.isOp(); break; } @@ -623,10 +694,11 @@ public void readUpdatedData(DataReader dr, EntityPlayer player) { if (userData) { boolean added = dr.readBoolean(); if (added) { - UserPermission permission = new UserPermission(dr.readString(DataBitHelper.NAME_LENGTH)); + String UUIDS = dr.readString(DataBitHelper.UUID_LENGTH); + UserPermission permission = new UserPermission(UUID.fromString(UUIDS), dr.readString(DataBitHelper.NAME_LENGTH)); for (UserPermission userPermission : permissions) { - if (userPermission.getName().equals(permission.getName())) { + if (userPermission.getUserId().equals(permission.getUserId())) { return; } } @@ -636,7 +708,7 @@ public void readUpdatedData(DataReader dr, EntityPlayer player) { permission.setOp(dr.readBoolean()); } - if (permissions.size() < TileEntityRelay.PERMISSION_MAX_LENGTH && (worldObj.isRemote || permission.getName().equals(username))) { + if (permissions.size() < TileEntityRelay.PERMISSION_MAX_LENGTH && (worldObj.isRemote || permission.getUserId().equals(userId))) { permissions.add(permission); } }else{ @@ -646,7 +718,7 @@ public void readUpdatedData(DataReader dr, EntityPlayer player) { boolean deleted = dr.readBoolean(); if (deleted) { UserPermission permission = permissions.get(id); - if (isOp || permission.getName().equals(username)) { + if (isOp || permission.getUserId().equals(userId)) { permissions.remove(id); } }else if(isOp){ @@ -687,7 +759,8 @@ public void updateData(ContainerRelay container) { DataWriter dw = PacketHandler.getWriterForUpdate(container); dw.writeBoolean(true); //user data dw.writeBoolean(true); //added - dw.writeString(permission.getName(), DataBitHelper.NAME_LENGTH); + dw.writeString(permission.getUserId().toString(), DataBitHelper.UUID_LENGTH); + dw.writeString(permission.getUserName(), DataBitHelper.NAME_LENGTH); dw.writeBoolean(permission.isActive()); dw.writeBoolean(permission.isOp()); PacketHandler.sendDataToListeningClients(container, dw); @@ -696,7 +769,7 @@ public void updateData(ContainerRelay container) { //removed }else if (permissions.size() < container.oldPermissions.size()){ for (int i = 0; i < container.oldPermissions.size(); i++) { - if (i >= permissions.size() || !permissions.get(i).getName().equals(container.oldPermissions.get(i).getName())) { + if (i >= permissions.size() || !permissions.get(i).getUserId().equals(container.oldPermissions.get(i).getUserId())) { DataWriter dw = PacketHandler.getWriterForUpdate(container); dw.writeBoolean(true); //user data dw.writeBoolean(false); //existing @@ -734,6 +807,7 @@ public void updateData(ContainerRelay container) { private static final String NBT_CREATIVE = "Creative"; private static final String NBT_LIST = "ShowList"; private static final String NBT_PERMISSIONS = "Permissions"; + private static final String NBT_UUID = "UUID"; private static final String NBT_NAME = "Name"; private static final String NBT_ACTIVE = "Active"; private static final String NBT_EDITOR = "Editor"; @@ -743,14 +817,15 @@ public void writeContentToNBT(NBTTagCompound nbtTagCompound) { nbtTagCompound.setByte(ModBlocks.NBT_PROTOCOL_VERSION, ModBlocks.NBT_CURRENT_PROTOCOL_VERSION); if (isAdvanced()) { - nbtTagCompound.setString(NBT_OWNER, owner); + nbtTagCompound.setString(NBT_OWNER, owner != null ? owner.toString(): UUID.randomUUID().toString()); nbtTagCompound.setBoolean(NBT_CREATIVE, creativeMode); nbtTagCompound.setBoolean(NBT_LIST, doesListRequireOp); NBTTagList permissionTags = new NBTTagList(); for (UserPermission permission : permissions) { NBTTagCompound permissionTag = new NBTTagCompound(); - permissionTag.setString(NBT_NAME, permission.getName()); + permissionTag.setString(NBT_UUID, permission.getUserId().toString()); + permissionTag.setString(NBT_NAME, permission.getUserName()); permissionTag.setBoolean(NBT_ACTIVE, permission.isActive()); permissionTag.setBoolean(NBT_EDITOR, permission.isOp()); permissionTags.appendTag(permissionTag); @@ -764,7 +839,11 @@ public void readContentFromNBT(NBTTagCompound nbtTagCompound) { int version = nbtTagCompound.getByte(ModBlocks.NBT_PROTOCOL_VERSION); if (nbtTagCompound.hasKey(NBT_OWNER)) { - owner = nbtTagCompound.getString(NBT_OWNER); + if (version > 12) { + owner = UUID.fromString(nbtTagCompound.getString(NBT_OWNER)); + } else { + owner = null; + } creativeMode = nbtTagCompound.getBoolean(NBT_CREATIVE); doesListRequireOp = nbtTagCompound.getBoolean(NBT_LIST); permissions.clear(); @@ -772,7 +851,7 @@ public void readContentFromNBT(NBTTagCompound nbtTagCompound) { NBTTagList permissionTags = nbtTagCompound.getTagList(NBT_PERMISSIONS, 10); for (int i = 0; i < permissionTags.tagCount(); i++) { NBTTagCompound permissionTag = permissionTags.getCompoundTagAt(i); - UserPermission permission = new UserPermission(permissionTag.getString(NBT_NAME)); + UserPermission permission = new UserPermission(UUID.fromString(permissionTag.getString(NBT_UUID)), permissionTag.getString(NBT_NAME)); permission.setActive(permissionTag.getBoolean(NBT_ACTIVE)); permission.setOp(permissionTag.getBoolean(NBT_EDITOR)); permissions.add(permission); diff --git a/src/main/java/vswe/stevesfactory/blocks/TileEntitySignUpdater.java b/src/main/java/vswe/stevesfactory/blocks/TileEntitySignUpdater.java index 6667fe707..b9350b895 100644 --- a/src/main/java/vswe/stevesfactory/blocks/TileEntitySignUpdater.java +++ b/src/main/java/vswe/stevesfactory/blocks/TileEntitySignUpdater.java @@ -2,7 +2,10 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntitySign; -import net.minecraftforge.common.util.ForgeDirection; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.IChatComponent; import vswe.stevesfactory.components.ComponentMenuSignText; import java.util.EnumSet; @@ -15,17 +18,17 @@ protected EnumSet getRegistrations() { } public void updateSign(ComponentMenuSignText menu) { - ForgeDirection direction = ForgeDirection.VALID_DIRECTIONS[getBlockMetadata() % ForgeDirection.VALID_DIRECTIONS.length]; - TileEntity te = worldObj.getTileEntity(xCoord + direction.offsetX, yCoord + direction.offsetY, zCoord + direction.offsetZ); + EnumFacing direction = EnumFacing.getFront(getBlockMetadata() % EnumFacing.values().length); + TileEntity te = worldObj.getTileEntity(new BlockPos(getPos().getX() + direction.getFrontOffsetX(), getPos().getY() + direction.getFrontOffsetY(), getPos().getZ() + direction.getFrontOffsetZ())); if (te != null && te instanceof TileEntitySign) { TileEntitySign sign = (TileEntitySign)te; //if (sign.func_142009_b() == null) { - sign.func_145912_a(null); + sign.setPlayer(null); boolean updated = false; for (int i = 0; i < 4; i++) { if (menu.shouldUpdate(i)) { - String oldText = sign.signText[i]; - String newText = menu.getText(i); + IChatComponent oldText = sign.signText[i]; + ChatComponentText newText = new ChatComponentText(menu.getText(i)); if (!newText.equals(oldText)) { sign.signText[i] = newText; updated = true; @@ -34,7 +37,7 @@ public void updateSign(ComponentMenuSignText menu) { } if (updated) { sign.markDirty(); - worldObj.markBlockForUpdate(sign.xCoord, sign.yCoord, sign.zCoord); + worldObj.markBlockForUpdate(new BlockPos(sign.getPos().getX(), sign.getPos().getY(), sign.getPos().getZ())); } //} diff --git a/src/main/java/vswe/stevesfactory/blocks/UnlistedBlockPosProperty.java b/src/main/java/vswe/stevesfactory/blocks/UnlistedBlockPosProperty.java new file mode 100644 index 000000000..8ac565d01 --- /dev/null +++ b/src/main/java/vswe/stevesfactory/blocks/UnlistedBlockPosProperty.java @@ -0,0 +1,33 @@ +package vswe.stevesfactory.blocks; + +import net.minecraft.util.BlockPos; +import net.minecraftforge.common.property.IUnlistedProperty; + +public class UnlistedBlockPosProperty implements IUnlistedProperty { + + String name; + + public UnlistedBlockPosProperty(String name) { + this.name = name; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isValid(BlockPos value) { + return value != null; + } + + @Override + public Class getType() { + return BlockPos.class; + } + + @Override + public String valueToString(BlockPos value) { + return value.toString(); + } +} diff --git a/src/main/java/vswe/stevesfactory/blocks/UserPermission.java b/src/main/java/vswe/stevesfactory/blocks/UserPermission.java index 0ca439a86..92db90d23 100644 --- a/src/main/java/vswe/stevesfactory/blocks/UserPermission.java +++ b/src/main/java/vswe/stevesfactory/blocks/UserPermission.java @@ -1,12 +1,16 @@ package vswe.stevesfactory.blocks; +import java.util.UUID; + public class UserPermission { + private UUID userId; private String name; private boolean op; private boolean active; - public UserPermission(String name) { + public UserPermission(UUID userId, String name) { + this.userId = userId; if (name == null) { this.name = "Unknown"; } else{ @@ -14,7 +18,11 @@ public UserPermission(String name) { } } - public String getName() { + public UUID getUserId() { + return userId; + } + + public String getUserName() { return name; } @@ -35,7 +43,7 @@ public void setActive(boolean active) { } public UserPermission copy() { - UserPermission temp = new UserPermission(getName()); + UserPermission temp = new UserPermission(getUserId(), getUserName()); temp.setOp(isOp()); temp.setActive(isActive()); return temp; diff --git a/src/main/java/vswe/stevesfactory/blocks/client/BakedCamouflageBlockModel.java b/src/main/java/vswe/stevesfactory/blocks/client/BakedCamouflageBlockModel.java new file mode 100644 index 000000000..4e226a079 --- /dev/null +++ b/src/main/java/vswe/stevesfactory/blocks/client/BakedCamouflageBlockModel.java @@ -0,0 +1,424 @@ +package vswe.stevesfactory.blocks.client; + +import com.google.common.base.Function; +import net.minecraft.block.Block; +import net.minecraft.block.BlockAir; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.BlockModelShapes; +import net.minecraft.client.renderer.BlockRendererDispatcher; +import net.minecraft.client.renderer.block.model.*; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.vertex.VertexFormat; +import net.minecraft.client.resources.model.IBakedModel; +import net.minecraft.client.resources.model.ModelRotation; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.*; +import net.minecraftforge.common.property.IExtendedBlockState; +import net.minecraftforge.fml.client.FMLClientHandler; +import org.lwjgl.util.vector.Vector3f; +import vswe.stevesfactory.blocks.BlockCableCamouflages; +import vswe.stevesfactory.blocks.BlockCableCluster; +import vswe.stevesfactory.blocks.TileEntityCamouflage; +import vswe.stevesfactory.blocks.TileEntityCluster; + +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; + +import static vswe.stevesfactory.blocks.TileEntityCamouflage.CamouflageType; + +public class BakedCamouflageBlockModel implements IFlexibleBakedModel, ISmartBlockModel { + + private VertexFormat format; + private TextureAtlasSprite normalSprite; + private TextureAtlasSprite insideSprite; + private TextureAtlasSprite transformSprite; + private TextureAtlasSprite clusterFront; + private TextureAtlasSprite clusterSide; + private TextureAtlasSprite clusterFrontAdv; + private TextureAtlasSprite clusterSideAdv; + + private FaceBakery bakery; + private Function bakedTextureGetter; + private IModelState modelState; + + public BakedCamouflageBlockModel(IModelState modelState, VertexFormat format, Function bakedTextureGetter, boolean isCamouflage) { + this.format = format; + + this.bakedTextureGetter = bakedTextureGetter; + this.modelState = modelState; + normalSprite = bakedTextureGetter.apply(CamouflageBlockModel.NORMAL); + insideSprite = bakedTextureGetter.apply(CamouflageBlockModel.INSIDE); + transformSprite = bakedTextureGetter.apply(CamouflageBlockModel.TRANSFORM); + + if (!isCamouflage) { + clusterFront = bakedTextureGetter.apply(CamouflageBlockModel.CL_FRONT); + clusterSide = bakedTextureGetter.apply(CamouflageBlockModel.CL_SIDE); + clusterFrontAdv = bakedTextureGetter.apply(CamouflageBlockModel.CL_ADV_FRONT); + clusterSideAdv = bakedTextureGetter.apply(CamouflageBlockModel.CL_ADV_SIDE); + } + + bakery = new FaceBakery(); + } + + @Override + public List getFaceQuads(EnumFacing side) { + //This should never be called! The handleBlockState returns an AssembledBakedModel + throw new UnsupportedOperationException(); + } + + @Override + public List getGeneralQuads() { + //This should never be called! The handleBlockState returns an AssembledBakedModel + throw new UnsupportedOperationException(); + } + + @Override + public boolean isAmbientOcclusion() { + return false; + } + + @Override + public boolean isGui3d() { + return false; + } + + @Override + public boolean isBuiltInRenderer() { + return false; + } + + @Override + public TextureAtlasSprite getParticleTexture() { + return normalSprite; + } + + @Override + public ItemCameraTransforms getItemCameraTransforms() { + return ItemCameraTransforms.DEFAULT; + } + + @Override + public VertexFormat getFormat() { + return format; + } + + @Override + public IBakedModel handleBlockState(IBlockState state) { + if (state instanceof IExtendedBlockState) { + IExtendedBlockState blockState = (IExtendedBlockState) state; + Object obj = blockState.getValue(BlockCableCamouflages.BLOCK_POS); + + if (obj != null) { + + BlockPos pos = (BlockPos) obj; + BlockRendererDispatcher dispatcher = FMLClientHandler.instance().getClient().getBlockRendererDispatcher(); + BlockModelShapes modelShapes = dispatcher.getBlockModelShapes(); + + TileEntity tileEntity = FMLClientHandler.instance().getWorldClient().getTileEntity(pos); + TileEntityCamouflage camouflage = null; + TileEntityCluster cluster = null; + + if (tileEntity instanceof TileEntityCluster) { + cluster = (TileEntityCluster) tileEntity; + camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, FMLClientHandler.instance().getWorldClient(), pos); + + BlockCableCluster blockCluster = (BlockCableCluster) cluster.getBlockType(); + + if (camouflage == null) { + IModel clusterModel = null; + try { + clusterModel = ModelLoaderRegistry.getModel(blockCluster.isAdvanced(cluster.getBlockMetadata()) ? CamouflageBlockModel.MODEL_CLUSTER_ADV : CamouflageBlockModel.MODEL_CLUSTER); + } catch (IOException ignored) {} + + if (clusterModel != null) { + return clusterModel.bake(modelState, format, bakedTextureGetter); + } + } + } else if (tileEntity instanceof TileEntityCamouflage) { + camouflage = (TileEntityCamouflage) tileEntity; + } + return new AssembledBakedModel(camouflage, pos, blockState, modelShapes, cluster); + } + } + + return new AssembledBakedModel(); + } + + //Apparently it needs to be separate because it could be overridden my another thread as rendering is multithreaded + //https://github.com/TheGreyGhost/MinecraftByExample/blob/master/src/main/java/minecraftbyexample/mbe05_block_smartblockmodel2/CompositeModel.java + public class AssembledBakedModel implements IBakedModel + { + + private List quads = new LinkedList(); + + public AssembledBakedModel(TileEntityCamouflage camouflage, BlockPos pos, IExtendedBlockState blockState, BlockModelShapes modelShapes, TileEntityCluster cluster) { + if (camouflage != null && quads.isEmpty()) { + + for (EnumFacing facing: EnumFacing.values()) { + Block block = Block.getBlockById(camouflage.getId(facing.getIndex())); + Block insideBlock = Block.getBlockById(camouflage.getId(facing.getIndex() + EnumFacing.values().length)); + + generateQuads(block, pos, blockState, modelShapes, camouflage, facing, false, cluster); + if (camouflage.getCamouflageType().useDoubleRendering()) { + generateQuads(insideBlock, pos, blockState, modelShapes, camouflage, facing, true, cluster); + } + } + } + } + + public AssembledBakedModel() { + + } + + public void generateQuads(Block block, BlockPos pos, IExtendedBlockState blockState, BlockModelShapes modelShapes, TileEntityCamouflage camouflage, EnumFacing facing, boolean inside, TileEntityCluster cluster) { + if (block instanceof BlockAir || block instanceof BlockCableCamouflages || block instanceof BlockCableCluster) { + if (cluster == null) { + CamouflageType camoType = (CamouflageType) blockState.getValue(BlockCableCamouflages.CAMO_TYPE); + quads.add(getTransformedQuad(pos, blockState.getBlock(), facing, camoType.getIcon(), camoType == CamouflageType.NORMAL && !inside ? normalSprite : camoType == CamouflageType.INSIDE ? insideSprite: transformSprite, inside)); + } else { + BlockCableCluster blockCluster = (BlockCableCluster) cluster.getBlockType(); + int clusterMeta = cluster.getBlockMetadata(); + EnumFacing clusterFacing = blockCluster.getSide(clusterMeta); + boolean isFacingFront = ((camouflage != null && camouflage.getCamouflageType().useSpecialShape() && inside) || (camouflage == null && inside)) ? (facing == clusterFacing.getOpposite()): (facing == clusterFacing); + boolean isAdvanced = blockCluster.isAdvanced(clusterMeta); + + String resource = (isAdvanced ? (isFacingFront ? CamouflageBlockModel.CL_ADV_FRONT: CamouflageBlockModel.CL_ADV_SIDE): isFacingFront ? CamouflageBlockModel.CL_FRONT: CamouflageBlockModel.CL_SIDE).toString(); + TextureAtlasSprite texture = isAdvanced ? (isFacingFront ? clusterFrontAdv: clusterSideAdv): isFacingFront ? clusterFront: clusterSide; + + quads.add(getTransformedQuad(pos, blockState.getBlock(), facing, resource, texture, inside)); + } + } else { + + IBlockState camoState = block.getStateFromMeta(camouflage.getMeta(facing.getIndex() + (inside ? EnumFacing.values().length: 0))); + IBakedModel model = modelShapes.getModelForState(camoState); + + List bakedQuads = model.getFaceQuads(facing); + List reBakedQuads = new LinkedList(); + TextureAtlasSprite sprite = modelShapes.getTexture(camoState); + + + if (bakedQuads.isEmpty()) { + bakedQuads = model.getGeneralQuads(); + } + + for (BakedQuad quad :bakedQuads) { + if (quad.getFace() == facing) { + if (camouflage.getCamouflageType().useDoubleRendering()) { + quad = reBakeQuadForBlock(quad, pos, blockState.getBlock(), facing, sprite, inside); + } + reBakedQuads.add(quad); + } + } + + quads.addAll(reBakedQuads); + } + } + + private BakedQuad getTransformedQuad(BlockPos pos, Block block, EnumFacing facing, String resource, TextureAtlasSprite sprite, boolean inside) { + + block.setBlockBoundsBasedOnState(FMLClientHandler.instance().getWorldClient(), pos); + + float maxX = (((float)block.getBlockBoundsMaxX()) * 16f); + float maxY = (((float)block.getBlockBoundsMaxY()) * 16f); + float maxZ = (((float)block.getBlockBoundsMaxZ()) * 16f); + float minX = (((float)block.getBlockBoundsMinX()) * 16f); + float minY = (((float)block.getBlockBoundsMinY()) * 16f); + float minZ = (((float)block.getBlockBoundsMinZ()) * 16f); + + BlockFaceUV faceUV = null; + float f = 0.002F; + + if (inside) { + float temp = maxY; + maxY = 16 - minY; + minY = 16 - temp; + + temp = maxZ; + maxZ = 16 - minZ; + minZ = 16 - temp; + } + + switch (facing) { + + case DOWN: + if (!inside) { + faceUV = new BlockFaceUV(new float[]{16 - minX, 16 - maxZ, 16 - maxX, 16 - minZ}, 0); + } else { + faceUV = new BlockFaceUV(new float[]{16 - minX, 16 - minZ, 16 - maxX, 16 - maxZ}, 0); + maxY = minY + f; + } + break; + case UP: + if (!inside) { + faceUV = new BlockFaceUV(new float[]{minX, minZ, maxX, maxZ}, 0); + } else { + faceUV = new BlockFaceUV(new float[]{minX, maxZ, maxX, minZ}, 0); + minY = maxY - f; + } + break; + case NORTH: + if (!inside) { + faceUV = new BlockFaceUV(new float[]{16 - maxX, 16 - maxY, 16 - minX, 16 - minY}, 0); + } else { + faceUV = new BlockFaceUV(new float[]{16 - minX, maxY, 16 - maxX, minY}, 0); + maxZ = minZ + f; + } + break; + case SOUTH: + if (!inside) { + faceUV = new BlockFaceUV(new float[]{minX, 16 - maxY, maxX, 16 - minY}, 0); + } else { + faceUV = new BlockFaceUV(new float[]{maxX, maxY, minX, minY}, 0); + minZ = maxZ - f; + } + break; + case WEST: + if (!inside) { + faceUV = new BlockFaceUV(new float[]{minZ, 16 - maxY, maxZ, 16 - minY}, 0); + } else { + faceUV = new BlockFaceUV(new float[]{maxZ, maxY, minZ, minY}, 0); + maxX = minX + f; + } + break; + case EAST: + if (!inside) { + faceUV = new BlockFaceUV(new float[]{16 - maxZ, 16 - maxY, 16 - minZ, 16 - minY}, 0); + } else { + faceUV = new BlockFaceUV(new float[]{16 - minZ, maxY, 16 - maxZ, minY}, 0); + minX = maxX - f; + } + break; + } + + return bakery.makeBakedQuad(new Vector3f(minX, minY, minZ), new Vector3f(maxX, maxY, maxZ), new BlockPartFace(facing, -1, resource == null ? "": resource, faceUV), sprite, inside ? facing.getOpposite(): facing, inside ? ModelRotation.X180_Y0: ModelRotation.X0_Y0, null, false, true); + } + + private BakedQuad reBakeQuadForBlock(BakedQuad original, BlockPos pos, Block block, EnumFacing facing, TextureAtlasSprite sprite, boolean inside) { + BakedQuad transformedQuad = getTransformedQuad(pos, block, facing, null, sprite, inside); + int[] transformedFaceData = transformedQuad.getVertexData(); + + int tintIndex = original.getTintIndex(); + EnumFacing face = original.getFace(); + int[] faceData = original.getVertexData().clone(); + + for (int i = 0; i < 4; i++) { + int storeIndex = i * 7; + + float[] d = new float[3]; + + for (int j = 0; j < 3; j++) { + d[j] = (Float.intBitsToFloat(faceData[storeIndex + j]) * 16) - (Float.intBitsToFloat(transformedFaceData[storeIndex + j]) * 16); + } + + faceData[storeIndex] = transformedFaceData[storeIndex]; + faceData[storeIndex + 1] = transformedFaceData[storeIndex + 1]; + faceData[storeIndex + 2] = transformedFaceData[storeIndex + 2]; + faceData[storeIndex + 4] = transformedFaceData[storeIndex + 4]; + faceData[storeIndex + 5] = transformedFaceData[storeIndex + 5]; + /* + faceData[storeIndex + 4] = getDeltaU(faceData[storeIndex + 4], d, facing, storeIndex / 7); + faceData[storeIndex + 5] = getDeltaV(faceData[storeIndex + 5], d, facing, storeIndex / 7);*/ + } + + return new BakedQuad(faceData, tintIndex, face); + } + + //Attempt to get the correct side the block, left for future reference + /*private int getSign(float i) { + return i < 0 ? -1: 1; + } + + private int getDeltaU(int origU, float[] delta, EnumFacing facing, int corner) { + int d = 0; + float d1 = delta[0]; + float d2 = delta[2]; + switch (facing) { + + case DOWN: + case UP: + d = Math.abs(d1) > 0 ? getSign(d1) * 261817 + 261816 * ((int)d1 - 1): 0; + break; + case NORTH: + case SOUTH: + d = Math.abs(d1) > 0 ? getSign(d1) * 261817 + 261816 * ((int)d1 - 1): 0; + break; + case WEST: + case EAST: + d = Math.abs(d2) > 0 ? getSign(d2) * 261817 + 261816 * ((int)d2 - 1): 0; + break; + } + + return origU - d; + } + + private int getDeltaV(int origV, float[] delta, EnumFacing facing, int corner) { + int d = 0; + float d1 = delta[1]; + float d2 = delta[2]; + int sign = getSign(d1); + int sign2 = getSign(d2); + switch (facing) { + case DOWN: + case UP: + d = Math.abs(d2) > 1 ? ((sign2 == -1 && corner != 0 && corner != 1) ? sign2: 0) * 261817 + 261816 * ((int)d2 - 1): 0; + break; + case NORTH: + case SOUTH: + case WEST: + case EAST: + d = Math.abs(d1) >= 0 ? ((sign != -1 && (corner == 0 || corner == 3)) ? 261816 * 2: (sign == -1 && (corner == 1 || corner == 2)) ? 261816 / ((int)Math.abs(d1)): 0): 0; + break; + } + if (facing == EnumFacing.EAST) System.out.println("D:" + d + "; " + d1 + "; s:" + sign + "; c:" + corner + "; m:" + ((int)d1 - sign)); + + return origV - d; + }*/ + + @Override + public List getFaceQuads(EnumFacing side) { + List allFaceQuads = new LinkedList(); + + for (BakedQuad quad: quads) { + if (FaceBakery.getFacingFromVertexData(quad.getVertexData()) == side) { + allFaceQuads.add(quad); + } + } + + return allFaceQuads; + } + + @Override + public List getGeneralQuads() { + return new LinkedList(quads); + } + + @Override + public boolean isAmbientOcclusion() { + return false; + } + + @Override + public boolean isGui3d() { + return false; + } + + @Override + public boolean isBuiltInRenderer() { + return false; + } + + @Override + public TextureAtlasSprite getParticleTexture() { + return normalSprite; + } + + @Override + public ItemCameraTransforms getItemCameraTransforms() { + return ItemCameraTransforms.DEFAULT; + } + } +} diff --git a/src/main/java/vswe/stevesfactory/blocks/client/BakedEmitterBlockModel.java b/src/main/java/vswe/stevesfactory/blocks/client/BakedEmitterBlockModel.java new file mode 100644 index 000000000..b5936a530 --- /dev/null +++ b/src/main/java/vswe/stevesfactory/blocks/client/BakedEmitterBlockModel.java @@ -0,0 +1,208 @@ +package vswe.stevesfactory.blocks.client; + +import com.google.common.base.Function; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.*; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.vertex.VertexFormat; +import net.minecraft.client.resources.model.IBakedModel; +import net.minecraft.client.resources.model.ModelRotation; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.IFlexibleBakedModel; +import net.minecraftforge.client.model.ISmartBlockModel; +import net.minecraftforge.common.property.IExtendedBlockState; +import org.lwjgl.util.vector.Vector3f; +import vswe.stevesfactory.blocks.BlockCableOutput; + +import java.util.LinkedList; +import java.util.List; + +enum SideQuad { + STRONG, + WEAK, + IDLE +} + + +//Needed to render all the sides individually, if they where made with JSON it would be a huge amount of files, the new format is not good for dynamic and advanced blocks +public class BakedEmitterBlockModel implements IFlexibleBakedModel, ISmartBlockModel { + + private VertexFormat format; + private TextureAtlasSprite strongSprite; + private TextureAtlasSprite weakSprite; + private TextureAtlasSprite idleSprite; + + private BakedQuad[] strongQuads = new BakedQuad[EnumFacing.values().length]; + private BakedQuad[] weakQuads = new BakedQuad[EnumFacing.values().length]; + private BakedQuad[] idleQuads = new BakedQuad[EnumFacing.values().length]; + + public BakedEmitterBlockModel(VertexFormat format, Function bakedTextureGetter) { + + this.format = format; + + FaceBakery faceBakery = new FaceBakery(); + BlockFaceUV bfUV = new BlockFaceUV(new float[]{0, 0, 16, 16}, 0); + strongSprite = bakedTextureGetter.apply(EmitterBlockModel.STRONG); + weakSprite = bakedTextureGetter.apply(EmitterBlockModel.WEAK); + idleSprite = bakedTextureGetter.apply(EmitterBlockModel.IDLE); + + Vector3f v1 = new Vector3f(0, 0, 0); + Vector3f v2 = new Vector3f(16, 16, 16); + + for (EnumFacing facing: EnumFacing.values()) { + strongQuads[facing.getIndex()] = faceBakery.makeBakedQuad(v1, v2, new BlockPartFace(facing, -1, "stevesfactorymanager:blocks/cable_output_strong", bfUV), strongSprite, facing, ModelRotation.X0_Y0, null, false, true); + weakQuads[facing.getIndex()] = faceBakery.makeBakedQuad(v1, v2, new BlockPartFace(facing, -1, "stevesfactorymanager:blocks/cable_weak_strong", bfUV), weakSprite, facing, ModelRotation.X0_Y0, null, false, true); + idleQuads[facing.getIndex()] = faceBakery.makeBakedQuad(v1, v2, new BlockPartFace(facing, -1, "stevesfactorymanager:blocks/cable_idle", bfUV), idleSprite, facing, ModelRotation.X0_Y0, null, false, true); + } + } + + @Override + public List getFaceQuads(EnumFacing side) { + //This should never be called! The handleBlockState returns an AssembledBakedModel + throw new UnsupportedOperationException(); + } + + @Override + public List getGeneralQuads() { + //This should never be called! The handleBlockState returns an AssembledBakedModel + throw new UnsupportedOperationException(); + } + + @Override + public boolean isAmbientOcclusion() { + return true; + } + + @Override + public boolean isGui3d() { + return false; + } + + @Override + public boolean isBuiltInRenderer() { + return false; + } + + @Override + public TextureAtlasSprite getParticleTexture() { + return idleSprite; + } + + @Override + public ItemCameraTransforms getItemCameraTransforms() { + return ItemCameraTransforms.DEFAULT; + } + + @Override + public VertexFormat getFormat() { + return format; + } + + @Override + public IBakedModel handleBlockState(IBlockState state) { + + if (state instanceof IExtendedBlockState) { + IExtendedBlockState blockState = (IExtendedBlockState) state; + return new AssembledBakedModel(blockState); + } + + return new AssembledBakedModel(); + } + + //Apparently it needs to be separate because it could be overridden my another thread as rendering is multithreaded + //https://github.com/TheGreyGhost/MinecraftByExample/blob/master/src/main/java/minecraftbyexample/mbe05_block_smartblockmodel2/CompositeModel.java + public class AssembledBakedModel implements IBakedModel + { + + private SideQuad[] sideQuads = new SideQuad[EnumFacing.values().length]; + + public AssembledBakedModel(IExtendedBlockState blockState) { + Object obj = blockState.getValue(BlockCableOutput.STRONG_SIDES); + + if (obj != null) { + + int strongVals = blockState.getValue(BlockCableOutput.STRONG_SIDES); + int weakVals = blockState.getValue(BlockCableOutput.WEAK_SIDES); + + for (EnumFacing facing: EnumFacing.values()) { + if ((strongVals & (1 << facing.getIndex())) >> facing.getIndex() == 1) { + sideQuads[facing.getIndex()] = SideQuad.STRONG; + } else if ((weakVals & (1 << facing.getIndex())) >> facing.getIndex() == 1) { + sideQuads[facing.getIndex()] = SideQuad.WEAK; + } else { + sideQuads[facing.getIndex()] = SideQuad.IDLE; + } + } + } else { + for (int i = 0; i < 6; i++) { + sideQuads[i] = SideQuad.IDLE; + } + } + } + + public AssembledBakedModel() { + for (int i = 0; i < 6; i++) { + sideQuads[i] = SideQuad.IDLE; + } + } + + private BakedQuad getQuadFromSide(SideQuad sideQuad, EnumFacing facing) { + switch (sideQuad) { + case STRONG: + return strongQuads[facing.getIndex()]; + case WEAK: + return weakQuads[facing.getIndex()]; + case IDLE: + default: + return idleQuads[facing.getIndex()]; + } + } + + @Override + public List getFaceQuads(EnumFacing side) { + List allFaceQuads = new LinkedList(); + + allFaceQuads.add(getQuadFromSide(sideQuads[side.getIndex()], side)); + + return allFaceQuads; + } + + @Override + public List getGeneralQuads() { + List allQuads = new LinkedList(); + + for (EnumFacing facing: EnumFacing.values()) { + allQuads.add(getQuadFromSide(sideQuads[facing.getIndex()], facing)); + } + + return allQuads; + } + + @Override + public boolean isAmbientOcclusion() { + return true; + } + + @Override + public boolean isGui3d() { + return false; + } + + @Override + public boolean isBuiltInRenderer() { + return false; + } + + @Override + public TextureAtlasSprite getParticleTexture() { + return idleSprite; + } + + @Override + public ItemCameraTransforms getItemCameraTransforms() { + return ItemCameraTransforms.DEFAULT; + } + + } +} diff --git a/src/main/java/vswe/stevesfactory/blocks/client/CamouflageBlockModel.java b/src/main/java/vswe/stevesfactory/blocks/client/CamouflageBlockModel.java new file mode 100644 index 000000000..53d5f957d --- /dev/null +++ b/src/main/java/vswe/stevesfactory/blocks/client/CamouflageBlockModel.java @@ -0,0 +1,55 @@ +package vswe.stevesfactory.blocks.client; + +import com.google.common.base.Function; +import com.google.common.collect.ImmutableList; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.vertex.VertexFormat; +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.IFlexibleBakedModel; +import net.minecraftforge.client.model.IModel; +import net.minecraftforge.client.model.IModelState; + +import java.util.Collection; + +public class CamouflageBlockModel implements IModel { + + public static final ResourceLocation MODEL = new ResourceLocation("stevesfactorymanager:block/cable_camouflage"); + public static final ResourceLocation MODEL_CLUSTER = new ResourceLocation("stevesfactorymanager:block/cable_cluster"); + public static final ResourceLocation MODEL_CLUSTER_ADV = new ResourceLocation("stevesfactorymanager:block/cable_cluster_advanced"); + + public static final ResourceLocation NORMAL = new ResourceLocation("stevesfactorymanager:blocks/cable_camo"); + public static final ResourceLocation INSIDE = new ResourceLocation("stevesfactorymanager:blocks/cable_camo_inside"); + public static final ResourceLocation TRANSFORM = new ResourceLocation("stevesfactorymanager:blocks/cable_camo_shape"); + + public static final ResourceLocation CL_SIDE = new ResourceLocation("stevesfactorymanager:blocks/cable_cluster_front"); + public static final ResourceLocation CL_ADV_SIDE = new ResourceLocation("stevesfactorymanager:blocks/cable_cluster_adv"); + public static final ResourceLocation CL_FRONT = new ResourceLocation("stevesfactorymanager:blocks/cable_cluster_front"); + public static final ResourceLocation CL_ADV_FRONT = new ResourceLocation("stevesfactorymanager:blocks/cable_cluster_adv_front"); + + private boolean isCamouflage; + + public CamouflageBlockModel(IResourceManager resourceManager, boolean isCamouflage) { + this.isCamouflage = isCamouflage; + } + + @Override + public Collection getDependencies() { + return isCamouflage ? ImmutableList.copyOf(new ResourceLocation[]{MODEL}): ImmutableList.copyOf(new ResourceLocation[]{MODEL, MODEL_CLUSTER, MODEL_CLUSTER_ADV}); + } + + @Override + public Collection getTextures() { + return isCamouflage ? ImmutableList.copyOf(new ResourceLocation[]{NORMAL, INSIDE, TRANSFORM}): ImmutableList.copyOf(new ResourceLocation[]{NORMAL, INSIDE, TRANSFORM, CL_SIDE, CL_FRONT, CL_ADV_SIDE, CL_ADV_FRONT}); + } + + @Override + public IFlexibleBakedModel bake(IModelState state, VertexFormat format, Function bakedTextureGetter) { + return new BakedCamouflageBlockModel(state, format, bakedTextureGetter, isCamouflage); + } + + @Override + public IModelState getDefaultState() { + return null; + } +} diff --git a/src/main/java/vswe/stevesfactory/blocks/client/EmitterBlockModel.java b/src/main/java/vswe/stevesfactory/blocks/client/EmitterBlockModel.java new file mode 100644 index 000000000..5f4e701dd --- /dev/null +++ b/src/main/java/vswe/stevesfactory/blocks/client/EmitterBlockModel.java @@ -0,0 +1,47 @@ +package vswe.stevesfactory.blocks.client; + +import com.google.common.base.Function; +import com.google.common.collect.ImmutableList; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.vertex.VertexFormat; +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.IFlexibleBakedModel; +import net.minecraftforge.client.model.IModel; +import net.minecraftforge.client.model.IModelState; + +import java.util.Collection; + +public class EmitterBlockModel implements IModel{ + + public EmitterBlockModel(IResourceManager resourceManager) { + + } + + public static final ResourceLocation EMITTER_MODEL = new ResourceLocation("stevesfactorymanager:block/cable_emitter"); + + public static final ResourceLocation STRONG = new ResourceLocation("stevesfactorymanager:blocks/cable_output_strong"); + public static final ResourceLocation WEAK = new ResourceLocation("stevesfactorymanager:blocks/cable_output_weak"); + public static final ResourceLocation IDLE = new ResourceLocation("stevesfactorymanager:blocks/cable_idle"); + + @Override + public Collection getDependencies() { + return ImmutableList.copyOf(new ResourceLocation[]{EMITTER_MODEL}); + } + + @Override + public Collection getTextures() { + return ImmutableList.copyOf(new ResourceLocation[]{STRONG, WEAK, IDLE}); + } + + @Override + public IFlexibleBakedModel bake(IModelState state, VertexFormat format, Function bakedTextureGetter) { + + return new BakedEmitterBlockModel(format, bakedTextureGetter); + } + + @Override + public IModelState getDefaultState() { + return null; + } +} diff --git a/src/main/java/vswe/stevesfactory/blocks/client/ModelLoader.java b/src/main/java/vswe/stevesfactory/blocks/client/ModelLoader.java new file mode 100644 index 000000000..058d31a11 --- /dev/null +++ b/src/main/java/vswe/stevesfactory/blocks/client/ModelLoader.java @@ -0,0 +1,35 @@ +package vswe.stevesfactory.blocks.client; + +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.ICustomModelLoader; +import net.minecraftforge.client.model.IModel; +import net.minecraftforge.client.model.ModelLoaderRegistry; +import vswe.stevesfactory.StevesFactoryManager; + +public class ModelLoader implements ICustomModelLoader { + + private IResourceManager resourceManager; + + @Override + public boolean accepts(ResourceLocation modelLocation) { + return modelLocation.getResourceDomain().equals(StevesFactoryManager.MODID.toLowerCase()) && modelLocation.getResourcePath().startsWith("models/block/builtin/"); + } + + @Override + public IModel loadModel(ResourceLocation modelLocation) { + String model = modelLocation.getResourcePath().substring("models/block/builtin/".length()); + if (model.equals("cable_emitter")) { + return new EmitterBlockModel(resourceManager); + } else if(model.equals("cable_camouflage") || model.equals("cable_cluster")) { + return new CamouflageBlockModel(resourceManager, model.equals("cable_camouflage")); + } else { + return ModelLoaderRegistry.getMissingModel(); + } + } + + @Override + public void onResourceManagerReload(IResourceManager resourceManager) { + this.resourceManager = resourceManager; + } +} diff --git a/src/main/java/vswe/stevesfactory/components/CheckBoxList.java b/src/main/java/vswe/stevesfactory/components/CheckBoxList.java index f6d85b6aa..223173592 100644 --- a/src/main/java/vswe/stevesfactory/components/CheckBoxList.java +++ b/src/main/java/vswe/stevesfactory/components/CheckBoxList.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/CommandExecutor.java b/src/main/java/vswe/stevesfactory/components/CommandExecutor.java index 01ba59e2a..95a635820 100644 --- a/src/main/java/vswe/stevesfactory/components/CommandExecutor.java +++ b/src/main/java/vswe/stevesfactory/components/CommandExecutor.java @@ -5,7 +5,7 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; +import net.minecraft.util.EnumFacing; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; @@ -23,7 +23,7 @@ public class CommandExecutor { List itemBuffer; List craftingBufferHigh; List craftingBufferLow; - List liquidBuffer; + List fluidBuffer; private List usedCommands; public static final int MAX_FLUID_TRANSFER = 10000000; @@ -34,17 +34,17 @@ public CommandExecutor(TileEntityManager manager) { itemBuffer = new ArrayList(); craftingBufferHigh = new ArrayList(); craftingBufferLow = new ArrayList(); - liquidBuffer = new ArrayList(); + fluidBuffer = new ArrayList(); usedCommands = new ArrayList(); } - private CommandExecutor(TileEntityManager manager, List itemBufferSplit, List craftingBufferHighSplit, List craftingBufferLowSplit, List liquidBufferSplit, List usedCommandCopy) { + private CommandExecutor(TileEntityManager manager, List itemBufferSplit, List craftingBufferHighSplit, List craftingBufferLowSplit, List fluidBufferSplit, List usedCommandCopy) { this.manager = manager; this.itemBuffer = itemBufferSplit; this.craftingBufferHigh = craftingBufferHighSplit; this.craftingBufferLow = craftingBufferLowSplit; this.usedCommands = usedCommandCopy; - this.liquidBuffer = liquidBufferSplit; + this.fluidBuffer = fluidBufferSplit; } public void executeTriggerCommand(FlowComponent command, EnumSet validTriggerOutputs) { @@ -105,21 +105,21 @@ private void executeCommand(FlowComponent command, int connectionId) { } } return; - case LIQUID_INPUT: + case FLUID_INPUT: List inputTank = getTanks(command.getMenus().get(0)); if (inputTank != null) { getValidTanks(command.getMenus().get(1), inputTank); - getLiquids(command.getMenus().get(2), inputTank); + getFluids(command.getMenus().get(2), inputTank); } break; - case LIQUID_OUTPUT: + case FLUID_OUTPUT: List outputTank = getTanks(command.getMenus().get(0)); if (outputTank != null) { getValidTanks(command.getMenus().get(1), outputTank); - insertLiquids(command.getMenus().get(2), outputTank); + insertFluids(command.getMenus().get(2), outputTank); } break; - case LIQUID_CONDITION: + case FLUID_CONDITION: List conditionTank = getTanks(command.getMenus().get(0)); if (conditionTank != null) { getValidTanks(command.getMenus().get(1), conditionTank); @@ -205,7 +205,7 @@ private void executeCommand(FlowComponent command, int connectionId) { ItemStack itemStack = items.isFirstRadioButtonSelected() ? null : ((ItemSetting)items.getSettings().get(0)).getItem(); for (SlotInventoryHolder slotInventoryHolder : camouflage) { slotInventoryHolder.getCamouflage().setBounds(shape); - for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { + for (int i = 0; i < EnumFacing.values().length; i++) { if (sides.isSideRequired(i)) { slotInventoryHolder.getCamouflage().setItem(itemStack, i, inside.getCurrentType()); } @@ -314,7 +314,7 @@ private static void addContainer(List inventories, List lst, TileEntity te) { for (SlotInventoryHolder slotInventoryHolder : lst) { - if (slotInventoryHolder.getTile().xCoord == te.xCoord && slotInventoryHolder.getTile().yCoord == te.yCoord && slotInventoryHolder.getTile().zCoord == te.zCoord && slotInventoryHolder.getTile().getClass().equals(te.getClass())) { + if (slotInventoryHolder.getTile().getPos().getX() == te.getPos().getX() && slotInventoryHolder.getTile().getPos().getY() == te.getPos().getY() && slotInventoryHolder.getTile().getPos().getZ() == te.getPos().getZ() && slotInventoryHolder.getTile().getClass().equals(te.getClass())) { return true; } } @@ -332,7 +332,7 @@ private void getValidSlots(ComponentMenu componentMenu, List tanks) { + private void getFluids(ComponentMenu componentMenu, List tanks) { for (SlotInventoryHolder tank : tanks) { ComponentMenuStuff menuItem = (ComponentMenuStuff)componentMenu; if (tank.getTank() instanceof TileEntityCreative) { if (menuItem.useWhiteList()) { for (SlotSideTarget slot : tank.getValidSlots().values()) { for (Setting setting : menuItem.getSettings()) { - Fluid fluid = ((LiquidSetting)setting).getFluid(); + Fluid fluid = ((FluidSetting)setting).getFluid(); if (fluid != null) { - FluidStack liquid = new FluidStack(fluid, setting.isLimitedByAmount() ? setting.getAmount() : setting.getDefaultAmount()); + FluidStack fluidStack = new FluidStack(fluid, setting.isLimitedByAmount() ? setting.getAmount() : setting.getDefaultAmount()); - if (liquid != null) { - addLiquidToBuffer(menuItem, tank, setting, liquid, 0); + if (fluidStack != null) { + addFluidToBuffer(menuItem, tank, setting, fluidStack, 0); } } } @@ -510,7 +510,7 @@ private void getLiquids(ComponentMenu componentMenu, List t for (SlotSideTarget slot : tank.getValidSlots().values()) { List tankInfos = new ArrayList(); for (int side : slot.getSides()) { - FluidTankInfo[] currentTankInfos = tank.getTank().getTankInfo(ForgeDirection.VALID_DIRECTIONS[side]); + FluidTankInfo[] currentTankInfos = tank.getTank().getTankInfo(EnumFacing.getFront(side)); if (currentTankInfos == null) { continue; } @@ -538,11 +538,11 @@ private void getLiquids(ComponentMenu componentMenu, List t fluidStack = fluidStack.copy(); - Setting setting = isLiquidValid(componentMenu, fluidStack); - addLiquidToBuffer(menuItem, tank, setting, fluidStack, side); + Setting setting = isFluidValid(componentMenu, fluidStack); + addFluidToBuffer(menuItem, tank, setting, fluidStack, side); } - for (FluidTankInfo fluidTankInfo : tank.getTank().getTankInfo(ForgeDirection.VALID_DIRECTIONS[side])) { + for (FluidTankInfo fluidTankInfo : tank.getTank().getTankInfo(EnumFacing.getFront(side))) { if (fluidTankInfo != null) { tankInfos.add(fluidTankInfo); } @@ -554,22 +554,22 @@ private void getLiquids(ComponentMenu componentMenu, List t } - private void addLiquidToBuffer(ComponentMenuStuff menuItem, SlotInventoryHolder tank, Setting setting, FluidStack fluidStack, int side) { + private void addFluidToBuffer(ComponentMenuStuff menuItem, SlotInventoryHolder tank, Setting setting, FluidStack fluidStack, int side) { if ((menuItem.useWhiteList() == (setting != null)) || (setting != null && setting.isLimitedByAmount())) { FlowComponent owner = menuItem.getParent(); - StackTankHolder target = new StackTankHolder(fluidStack, tank.getTank(), ForgeDirection.VALID_DIRECTIONS[side]); + StackTankHolder target = new StackTankHolder(fluidStack, tank.getTank(), EnumFacing.getFront(side)); boolean added = false; - for (LiquidBufferElement liquidBufferElement : liquidBuffer) { - if (liquidBufferElement.addTarget(owner, setting, tank, target)) { + for (FluidBufferElement fluidBufferElement : fluidBuffer) { + if (fluidBufferElement.addTarget(owner, setting, tank, target)) { added = true; break; } } if (!added) { - LiquidBufferElement itemBufferElement = new LiquidBufferElement(owner, setting, tank, menuItem.useWhiteList(), target); - liquidBuffer.add(itemBufferElement); + FluidBufferElement itemBufferElement = new FluidBufferElement(owner, setting, tank, menuItem.useWhiteList(), target); + fluidBuffer.add(itemBufferElement); } } @@ -587,13 +587,13 @@ private Setting isItemValid(ComponentMenu componentMenu, ItemStack itemStack) { return null; } - private Setting isLiquidValid(ComponentMenu componentMenu, FluidStack fluidStack) { + private Setting isFluidValid(ComponentMenu componentMenu, FluidStack fluidStack) { ComponentMenuStuff menuItem = (ComponentMenuStuff)componentMenu; if (fluidStack != null) { - int fluidId = fluidStack.fluidID; + String fluidName = fluidStack.getFluid().getName(); for (Setting setting : menuItem.getSettings()) { - if (setting.isValid() && ((LiquidSetting)setting).getLiquidId() == fluidId) { + if (setting.isValid() && ((FluidSetting)setting).getFluidName().equals(fluidName)) { return setting; } } @@ -703,43 +703,43 @@ private void insertItemsFromInputBufferElement(ComponentMenuStuff menuItem, List } - private void insertLiquids(ComponentMenu componentMenu, List tanks) { + private void insertFluids(ComponentMenu componentMenu, List tanks) { ComponentMenuStuff menuItem = (ComponentMenuStuff)componentMenu; - List outputCounters = new ArrayList(); + List outputCounters = new ArrayList(); for (SlotInventoryHolder tankHolder : tanks) { if (!tankHolder.isShared()) { outputCounters.clear(); } IFluidHandler tank = tankHolder.getTank(); - Iterator bufferIterator = liquidBuffer.iterator(); + Iterator bufferIterator = fluidBuffer.iterator(); while(bufferIterator.hasNext()) { - LiquidBufferElement liquidBufferElement = bufferIterator.next(); + FluidBufferElement fluidBufferElement = bufferIterator.next(); - Iterator liquidIterator = liquidBufferElement.getHolders().iterator(); - while (liquidIterator.hasNext()) { - StackTankHolder holder = liquidIterator.next(); + Iterator fluidIterator = fluidBufferElement.getHolders().iterator(); + while (fluidIterator.hasNext()) { + StackTankHolder holder = fluidIterator.next(); FluidStack fluidStack = holder.getFluidStack(); - Setting setting = isLiquidValid(componentMenu, fluidStack); + Setting setting = isFluidValid(componentMenu, fluidStack); if ((menuItem.useWhiteList() == (setting == null)) && (setting == null || !setting.isLimitedByAmount())) { continue; } - OutputLiquidCounter outputLiquidCounter = null; - for (OutputLiquidCounter e : outputCounters) { + OutputFluidCounter outputFluidCounter = null; + for (OutputFluidCounter e : outputCounters) { if (e.areSettingsSame(setting)) { - outputLiquidCounter = e; + outputFluidCounter = e; break; } } - if (outputLiquidCounter == null) { - outputLiquidCounter = new OutputLiquidCounter(liquidBuffer, tanks, tankHolder, setting, menuItem.useWhiteList()); - outputCounters.add(outputLiquidCounter); + if (outputFluidCounter == null) { + outputFluidCounter = new OutputFluidCounter(fluidBuffer, tanks, tankHolder, setting, menuItem.useWhiteList()); + outputCounters.add(outputFluidCounter); } for (SlotSideTarget slot : tankHolder.getValidSlots().values()) { @@ -747,9 +747,9 @@ private void insertLiquids(ComponentMenu componentMenu, List 0) { FluidStack resource = fluidStack.copy(); @@ -757,12 +757,12 @@ private void insertLiquids(ComponentMenu componentMenu, List 0) { - tank.fill(ForgeDirection.VALID_DIRECTIONS[side], resource, true); - liquidBufferElement.decreaseStackSize(resource.amount); - outputLiquidCounter.modifyStackSize(resource.amount); + tank.fill(EnumFacing.getFront(side), resource, true); + fluidBufferElement.decreaseStackSize(resource.amount); + outputFluidCounter.modifyStackSize(resource.amount); holder.reduceAmount(resource.amount); if (holder.getSizeLeft() == 0) { - liquidIterator.remove(); + fluidIterator.remove(); break; } } @@ -779,18 +779,18 @@ private void insertLiquids(ComponentMenu componentMenu, List inventories, boolean useLiquids) { + private boolean searchForStuff(ComponentMenu componentMenu, List inventories, boolean useFluids) { if (inventories.get(0).isShared()) { Map conditionSettingCheckerMap = new HashMap(); for (int i = 0; i < inventories.size(); i++) { - calculateConditionData(componentMenu, inventories.get(i), conditionSettingCheckerMap, useLiquids); + calculateConditionData(componentMenu, inventories.get(i), conditionSettingCheckerMap, useFluids); } return checkConditionResult(componentMenu, conditionSettingCheckerMap); }else{ boolean useAnd = inventories.get(0).getSharedOption() == 1; for (int i = 0; i < inventories.size(); i++) { Map conditionSettingCheckerMap = new HashMap(); - calculateConditionData(componentMenu, inventories.get(i), conditionSettingCheckerMap, useLiquids); + calculateConditionData(componentMenu, inventories.get(i), conditionSettingCheckerMap, useFluids); if (checkConditionResult(componentMenu, conditionSettingCheckerMap)) { if (!useAnd) { @@ -804,9 +804,9 @@ private boolean searchForStuff(ComponentMenu componentMenu, List conditionSettingCheckerMap, boolean useLiquid) { - if (useLiquid) { - calculateConditionDataLiquid(componentMenu, inventoryHolder, conditionSettingCheckerMap); + private void calculateConditionData(ComponentMenu componentMenu, SlotInventoryHolder inventoryHolder, Map conditionSettingCheckerMap, boolean useFluids) { + if (useFluids) { + calculateConditionDataFluid(componentMenu, inventoryHolder, conditionSettingCheckerMap); }else{ calculateConditionDataItem(componentMenu, inventoryHolder, conditionSettingCheckerMap); } @@ -831,11 +831,11 @@ private void calculateConditionDataItem(ComponentMenu componentMenu, SlotInvento } } - private void calculateConditionDataLiquid(ComponentMenu componentMenu, SlotInventoryHolder tank, Map conditionSettingCheckerMap) { + private void calculateConditionDataFluid(ComponentMenu componentMenu, SlotInventoryHolder tank, Map conditionSettingCheckerMap) { for (SlotSideTarget slot : tank.getValidSlots().values()) { List tankInfos = new ArrayList(); for (int side : slot.getSides()) { - FluidTankInfo[] currentTankInfos = tank.getTank().getTankInfo(ForgeDirection.VALID_DIRECTIONS[side]); + FluidTankInfo[] currentTankInfos = tank.getTank().getTankInfo(EnumFacing.getFront(side)); if (currentTankInfos == null) { continue; } @@ -855,7 +855,7 @@ private void calculateConditionDataLiquid(ComponentMenu componentMenu, SlotInven } FluidStack fluidStack = fluidTankInfo.fluid; - Setting setting = isLiquidValid(componentMenu, fluidStack); + Setting setting = isFluidValid(componentMenu, fluidStack); if (setting != null) { ConditionSettingChecker conditionSettingChecker = conditionSettingCheckerMap.get(setting.getId()); if (conditionSettingChecker == null) { @@ -864,7 +864,7 @@ private void calculateConditionDataLiquid(ComponentMenu componentMenu, SlotInven conditionSettingChecker.addCount(fluidStack.amount); } } - for (FluidTankInfo fluidTankInfo : tank.getTank().getTankInfo(ForgeDirection.VALID_DIRECTIONS[side])) { + for (FluidTankInfo fluidTankInfo : tank.getTank().getTankInfo(EnumFacing.getFront(side))) { if (fluidTankInfo != null) { tankInfos.add(fluidTankInfo); } @@ -918,14 +918,14 @@ private boolean splitFlow(ComponentMenu componentMenu) { Connection connection = componentMenu.getParent().getConnection(i); if (!connectionOption.isInput() && connection != null) { List itemBufferSplit = new ArrayList(); - List liquidBufferSplit = new ArrayList(); + List fluidBufferSplit = new ArrayList(); for (ItemBufferElement element : itemBuffer) { itemBufferSplit.add(element.getSplitElement(amount, usedId, split.useFair())); } - for (LiquidBufferElement element : liquidBuffer) { - liquidBufferSplit.add(element.getSplitElement(amount, usedId, split.useFair())); + for (FluidBufferElement element : fluidBuffer) { + fluidBufferSplit.add(element.getSplitElement(amount, usedId, split.useFair())); } List usedCommandCopy = new ArrayList(); @@ -933,7 +933,7 @@ private boolean splitFlow(ComponentMenu componentMenu) { usedCommandCopy.add(usedCommand); } - CommandExecutor newExecutor = new CommandExecutor(manager, itemBufferSplit, new ArrayList(craftingBufferHigh), new ArrayList(craftingBufferLow), liquidBufferSplit, usedCommandCopy); + CommandExecutor newExecutor = new CommandExecutor(manager, itemBufferSplit, new ArrayList(craftingBufferHigh), new ArrayList(craftingBufferLow), fluidBufferSplit, usedCommandCopy); newExecutor.executeCommand(manager.getFlowItems().get(connection.getComponentId()), connection.getConnectionId()); usedId++; } diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenu.java b/src/main/java/vswe/stevesfactory/components/ComponentMenu.java index 84540dfb1..7d4521ed5 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenu.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenu.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; import vswe.stevesfactory.network.DataReader; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageAdvanced.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageAdvanced.java index b317f917a..d77ed392c 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageAdvanced.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageAdvanced.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageInside.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageInside.java index d0d025b03..0e2ca273f 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageInside.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageInside.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageItems.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageItems.java index d40d761cf..a2e8969cc 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageItems.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageItems.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageShape.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageShape.java index 17e25e4f5..755765c34 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageShape.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuCamouflageShape.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuContainer.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuContainer.java index cd76f502a..4e42d6a04 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuContainer.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuContainer.java @@ -1,33 +1,25 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; +import net.minecraft.client.renderer.GlStateManager; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntitySign; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.IChatComponent; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.Localization; import vswe.stevesfactory.blocks.ConnectionBlock; import vswe.stevesfactory.blocks.ConnectionBlockType; import vswe.stevesfactory.blocks.TileEntityManager; -import vswe.stevesfactory.interfaces.Color; -import vswe.stevesfactory.interfaces.ContainerManager; -import vswe.stevesfactory.interfaces.GuiBase; -import vswe.stevesfactory.interfaces.GuiManager; -import vswe.stevesfactory.interfaces.IAdvancedTooltip; +import vswe.stevesfactory.interfaces.*; import vswe.stevesfactory.network.DataBitHelper; import vswe.stevesfactory.network.DataReader; import vswe.stevesfactory.network.DataWriter; @@ -190,18 +182,18 @@ class ToolTip implements IAdvancedTooltip { @SideOnly(Side.CLIENT) public ToolTip(GuiManager gui, ConnectionBlock block) { - items = new ItemStack[ForgeDirection.VALID_DIRECTIONS.length]; - itemTexts = new List[ForgeDirection.VALID_DIRECTIONS.length]; + items = new ItemStack[EnumFacing.values().length]; + itemTexts = new List[EnumFacing.values().length]; - World world = block.getTileEntity().getWorldObj(); - int x = block.getTileEntity().xCoord; - int y = block.getTileEntity().yCoord; - int z = block.getTileEntity().zCoord; + World world = block.getTileEntity().getWorld(); + int x = block.getTileEntity().getPos().getX(); + int y = block.getTileEntity().getPos().getY(); + int z = block.getTileEntity().getPos().getZ(); - for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) { - int targetX = x + direction.offsetX; - int targetY = y + direction.offsetY; - int targetZ = z + direction.offsetZ; + for (EnumFacing direction : EnumFacing.values()) { + int targetX = x + direction.getFrontOffsetX(); + int targetY = y + direction.getFrontOffsetY(); + int targetZ = z + direction.getFrontOffsetZ(); ItemStack item = gui.getItemStackFromBlock(world, targetX, targetY, targetZ); items[direction.ordinal()] = item; @@ -210,15 +202,15 @@ public ToolTip(GuiManager gui, ConnectionBlock block) { if (item != null && item.getItem() != null) { text.add(gui.getItemName(item)); } - String side = Localization.getForgeDirectionLocalization(direction.ordinal()).toString(); + String side = Localization.getDirectionLocalization(direction).toString(); text.add(Color.YELLOW + side); - TileEntity te = world.getTileEntity(targetX, targetY, targetZ); + TileEntity te = world.getTileEntity(new BlockPos(targetX, targetY, targetZ)); if (te instanceof TileEntitySign) { TileEntitySign sign = (TileEntitySign)te; - for (String txt : sign.signText) { - if (!txt.isEmpty()) { - text.add(Color.GRAY + txt); + for (IChatComponent txt : sign.signText) { + if (!txt.getFormattedText().isEmpty()) { + text.add(Color.GRAY + txt.getFormattedText()); } } } @@ -256,8 +248,8 @@ public int getExtraHeight(GuiBase gui) { private static final int SRC_Y = 20; @SideOnly(Side.CLIENT) - private void drawBlock(GuiBase gui, int x, int y, int mX, int mY, ForgeDirection direction) { - GL11.glColor4f(1, 1, 1, 1); + private void drawBlock(GuiBase gui, int x, int y, int mX, int mY, EnumFacing direction) { + GlStateManager.color(1, 1, 1, 1); GuiBase.bindTexture(gui.getComponentResource()); gui.drawTexture(x, y, SRC_X, SRC_Y + (CollisionHelper.inBounds(x, y, 16, 16, mX, mY) ? 16 : 0), 16, 16); @@ -269,7 +261,7 @@ private void drawBlock(GuiBase gui, int x, int y, int mX, int mY, ForgeDirection } @SideOnly(Side.CLIENT) - private boolean drawBlockMouseOver(GuiBase gui, int x, int y, int mX, int mY, ForgeDirection direction) { + private boolean drawBlockMouseOver(GuiBase gui, int x, int y, int mX, int mY, EnumFacing direction) { if (CollisionHelper.inBounds(x, y, 16, 16, mX, mY)) { List itemText = itemTexts[direction.ordinal()]; if (itemText != null) { @@ -285,25 +277,25 @@ private boolean drawBlockMouseOver(GuiBase gui, int x, int y, int mX, int mY, Fo @SideOnly(Side.CLIENT) @Override public void drawContent(GuiBase gui, int x, int y, int mX, int mY) { - drawBlock(gui, x + 25, y + 5, mX, mY, ForgeDirection.NORTH); - drawBlock(gui, x + 5, y + 25, mX, mY, ForgeDirection.WEST); - drawBlock(gui, x + 25, y + 45, mX, mY, ForgeDirection.SOUTH); - drawBlock(gui, x + 45, y + 25, mX, mY, ForgeDirection.EAST); + drawBlock(gui, x + 25, y + 5, mX, mY, EnumFacing.NORTH); + drawBlock(gui, x + 5, y + 25, mX, mY, EnumFacing.WEST); + drawBlock(gui, x + 25, y + 45, mX, mY, EnumFacing.SOUTH); + drawBlock(gui, x + 45, y + 25, mX, mY, EnumFacing.EAST); - drawBlock(gui, x + 80, y + 15, mX, mY, ForgeDirection.UP); - drawBlock(gui, x + 80, y + 35, mX, mY, ForgeDirection.DOWN); + drawBlock(gui, x + 80, y + 15, mX, mY, EnumFacing.UP); + drawBlock(gui, x + 80, y + 35, mX, mY, EnumFacing.DOWN); } @SideOnly(Side.CLIENT) private void drawMouseOverMouseOver(GuiBase gui, int x, int y, int mX, int mY) { boolean ignored = - drawBlockMouseOver(gui, x + 25, y + 5, mX, mY, ForgeDirection.NORTH) || - drawBlockMouseOver(gui, x + 5, y + 25, mX, mY, ForgeDirection.WEST) || - drawBlockMouseOver(gui, x + 25, y + 45, mX, mY, ForgeDirection.SOUTH) || - drawBlockMouseOver(gui, x + 45, y + 25, mX, mY, ForgeDirection.EAST) || + drawBlockMouseOver(gui, x + 25, y + 5, mX, mY, EnumFacing.NORTH) || + drawBlockMouseOver(gui, x + 5, y + 25, mX, mY, EnumFacing.WEST) || + drawBlockMouseOver(gui, x + 25, y + 45, mX, mY, EnumFacing.SOUTH) || + drawBlockMouseOver(gui, x + 45, y + 25, mX, mY, EnumFacing.EAST) || - drawBlockMouseOver(gui, x + 80, y + 15, mX, mY, ForgeDirection.UP) || - drawBlockMouseOver(gui, x + 80, y + 35, mX, mY, ForgeDirection.DOWN); + drawBlockMouseOver(gui, x + 80, y + 15, mX, mY, EnumFacing.UP) || + drawBlockMouseOver(gui, x + 80, y + 35, mX, mY, EnumFacing.DOWN); } @SideOnly(Side.CLIENT) @@ -573,9 +565,9 @@ public void drawMouseOver(GuiManager gui, int mX, int mY) { if (CollisionHelper.inBounds(5, 60, MENU_WIDTH - 20, 5, mX, mY)) { String str = Localization.ABSOLUTE_RANGES.toString() + ":"; - str += "\n" + Localization.X.toString() + " (" + (filter.lowerRange[0].getNumber() + getParent().getManager().xCoord) + ", " + (filter.higherRange[0].getNumber() + getParent().getManager().xCoord) + ")"; - str += "\n" + Localization.Y.toString() + " (" + (filter.lowerRange[1].getNumber() + getParent().getManager().yCoord) + ", " + (filter.higherRange[1].getNumber() + getParent().getManager().yCoord) + ")"; - str += "\n" + Localization.Z.toString() + " (" + (filter.lowerRange[2].getNumber() + getParent().getManager().zCoord) + ", " + (filter.higherRange[2].getNumber() + getParent().getManager().zCoord) + ")"; + str += "\n" + Localization.X.toString() + " (" + (filter.lowerRange[0].getNumber() + getParent().getManager().getPos().getX()) + ", " + (filter.higherRange[0].getNumber() + getParent().getManager().getPos().getX()) + ")"; + str += "\n" + Localization.Y.toString() + " (" + (filter.lowerRange[1].getNumber() + getParent().getManager().getPos().getY()) + ", " + (filter.higherRange[1].getNumber() + getParent().getManager().getPos().getY()) + ")"; + str += "\n" + Localization.Z.toString() + " (" + (filter.lowerRange[2].getNumber() + getParent().getManager().getPos().getZ()) + ", " + (filter.higherRange[2].getNumber() + getParent().getManager().getPos().getZ()) + ")"; gui.drawMouseOver(str, mX, mY); } diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuContainerScrap.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuContainerScrap.java index a392c011a..e8c0d2890 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuContainerScrap.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuContainerScrap.java @@ -1,7 +1,7 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.blocks.ConnectionBlockType; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuContainerTypes.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuContainerTypes.java index ddcede58c..a1eac4df3 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuContainerTypes.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuContainerTypes.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.blocks.ConnectionBlockType; import vswe.stevesfactory.interfaces.ContainerManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuCrafting.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuCrafting.java index f10a709a6..f51aa9157 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuCrafting.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuCrafting.java @@ -1,9 +1,8 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuCraftingPriority.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuCraftingPriority.java index 844e5906d..8117d6f3e 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuCraftingPriority.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuCraftingPriority.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuLiquid.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuFluid.java similarity index 79% rename from src/main/java/vswe/stevesfactory/components/ComponentMenuLiquid.java rename to src/main/java/vswe/stevesfactory/components/ComponentMenuFluid.java index 366b7f7d1..b4680c60e 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuLiquid.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuFluid.java @@ -1,10 +1,11 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.GuiManager; import vswe.stevesfactory.network.DataBitHelper; @@ -15,9 +16,9 @@ import java.util.Iterator; import java.util.List; -public class ComponentMenuLiquid extends ComponentMenuStuff { - public ComponentMenuLiquid(FlowComponent parent) { - super(parent, LiquidSetting.class); +public class ComponentMenuFluid extends ComponentMenuStuff { + public ComponentMenuFluid(FlowComponent parent) { + super(parent, FluidSetting.class); numberTextBoxes.addTextBox(amountTextBoxBuckets = new TextBoxNumber(10 ,50, 3, true) { @Override @@ -71,7 +72,7 @@ protected void drawResultObject(GuiManager gui, Object obj, int x, int y) { @SideOnly(Side.CLIENT) @Override protected void drawSettingObject(GuiManager gui, Setting setting, int x, int y) { - drawResultObject(gui,((LiquidSetting)setting).getFluid(), x, y); + drawResultObject(gui,((FluidSetting)setting).getFluid(), x, y); } @Override @@ -83,7 +84,7 @@ protected List getResultObjectMouseOver(Object obj) { @Override protected List getSettingObjectMouseOver(Setting setting) { - return getResultObjectMouseOver(((LiquidSetting)setting).getFluid()); + return getResultObjectMouseOver(((FluidSetting)setting).getFluid()); } @Override @@ -95,16 +96,16 @@ protected void updateTextBoxes() { @Override protected DataBitHelper getAmountBitLength() { - return DataBitHelper.MENU_LIQUID_AMOUNT; + return DataBitHelper.MENU_FLUID_AMOUNT; } @Override protected void readSpecificHeaderData(DataReader dr, DataTypeHeader header, Setting setting) { - LiquidSetting liquidSetting = (LiquidSetting)setting; + FluidSetting fluidSetting = (FluidSetting)setting; switch (header) { case SET_ITEM: - liquidSetting.setLiquidFromId(dr.readData(DataBitHelper.MENU_FLUID_ID)); + fluidSetting.setFluidFromName(dr.readString(DataBitHelper.MENU_FLUID_ID_LENGTH)); if (isEditing()) { updateTextBoxes(); @@ -116,10 +117,10 @@ protected void readSpecificHeaderData(DataReader dr, DataTypeHeader header, Sett @Override protected void writeSpecificHeaderData(DataWriter dw, DataTypeHeader header, Setting setting) { - LiquidSetting liquidSetting = (LiquidSetting)setting; + FluidSetting fluidSetting = (FluidSetting)setting; switch (header) { case SET_ITEM: - dw.writeData(liquidSetting.getLiquidId(), DataBitHelper.MENU_FLUID_ID); + dw.writeString(fluidSetting.getFluidName(), DataBitHelper.MENU_FLUID_ID_LENGTH); } } @@ -127,11 +128,11 @@ protected void writeSpecificHeaderData(DataWriter dw, DataTypeHeader header, Set @Override public String getName() { - return Localization.LIQUIDS_MENU.toString(); + return Localization.FLUIDS_MENU.toString(); } - protected LiquidSetting getSelectedSetting() { - return (LiquidSetting)selectedSetting; + protected FluidSetting getSelectedSetting() { + return (FluidSetting)selectedSetting; } @SideOnly(Side.CLIENT) @@ -157,9 +158,9 @@ protected List updateSearch(String search, boolean showAll) { public static String getDisplayName(Fluid fluid) { //different mods store the name in different ways apparently - String name = fluid.getLocalizedName(); + String name = fluid.getLocalizedName(new FluidStack(fluid, 1)); if (name.indexOf(".") != -1) { - name = FluidRegistry.getFluidName(fluid.getID()); + name = FluidRegistry.getFluidName(fluid); } return name; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuLiquidCondition.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuFluidCondition.java similarity index 82% rename from src/main/java/vswe/stevesfactory/components/ComponentMenuLiquidCondition.java rename to src/main/java/vswe/stevesfactory/components/ComponentMenuFluidCondition.java index d2cbf010c..0853e1372 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuLiquidCondition.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuFluidCondition.java @@ -5,8 +5,8 @@ import java.util.List; -public class ComponentMenuLiquidCondition extends ComponentMenuLiquid implements IConditionStuffMenu { - public ComponentMenuLiquidCondition(FlowComponent parent) { +public class ComponentMenuFluidCondition extends ComponentMenuFluid implements IConditionStuffMenu { + public ComponentMenuFluidCondition(FlowComponent parent) { super(parent); } diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuFluidOutput.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuFluidOutput.java new file mode 100644 index 000000000..4da063625 --- /dev/null +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuFluidOutput.java @@ -0,0 +1,10 @@ +package vswe.stevesfactory.components; + + +public class ComponentMenuFluidOutput extends ComponentMenuFluid { + public ComponentMenuFluidOutput(FlowComponent parent) { + super(parent); + + setFirstRadioButtonSelected(false); + } +} diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuGroup.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuGroup.java index 1727949e5..907a98f60 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuGroup.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuGroup.java @@ -102,7 +102,7 @@ public void writeToNBT(NBTTagCompound nbtTagCompound, boolean pickup) { @Override public void readNetworkComponent(DataReader dr) { - if (!getParent().getManager().getWorldObj().isRemote) { + if (!getParent().getManager().getWorld().isRemote) { int id = dr.readComponentId(); FlowComponent component = getParent().getManager().getFlowItems().get(id); boolean moveCluster = dr.readBoolean(); diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuInterval.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuInterval.java index 0ec3a495a..7f26e9aa1 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuInterval.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuInterval.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuItem.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuItem.java index a15942690..3fab5569c 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuItem.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuItem.java @@ -1,12 +1,11 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.RegistryNamespaced; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuLiquidOutput.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuLiquidOutput.java deleted file mode 100644 index 4b9f1475d..000000000 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuLiquidOutput.java +++ /dev/null @@ -1,10 +0,0 @@ -package vswe.stevesfactory.components; - - -public class ComponentMenuLiquidOutput extends ComponentMenuLiquid { - public ComponentMenuLiquidOutput(FlowComponent parent) { - super(parent); - - setFirstRadioButtonSelected(false); - } -} diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuListOrder.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuListOrder.java index 852a4cf1b..b8dc7e5e1 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuListOrder.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuListOrder.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuPulse.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuPulse.java index caefa3107..892fc1642 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuPulse.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuPulse.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuRedstoneOutput.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuRedstoneOutput.java index d54567d71..5c8c73ed1 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuRedstoneOutput.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuRedstoneOutput.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuRedstoneSides.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuRedstoneSides.java index a1f56db0b..9ee2a69e1 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuRedstoneSides.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuRedstoneSides.java @@ -1,10 +1,10 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.common.util.ForgeDirection; +import net.minecraft.util.EnumFacing; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; @@ -24,7 +24,7 @@ public ComponentMenuRedstoneSides(FlowComponent parent) { checkBoxList = new CheckBoxList(); - for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { + for (int i = 0; i < EnumFacing.values().length; i++) { checkBoxList.addCheckBox(new CheckBoxSide(i)); } @@ -59,7 +59,7 @@ public void updateSelectedOption(int selectedOption) { private class CheckBoxSide extends CheckBox { private int id; public CheckBoxSide(int id) { - super(Localization.getForgeDirectionLocalization(id), CHECKBOX_X + CHECKBOX_SPACING_X * (id % 2), CHECKBOX_Y + CHECKBOX_SPACING_Y * (id / 2)); + super(Localization.getDirectionLocalization(EnumFacing.getFront(id)), CHECKBOX_X + CHECKBOX_SPACING_X * (id % 2), CHECKBOX_Y + CHECKBOX_SPACING_Y * (id / 2)); this.id = id; } diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuRedstoneStrength.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuRedstoneStrength.java index 7a3ccda3c..6fed2b6dc 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuRedstoneStrength.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuRedstoneStrength.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuResult.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuResult.java index 5f54810ba..dbdf55f4c 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuResult.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuResult.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuSignText.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuSignText.java index 54e88c57c..7ef5170a2 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuSignText.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuSignText.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuSplit.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuSplit.java index 7d8bc550b..8ddf99868 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuSplit.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuSplit.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuStuff.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuStuff.java index 8a25aa1d2..06bd3cff6 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuStuff.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuStuff.java @@ -1,10 +1,10 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; @@ -568,7 +568,7 @@ private void writeData(DataWriter dw, DataTypeHeader header, Setting setting) { } //if the client send data to the server, do the update right away on that client - if (getParent().getManager().getWorldObj().isRemote) { + if (getParent().getManager().getWorld().isRemote) { onSettingContentChange(); } } diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuTarget.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuTarget.java index ecd404b55..c400ecc69 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuTarget.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuTarget.java @@ -1,12 +1,12 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.GlStateManager; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraftforge.common.util.ForgeDirection; -import org.lwjgl.opengl.GL11; +import net.minecraft.util.EnumFacing; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; @@ -77,7 +77,7 @@ public String getName() { } - public static ForgeDirection[] directions = ForgeDirection.VALID_DIRECTIONS; + public static EnumFacing[] directions = EnumFacing.values(); protected int selectedDirectionId; private boolean[] activatedDirections = new boolean[directions.length]; @@ -89,7 +89,7 @@ public String getName() { @Override public void draw(GuiManager gui, int mX, int mY) { for (int i = 0; i < directions.length; i++) { - ForgeDirection direction = directions[i]; + EnumFacing direction = directions[i]; int x = getDirectionX(i); int y = getDirectionY(i); @@ -100,11 +100,11 @@ public void draw(GuiManager gui, int mX, int mY) { gui.drawTexture(x, y, DIRECTION_SRC_X + srcDirectionX * DIRECTION_SIZE_W, DIRECTION_SRC_Y + srcDirectionY * DIRECTION_SIZE_H, DIRECTION_SIZE_W, DIRECTION_SIZE_H); - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_BLEND); + GlStateManager.pushMatrix(); + GlStateManager.enableBlend(); int color = selectedDirectionId != -1 && selectedDirectionId != i ? 0x70404040 : 0x404040; - gui.drawString(Localization.getForgeDirectionLocalization(i).toString(), x + DIRECTION_TEXT_X, y + DIRECTION_TEXT_Y, color); - GL11.glPopMatrix(); + gui.drawString(Localization.getDirectionLocalization(EnumFacing.getFront(i)).toString(), x + DIRECTION_TEXT_X, y + DIRECTION_TEXT_Y, color); + GlStateManager.popMatrix(); } if (selectedDirectionId != -1) { diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuTargetInventory.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuTargetInventory.java index d9365017d..322c92795 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuTargetInventory.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuTargetInventory.java @@ -1,9 +1,10 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumFacing; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; @@ -21,7 +22,7 @@ public ComponentMenuTargetInventory(FlowComponent parent) { textBoxes.addTextBox(startTextBox = new TextBoxNumber(39 ,49, 2, false) { @Override public void onNumberChanged() { - if (selectedDirectionId != -1 && getParent().getManager().getWorldObj().isRemote) { + if (selectedDirectionId != -1 && getParent().getManager().getWorld().isRemote) { writeData(DataTypeHeader.START_OR_TANK_DATA, getNumber()); } } @@ -29,7 +30,7 @@ public void onNumberChanged() { textBoxes.addTextBox(endTextBox = new TextBoxNumber(60 ,49, 2, false) { @Override public void onNumberChanged() { - if (selectedDirectionId != -1 && getParent().getManager().getWorldObj().isRemote) { + if (selectedDirectionId != -1 && getParent().getManager().getWorld().isRemote) { writeData(DataTypeHeader.END, getNumber()); } } @@ -165,7 +166,7 @@ public int getEnd(int i) { public void addErrors(List errors) { for (int i = 0; i < directions.length; i++) { if (isActive(i) && getStart(i) > getEnd(i)) { - errors.add(Localization.getForgeDirectionLocalization(i).toString() + " " + Localization.INVALID_RANGE.toString()); + errors.add(Localization.getDirectionLocalization(EnumFacing.getFront(i)).toString() + " " + Localization.INVALID_RANGE.toString()); } } diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuTargetTank.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuTargetTank.java index d63f05b9a..b37ddccb7 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuTargetTank.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuTargetTank.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuUpdateBlock.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuUpdateBlock.java index 6d0d9ca28..cb95106ce 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuUpdateBlock.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuUpdateBlock.java @@ -1,12 +1,12 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuVariable.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuVariable.java index ac162ae59..9ef457750 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuVariable.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuVariable.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; @@ -266,7 +266,7 @@ public void readNetworkComponent(DataReader dr) { } }else{ executed = dr.readBoolean(); - if (!getParent().getManager().getWorldObj().isRemote) { + if (!getParent().getManager().getWorld().isRemote) { getVariable().setExecuted(executed); } } diff --git a/src/main/java/vswe/stevesfactory/components/ComponentMenuVariableLoop.java b/src/main/java/vswe/stevesfactory/components/ComponentMenuVariableLoop.java index 1aeb5be13..05a832fb7 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentMenuVariableLoop.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentMenuVariableLoop.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.ContainerManager; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/components/ComponentType.java b/src/main/java/vswe/stevesfactory/components/ComponentType.java index ade06c445..cb433ab27 100644 --- a/src/main/java/vswe/stevesfactory/components/ComponentType.java +++ b/src/main/java/vswe/stevesfactory/components/ComponentType.java @@ -19,15 +19,15 @@ public enum ComponentType { FLOW_CONTROL(4, Localization.FLOW_CONTROL_SHORT, Localization.FLOW_CONTROL_LONG, new ConnectionSet[]{ConnectionSet.MULTIPLE_INPUT_2, ConnectionSet.MULTIPLE_INPUT_5, ConnectionSet.MULTIPLE_OUTPUT_2, ConnectionSet.MULTIPLE_OUTPUT_5}, ComponentMenuSplit.class, ComponentMenuResult.class), - LIQUID_INPUT(5, Localization.LIQUID_INPUT_SHORT, Localization.LIQUID_INPUT_LONG, + FLUID_INPUT(5, Localization.FLUID_INPUT_SHORT, Localization.FLUID_INPUT_LONG, new ConnectionSet[]{ConnectionSet.STANDARD}, - ComponentMenuTank.class, ComponentMenuTargetTank.class, ComponentMenuLiquid.class, ComponentMenuResult.class), - LIQUID_OUTPUT(6, Localization.LIQUID_OUTPUT_SHORT, Localization.LIQUID_OUTPUT_LONG, + ComponentMenuTank.class, ComponentMenuTargetTank.class, ComponentMenuFluid.class, ComponentMenuResult.class), + FLUID_OUTPUT(6, Localization.FLUID_OUTPUT_SHORT, Localization.FLUID_OUTPUT_LONG, new ConnectionSet[]{ConnectionSet.STANDARD}, - ComponentMenuTank.class, ComponentMenuTargetTank.class, ComponentMenuLiquidOutput.class, ComponentMenuResult.class), - LIQUID_CONDITION(7, Localization.LIQUID_CONDITION_SHORT, Localization.LIQUID_CONDITION_LONG, + ComponentMenuTank.class, ComponentMenuTargetTank.class, ComponentMenuFluidOutput.class, ComponentMenuResult.class), + FLUID_CONDITION(7, Localization.FLUID_CONDITION_SHORT, Localization.FLUID_CONDITION_LONG, new ConnectionSet[]{ConnectionSet.STANDARD_CONDITION}, - ComponentMenuTankCondition.class, ComponentMenuTargetTank.class, ComponentMenuLiquidCondition.class, ComponentMenuResult.class), + ComponentMenuTankCondition.class, ComponentMenuTargetTank.class, ComponentMenuFluidCondition.class, ComponentMenuResult.class), REDSTONE_EMITTER(8, Localization.REDSTONE_EMITTER_SHORT, Localization.REDSTONE_EMITTER_LONG, new ConnectionSet[]{ConnectionSet.STANDARD}, ComponentMenuEmitters.class, ComponentMenuRedstoneSidesEmitter.class, ComponentMenuRedstoneOutput.class, ComponentMenuPulse.class, ComponentMenuResult.class), diff --git a/src/main/java/vswe/stevesfactory/components/Connection.java b/src/main/java/vswe/stevesfactory/components/Connection.java index 7bd7a657c..142a8318d 100644 --- a/src/main/java/vswe/stevesfactory/components/Connection.java +++ b/src/main/java/vswe/stevesfactory/components/Connection.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/vswe/stevesfactory/components/ContainerFilter.java b/src/main/java/vswe/stevesfactory/components/ContainerFilter.java index 5e59a6580..d033573ec 100644 --- a/src/main/java/vswe/stevesfactory/components/ContainerFilter.java +++ b/src/main/java/vswe/stevesfactory/components/ContainerFilter.java @@ -188,13 +188,13 @@ public boolean matches(TileEntityManager manager, List selectedInventor int value = 0; switch (j) { case 0: - value = block.getTileEntity().xCoord - manager.xCoord; + value = block.getTileEntity().getPos().getX() - manager.getPos().getX(); break; case 1: - value = block.getTileEntity().yCoord - manager.yCoord; + value = block.getTileEntity().getPos().getY() - manager.getPos().getY(); break; case 2: - value = block.getTileEntity().zCoord - manager.zCoord; + value = block.getTileEntity().getPos().getZ() - manager.getPos().getZ(); break; case 3: value = block.getCableDistance(); diff --git a/src/main/java/vswe/stevesfactory/components/CraftingBufferElement.java b/src/main/java/vswe/stevesfactory/components/CraftingBufferElement.java index ebe0c53a1..cbd00c868 100644 --- a/src/main/java/vswe/stevesfactory/components/CraftingBufferElement.java +++ b/src/main/java/vswe/stevesfactory/components/CraftingBufferElement.java @@ -110,17 +110,17 @@ private void disposeOfExtraItem(ItemStack itemStack) { - double spawnX = manager.xCoord + rand.nextDouble() * 0.8 + 0.1; - double spawnY = manager.yCoord + rand.nextDouble() * 0.3 + 1.1; - double spawnZ = manager.zCoord + rand.nextDouble() * 0.8 + 0.1; + double spawnX = manager.getPos().getX() + rand.nextDouble() * 0.8 + 0.1; + double spawnY = manager.getPos().getY() + rand.nextDouble() * 0.3 + 1.1; + double spawnZ = manager.getPos().getZ() + rand.nextDouble() * 0.8 + 0.1; - EntityItem entityitem = new EntityItem(manager.getWorldObj(), spawnX, spawnY, spawnZ, itemStack); + EntityItem entityitem = new EntityItem(manager.getWorld(), spawnX, spawnY, spawnZ, itemStack); entityitem.motionX = rand.nextGaussian() * SPEED_MULTIPLIER; entityitem.motionY = rand.nextGaussian() * SPEED_MULTIPLIER + 0.2F; entityitem.motionZ = rand.nextGaussian() * SPEED_MULTIPLIER; - manager.getWorldObj().spawnEntityInWorld(entityitem); + manager.getWorld().spawnEntityInWorld(entityitem); } @Override diff --git a/src/main/java/vswe/stevesfactory/components/CraftingDummy.java b/src/main/java/vswe/stevesfactory/components/CraftingDummy.java index 0a01c9d83..7ba3c0127 100644 --- a/src/main/java/vswe/stevesfactory/components/CraftingDummy.java +++ b/src/main/java/vswe/stevesfactory/components/CraftingDummy.java @@ -49,7 +49,7 @@ public ItemStack getStackInRowAndColumn(int par1, int par2) { @Override - public ItemStack getStackInSlotOnClosing(int par1) { + public ItemStack removeStackFromSlot(int par1) { return null; } @@ -83,7 +83,7 @@ public IRecipe getRecipe() { for (int i = 0; i < CraftingManager.getInstance().getRecipeList().size(); ++i) { IRecipe recipe = (IRecipe) CraftingManager.getInstance().getRecipeList().get(i); - if (recipe.matches(this, crafting.getParent().getManager().getWorldObj())) { + if (recipe.matches(this, crafting.getParent().getManager().getWorld())) { return recipe; } } @@ -94,7 +94,7 @@ public IRecipe getRecipe() { private Map overrideMap; public boolean isItemValidForRecipe(IRecipe recipe, ItemSetting result, Map overrideMap, boolean advanced) { this.overrideMap = overrideMap; - if ((advanced && getRecipe() == null) || (!advanced && !recipe.matches(this, crafting.getParent().getManager().getWorldObj()))) { + if ((advanced && getRecipe() == null) || (!advanced && !recipe.matches(this, crafting.getParent().getManager().getWorld()))) { return false; } ItemStack itemStack = recipe.getCraftingResult(this); diff --git a/src/main/java/vswe/stevesfactory/components/FlowComponent.java b/src/main/java/vswe/stevesfactory/components/FlowComponent.java index dea0e64eb..5215b96a4 100644 --- a/src/main/java/vswe/stevesfactory/components/FlowComponent.java +++ b/src/main/java/vswe/stevesfactory/components/FlowComponent.java @@ -1,12 +1,12 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.GlStateManager; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import org.lwjgl.opengl.GL11; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.blocks.TileEntityManager; import vswe.stevesfactory.interfaces.ContainerManager; @@ -214,8 +214,8 @@ public void update(float partial) { @SideOnly(Side.CLIENT) public void draw(GuiManager gui, int mX, int mY, int zLevel) { - GL11.glPushMatrix(); - GL11.glTranslatef(0, 0, zLevel); + GlStateManager.pushMatrix(); + GlStateManager.translate(0, 0, zLevel); gui.drawTexture(x, y, isLarge ? COMPONENT_SRC_LARGE_X : COMPONENT_SRC_X, COMPONENT_SRC_Y, getComponentWidth(), getComponentHeight()); @@ -252,10 +252,10 @@ public void draw(GuiManager gui, int mX, int mY, int zLevel) { gui.drawString(menu.getName(), x + MENU_X + MENU_ITEM_TEXT_X, y + getMenuItemY(i) + MENU_ITEM_TEXT_Y, 0x404040); if (i == openMenuId) { - GL11.glPushMatrix(); - GL11.glTranslatef(itemX, getMenuAreaY(i), 0); + GlStateManager.pushMatrix(); + GlStateManager.translate(itemX, getMenuAreaY(i), 0); menu.draw(gui, mX - itemX, mY - getMenuAreaY(i)); - GL11.glPopMatrix(); + GlStateManager.popMatrix(); } } } @@ -304,8 +304,8 @@ public void draw(GuiManager gui, int mX, int mY, int zLevel) { int endX = otherLocation[0] + connectionWidth / 2; int endY = otherLocation[1] + connectionHeight / 2; - GL11.glPushMatrix(); - GL11.glTranslatef(0, 0, -zLevel); + GlStateManager.pushMatrix(); + GlStateManager.translate(0, 0, -zLevel); List nodes = connectedConnection.getNodes(); for (int j = 0; j <= nodes.size(); j++) { int x1, y1, x2, y2; @@ -335,7 +335,7 @@ public void draw(GuiManager gui, int mX, int mY, int zLevel) { gui.drawTexture(x, y, NODE_SRC_X + srcXNode * NODE_SIZE, NODE_SRC_Y, NODE_SIZE, NODE_SIZE); } - GL11.glPopMatrix(); + GlStateManager.popMatrix(); } } @@ -394,7 +394,7 @@ public void draw(GuiManager gui, int mX, int mY, int zLevel) { } } - GL11.glPopMatrix(); + GlStateManager.popMatrix(); } private String cachedName; @@ -453,10 +453,10 @@ public void drawMouseOver(GuiManager gui, int mX, int mY) { ComponentMenu menu = menus.get(i); if (menu.isVisible() && i == openMenuId) { - GL11.glPushMatrix(); - GL11.glTranslatef(getMenuAreaX(), getMenuAreaY(i), 0); + GlStateManager.pushMatrix(); + GlStateManager.translate(getMenuAreaX(), getMenuAreaY(i), 0); menu.drawMouseOver(gui, mX - getMenuAreaX(), mY - getMenuAreaY(i)); - GL11.glPopMatrix(); + GlStateManager.popMatrix(); } } } @@ -701,7 +701,7 @@ private boolean checkForLoops(List usedComponents, FlowComponent curren } private void addConnection(int id, Connection connection) { - if (getManager().getWorldObj() != null && getManager().getWorldObj().isRemote) { + if (getManager().getWorld() != null && getManager().getWorld().isRemote) { DataWriter dw = PacketHandler.getWriterForServerComponentPacket(this, null); if (connection != null) { writeConnectionData(dw, id, true, connection.getComponentId(), connection.getConnectionId()); @@ -1064,7 +1064,7 @@ public void readNetworkComponent(DataReader dr) { int id = dr.readData(DataBitHelper.NODE_ID); int length = -1; - if (manager.getWorldObj().isRemote) { + if (manager.getWorld().isRemote) { length = dr.readData(DataBitHelper.NODE_ID); } boolean deleted = dr.readBoolean(); @@ -1079,7 +1079,7 @@ public void readNetworkComponent(DataReader dr) { Point node; if (created) { node = new Point(); - if (connection.getNodes().size() < MAX_NODES && (!manager.getWorldObj().isRemote || length > connection.getNodes().size())) { + if (connection.getNodes().size() < MAX_NODES && (!manager.getWorld().isRemote || length > connection.getNodes().size())) { connection.getNodes().add(id, node); } }else{ diff --git a/src/main/java/vswe/stevesfactory/components/LiquidBufferElement.java b/src/main/java/vswe/stevesfactory/components/FluidBufferElement.java similarity index 86% rename from src/main/java/vswe/stevesfactory/components/LiquidBufferElement.java rename to src/main/java/vswe/stevesfactory/components/FluidBufferElement.java index 71c06cdb1..4cfac4c96 100644 --- a/src/main/java/vswe/stevesfactory/components/LiquidBufferElement.java +++ b/src/main/java/vswe/stevesfactory/components/FluidBufferElement.java @@ -6,7 +6,7 @@ import java.util.ArrayList; import java.util.List; -public class LiquidBufferElement { +public class FluidBufferElement { private Setting setting; private FlowComponent component; private boolean useWhiteList; @@ -20,13 +20,13 @@ public class LiquidBufferElement { private boolean fairShare; private int shareId; - public LiquidBufferElement(FlowComponent owner, Setting setting, SlotInventoryHolder inventoryHolder, boolean useWhiteList, StackTankHolder target) { + public FluidBufferElement(FlowComponent owner, Setting setting, SlotInventoryHolder inventoryHolder, boolean useWhiteList, StackTankHolder target) { this(owner, setting, inventoryHolder, useWhiteList); addTarget(target); sharedBy = 1; } - public LiquidBufferElement(FlowComponent owner, Setting setting, SlotInventoryHolder inventoryHolder, boolean useWhiteList) { + public FluidBufferElement(FlowComponent owner, Setting setting, SlotInventoryHolder inventoryHolder, boolean useWhiteList) { this.component = owner; this.setting = setting; this.inventoryHolder = inventoryHolder; @@ -97,7 +97,7 @@ public int getBufferSize(Setting outputSetting) { for (StackTankHolder holder : getHolders()) { FluidStack fluidStack = holder.getFluidStack(); - if (fluidStack != null && fluidStack.fluidID == ((LiquidSetting)outputSetting).getLiquidId()) { + if (fluidStack != null && fluidStack.getFluid().getName().equals(((FluidSetting)outputSetting).getFluidName())) { bufferSize += fluidStack.amount; } } @@ -113,9 +113,9 @@ public int getBufferSize(Setting outputSetting) { return bufferSize; } - public LiquidBufferElement getSplitElement(int elementAmount, int id, boolean fair) { + public FluidBufferElement getSplitElement(int elementAmount, int id, boolean fair) { - LiquidBufferElement element = new LiquidBufferElement(this.component, this.setting, this.inventoryHolder, this.useWhiteList); + FluidBufferElement element = new FluidBufferElement(this.component, this.setting, this.inventoryHolder, this.useWhiteList); element.holders = new ArrayList(); for (StackTankHolder holder : holders) { element.addTarget(holder.getSplitElement(elementAmount, id, fair)); diff --git a/src/main/java/vswe/stevesfactory/components/LiquidSetting.java b/src/main/java/vswe/stevesfactory/components/FluidSetting.java similarity index 69% rename from src/main/java/vswe/stevesfactory/components/LiquidSetting.java rename to src/main/java/vswe/stevesfactory/components/FluidSetting.java index 221f53c22..30d538a60 100644 --- a/src/main/java/vswe/stevesfactory/components/LiquidSetting.java +++ b/src/main/java/vswe/stevesfactory/components/FluidSetting.java @@ -12,11 +12,11 @@ import java.util.ArrayList; import java.util.List; -public class LiquidSetting extends Setting { +public class FluidSetting extends Setting { private Fluid fluid; private int amount; - public LiquidSetting(int id) { + public FluidSetting(int id) { super(id); } @@ -33,13 +33,13 @@ public List getMouseOver() { List ret = new ArrayList(); if (fluid == null) { - ret.add(Localization.NO_LIQUID_SELECTED.toString()); + ret.add(Localization.NO_FLUID_SELECTED.toString()); }else{ - ret.add(ComponentMenuLiquid.getDisplayName(fluid)); + ret.add(ComponentMenuFluid.getDisplayName(fluid)); } ret.add(""); - ret.add(Localization.CHANGE_LIQUID.toString()); + ret.add(Localization.CHANGE_FLUID.toString()); if (fluid != null) { ret.add(Localization.EDIT_SETTING.toString()); } @@ -65,17 +65,17 @@ public boolean isValid() { @Override public void writeData(DataWriter dw) { - dw.writeData(fluid.getID(), DataBitHelper.MENU_FLUID_ID); + dw.writeString(fluid.getName(), DataBitHelper.MENU_FLUID_ID_LENGTH); } @Override public void readData(DataReader dr) { - fluid = FluidRegistry.getFluid(dr.readData(DataBitHelper.MENU_FLUID_ID)); + fluid = FluidRegistry.getFluid(dr.readString(DataBitHelper.MENU_FLUID_ID_LENGTH)); } @Override public void copyFrom(Setting setting) { - fluid = ((LiquidSetting)setting).fluid; + fluid = ((FluidSetting)setting).fluid; } @Override @@ -83,25 +83,25 @@ public int getDefaultAmount() { return 1000; } - private static final String NBT_FLUID_ID = "FluidId"; + private static final String NBT_FLUID_NAME = "FluidName"; private static final String NBT_FLUID_AMOUNT = "Amount"; @Override public void load(NBTTagCompound settingTag) { //TODO load properly - fluid = FluidRegistry.getFluid(settingTag.getShort(NBT_FLUID_ID)); + fluid = FluidRegistry.getFluid(settingTag.getString(NBT_FLUID_NAME)); amount = settingTag.getInteger(NBT_FLUID_AMOUNT); } @Override public void save(NBTTagCompound settingTag) { //TODO save properly - settingTag.setShort(NBT_FLUID_ID, (short)fluid.getID()); + settingTag.setString(NBT_FLUID_NAME, fluid.getName()); settingTag.setInteger(NBT_FLUID_AMOUNT, amount); } @Override public boolean isContentEqual(Setting otherSetting) { - return fluid.getID() == ((LiquidSetting)otherSetting).fluid.getID(); + return fluid.getName().equals(((FluidSetting)otherSetting).fluid.getName()); } @Override @@ -110,12 +110,12 @@ public void setContent(Object obj) { setDefaultAmount(); } - public int getLiquidId() { - return fluid.getID(); + public String getFluidName() { + return fluid.getName(); } - public void setLiquidFromId(int id) { - fluid = FluidRegistry.getFluid(id); + public void setFluidFromName(String name) { + fluid = FluidRegistry.getFluid(name); } public Fluid getFluid() { diff --git a/src/main/java/vswe/stevesfactory/components/IContainerSelection.java b/src/main/java/vswe/stevesfactory/components/IContainerSelection.java index 65cd99cb0..3133ae5c8 100644 --- a/src/main/java/vswe/stevesfactory/components/IContainerSelection.java +++ b/src/main/java/vswe/stevesfactory/components/IContainerSelection.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.interfaces.GuiManager; public interface IContainerSelection { diff --git a/src/main/java/vswe/stevesfactory/components/ItemSetting.java b/src/main/java/vswe/stevesfactory/components/ItemSetting.java index 828e815a3..fb39313bb 100644 --- a/src/main/java/vswe/stevesfactory/components/ItemSetting.java +++ b/src/main/java/vswe/stevesfactory/components/ItemSetting.java @@ -166,9 +166,9 @@ public boolean isEqualForCommandExecutor(ItemStack other) { }else { switch (fuzzyMode) { case ORE_DICTIONARY: - int id = OreDictionary.getOreID(this.getItem()); + int id = OreDictionary.getOreIDs(this.getItem())[0]; if (id != -1) { - return id == OreDictionary.getOreID(other); + return id == OreDictionary.getOreIDs(other)[0]; } //note that this falls through into the precise one, this is on purpose case PRECISE: diff --git a/src/main/java/vswe/stevesfactory/components/ModItemHelper.java b/src/main/java/vswe/stevesfactory/components/ModItemHelper.java index 2c23bdf77..861fd9a9c 100644 --- a/src/main/java/vswe/stevesfactory/components/ModItemHelper.java +++ b/src/main/java/vswe/stevesfactory/components/ModItemHelper.java @@ -1,11 +1,11 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.common.registry.FMLControlledNamespacedRegistry; -import cpw.mods.fml.common.registry.GameData; -import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.item.Item; - +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.registry.FMLControlledNamespacedRegistry; +import net.minecraftforge.fml.common.registry.GameData; +import net.minecraftforge.fml.common.registry.GameRegistry; import java.util.HashMap; import java.util.Map; @@ -23,7 +23,7 @@ public static void init() { for (int i = 0; i < keys.length; i++) { - Item item = (Item) itemRegistry.getObject(keys[i]); + Item item = (Item) itemRegistry.getObject((ResourceLocation) keys[i]); GameRegistry.UniqueIdentifier uniqueIdentity = GameRegistry.findUniqueIdentifierFor(item); String modId = uniqueIdentity == null ? null : uniqueIdentity.modId; diff --git a/src/main/java/vswe/stevesfactory/components/OutputLiquidCounter.java b/src/main/java/vswe/stevesfactory/components/OutputFluidCounter.java similarity index 76% rename from src/main/java/vswe/stevesfactory/components/OutputLiquidCounter.java rename to src/main/java/vswe/stevesfactory/components/OutputFluidCounter.java index ee7e4964c..f4b055ee2 100644 --- a/src/main/java/vswe/stevesfactory/components/OutputLiquidCounter.java +++ b/src/main/java/vswe/stevesfactory/components/OutputFluidCounter.java @@ -1,18 +1,18 @@ package vswe.stevesfactory.components; -import net.minecraftforge.common.util.ForgeDirection; +import net.minecraft.util.EnumFacing; import net.minecraftforge.fluids.FluidStack; import java.util.List; -public class OutputLiquidCounter { +public class OutputFluidCounter { private Setting setting; private boolean useWhiteList; private int currentTankTransferSize; private int currentBufferTransferSize; - public OutputLiquidCounter(List liquidBuffer, List tanks, SlotInventoryHolder tank, Setting setting, boolean useWhiteList) { + public OutputFluidCounter(List fluidBuffer, List tanks, SlotInventoryHolder tank, Setting setting, boolean useWhiteList) { this.setting = setting; this.useWhiteList = useWhiteList; @@ -26,8 +26,8 @@ public OutputLiquidCounter(List liquidBuffer, List receivers, FlowComponent component, boolean high) { ComponentMenuContainer menuContainer = (ComponentMenuContainer)component.getMenus().get(containerId); if (canUseMergedDetection && menuContainer.getOption() == 0) { - int[] currentPower = new int[ForgeDirection.VALID_DIRECTIONS.length]; + int[] currentPower = new int[EnumFacing.values().length]; for (SlotInventoryHolder receiver : receivers) { IRedstoneNode node = receiver.getNode(); for (int i = 0; i < currentPower.length; i++) { diff --git a/src/main/java/vswe/stevesfactory/components/TriggerHelperRedstone.java b/src/main/java/vswe/stevesfactory/components/TriggerHelperRedstone.java index 9483a91f1..172855572 100644 --- a/src/main/java/vswe/stevesfactory/components/TriggerHelperRedstone.java +++ b/src/main/java/vswe/stevesfactory/components/TriggerHelperRedstone.java @@ -1,7 +1,7 @@ package vswe.stevesfactory.components; -import net.minecraftforge.common.util.ForgeDirection; +import net.minecraft.util.EnumFacing; import vswe.stevesfactory.blocks.ConnectionBlockType; import vswe.stevesfactory.blocks.TileEntityInput; @@ -40,8 +40,8 @@ public void onRedstoneTrigger(FlowComponent item, TileEntityInput inputTrigger) if (receivers != null) { ComponentMenuContainer componentMenuContainer = (ComponentMenuContainer)item.getMenus().get(containerId); - int[] newPower = new int[ForgeDirection.VALID_DIRECTIONS.length]; - int[] oldPower = new int[ForgeDirection.VALID_DIRECTIONS.length]; + int[] newPower = new int[EnumFacing.values().length]; + int[] oldPower = new int[EnumFacing.values().length]; if (canUseMergedDetection && componentMenuContainer.getOption() == 0) { for (SlotInventoryHolder receiver : receivers) { TileEntityInput input = receiver.getReceiver(); diff --git a/src/main/java/vswe/stevesfactory/components/Variable.java b/src/main/java/vswe/stevesfactory/components/Variable.java index 65457796f..6ad408a52 100644 --- a/src/main/java/vswe/stevesfactory/components/Variable.java +++ b/src/main/java/vswe/stevesfactory/components/Variable.java @@ -2,9 +2,9 @@ +import net.minecraft.client.renderer.GlStateManager; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import org.lwjgl.opengl.GL11; import vswe.stevesfactory.interfaces.GuiManager; import java.util.ArrayList; @@ -38,7 +38,7 @@ public int getId() { public void draw(GuiManager gui, int x, int y) { VariableColor.values()[id].applyColor(); gui.drawTexture(x + 1, y + 1, VARIABLE_SRC_X, VARIABLE_SRC_Y, VARIABLE_SIZE, VARIABLE_SIZE); - GL11.glColor4f(1F, 1F, 1F, 1F); + GlStateManager.color(1F, 1F, 1F, 1F); } @Override diff --git a/src/main/java/vswe/stevesfactory/components/VariableColor.java b/src/main/java/vswe/stevesfactory/components/VariableColor.java index dd1823ffd..c3eee1019 100644 --- a/src/main/java/vswe/stevesfactory/components/VariableColor.java +++ b/src/main/java/vswe/stevesfactory/components/VariableColor.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import org.lwjgl.opengl.GL11; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.Color; @@ -41,7 +41,7 @@ private VariableColor(Localization name, Color textColor, float red, float green @SideOnly(Side.CLIENT) public void applyColor() { - GL11.glColor4f(red, green, blue, 1F); + GlStateManager.color(red, green, blue, 1F); } diff --git a/src/main/java/vswe/stevesfactory/components/VariableDisplay.java b/src/main/java/vswe/stevesfactory/components/VariableDisplay.java index 907cbfeba..0ed11aa7e 100644 --- a/src/main/java/vswe/stevesfactory/components/VariableDisplay.java +++ b/src/main/java/vswe/stevesfactory/components/VariableDisplay.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.components; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.Localization; import vswe.stevesfactory.interfaces.GuiManager; diff --git a/src/main/java/vswe/stevesfactory/interfaces/ContainerManager.java b/src/main/java/vswe/stevesfactory/interfaces/ContainerManager.java index eecbdaff0..3db72d2c3 100644 --- a/src/main/java/vswe/stevesfactory/interfaces/ContainerManager.java +++ b/src/main/java/vswe/stevesfactory/interfaces/ContainerManager.java @@ -25,7 +25,7 @@ public ContainerManager(TileEntityManager manager, InventoryPlayer player) { @Override public boolean canInteractWith(EntityPlayer entityplayer) { - return entityplayer.getDistanceSq(manager.xCoord, manager.yCoord, manager.zCoord) <= 64; + return entityplayer.getDistanceSq(manager.getPos().getX(), manager.getPos().getY(), manager.getPos().getZ()) <= 64; } @Override @@ -55,7 +55,7 @@ public void detectAndSendChanges() { if (!hasInventoriesChanged) { for (int i = 0; i < oldInventories.size(); i++) { TileEntity tileEntity = manager.getConnectedInventories().get(i).getTileEntity(); - if (oldInventories.get(i).equals(new WorldCoordinate(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord))) { + if (oldInventories.get(i).equals(new WorldCoordinate(tileEntity.getPos().getX(), tileEntity.getPos().getY(), tileEntity.getPos().getZ()))) { hasInventoriesChanged = true; break; } @@ -67,7 +67,7 @@ public void detectAndSendChanges() { if (hasInventoriesChanged) { oldInventories.clear(); for (ConnectionBlock connection : manager.getConnectedInventories()) { - oldInventories.add(new WorldCoordinate(connection.getTileEntity().xCoord, connection.getTileEntity().yCoord, connection.getTileEntity().zCoord)); + oldInventories.add(new WorldCoordinate(connection.getTileEntity().getPos().getX(), connection.getTileEntity().getPos().getY(), connection.getTileEntity().getPos().getZ())); } PacketHandler.sendUpdateInventoryPacket(this); } @@ -75,8 +75,8 @@ public void detectAndSendChanges() { } @Override - public void addCraftingToCrafters(ICrafting player) { - super.addCraftingToCrafters(player); + public void onCraftGuiOpened(ICrafting player) { + super.onCraftGuiOpened(player); PacketHandler.sendAllData(this, player, manager); oldComponents = new ArrayList(); @@ -86,7 +86,7 @@ public void addCraftingToCrafters(ICrafting player) { manager.updateInventories(); oldInventories = new ArrayList(); for (ConnectionBlock connection : manager.getConnectedInventories()) { - oldInventories.add(new WorldCoordinate(connection.getTileEntity().xCoord, connection.getTileEntity().yCoord, connection.getTileEntity().zCoord)); + oldInventories.add(new WorldCoordinate(connection.getTileEntity().getPos().getX(), connection.getTileEntity().getPos().getY(), connection.getTileEntity().getPos().getZ())); } oldIdIndexToRemove = manager.getRemovedIds().size(); } diff --git a/src/main/java/vswe/stevesfactory/interfaces/ContainerRelay.java b/src/main/java/vswe/stevesfactory/interfaces/ContainerRelay.java index da9118b42..e6e9f8c98 100644 --- a/src/main/java/vswe/stevesfactory/interfaces/ContainerRelay.java +++ b/src/main/java/vswe/stevesfactory/interfaces/ContainerRelay.java @@ -22,7 +22,7 @@ public ContainerRelay(TileEntityRelay relay, InventoryPlayer player) { @Override public boolean canInteractWith(EntityPlayer entityplayer) { - return entityplayer.getDistanceSq(relay.xCoord, relay.yCoord, relay.zCoord) <= 64; + return entityplayer.getDistanceSq(relay.getPos().getX(), relay.getPos().getY(), relay.getPos().getZ()) <= 64; } @Override @@ -35,8 +35,8 @@ public void detectAndSendChanges() { } @Override - public void addCraftingToCrafters(ICrafting player) { - super.addCraftingToCrafters(player); + public void onCraftGuiOpened(ICrafting player) { + super.onCraftGuiOpened(player); PacketHandler.sendAllData(this, player, relay); oldPermissions = new ArrayList(); for (UserPermission permission : relay.getPermissions()) { diff --git a/src/main/java/vswe/stevesfactory/interfaces/GuiAntiNEI.java b/src/main/java/vswe/stevesfactory/interfaces/GuiAntiNEI.java index 4cd16195f..8e2bc1b23 100644 --- a/src/main/java/vswe/stevesfactory/interfaces/GuiAntiNEI.java +++ b/src/main/java/vswe/stevesfactory/interfaces/GuiAntiNEI.java @@ -1,62 +1,79 @@ package vswe.stevesfactory.interfaces; +import com.google.common.collect.Sets; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; 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; -import java.util.HashSet; +import java.io.IOException; import java.util.Iterator; import java.util.Set; public abstract class GuiAntiNEI extends GuiScreen { + /** The location of the inventory background texture */ + protected static final ResourceLocation inventoryBackground = new ResourceLocation("textures/gui/container/inventory.png"); + /** The X size of the inventory window in pixels. */ protected int xSize = 176; + /** The Y size of the inventory window in pixels. */ protected int ySize = 166; + /** A list of the players inventory slots */ public Container inventorySlots; + /** Starting X position for the Gui. Inconsistent use for Gui backgrounds. */ protected int guiLeft; + /** Starting Y position for the Gui. Inconsistent use for Gui backgrounds. */ protected int guiTop; + /** holds the slot currently hovered */ 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 int touchUpX; + private int touchUpY; 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; - - public GuiAntiNEI(Container par1Container) + private Slot currentDragTargetSlot; + private long dragItemDropDelay; + protected final Set dragSplittingSlots = Sets.newHashSet(); + protected boolean dragSplitting; + private int dragSplittingLimit; + private int dragSplittingButton; + private boolean ignoreMouseUp; + private int dragSplittingRemnant; + private long lastClickTime; + private Slot lastClickSlot; + private int lastClickButton; + private boolean doubleClick; + private ItemStack shiftClickedSlot; + private static final String __OBFID = "CL_00000737"; + + public GuiAntiNEI(Container inventorySlotsIn) { - this.inventorySlots = par1Container; - this.field_146995_H = true; + this.inventorySlots = inventorySlotsIn; + this.ignoreMouseUp = true; } + /** + * Adds the buttons (and other controls) to the screen in question. Called when the GUI is displayed and when the + * window resizes, the buttonList is cleared beforehand. + */ public void initGui() { super.initGui(); @@ -65,52 +82,55 @@ public void initGui() this.guiTop = (this.height - this.ySize) / 2; } - public void drawScreen(int par1, int par2, float par3) + /** + * Draws the screen and all the components in it. Args : mouseX, mouseY, renderPartialTicks + */ + public void drawScreen(int mouseX, int mouseY, float partialTicks) { this.drawDefaultBackground(); int k = this.guiLeft; int l = this.guiTop; - this.drawGuiContainerBackgroundLayer(par3, par1, par2); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); + this.drawGuiContainerBackgroundLayer(partialTicks, mouseX, mouseY); + GlStateManager.disableRescaleNormal(); RenderHelper.disableStandardItemLighting(); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); - super.drawScreen(par1, par2, par3); + GlStateManager.disableLighting(); + GlStateManager.disableDepth(); + super.drawScreen(mouseX, mouseY, partialTicks); 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); + GlStateManager.pushMatrix(); + GlStateManager.translate((float)k, (float)l, 0.0F); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.enableRescaleNormal(); 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); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)short1 / 1.0F, (float)short2 / 1.0F); + GlStateManager.color(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); + this.drawSlot(slot); - if (this.isMouseOverSlot(slot, par1, par2) && slot.func_111238_b()) + if (this.isMouseOverSlot(slot, mouseX, mouseY) && slot.canBeHovered()) { this.theSlot = slot; - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); + GlStateManager.disableLighting(); + GlStateManager.disableDepth(); int j1 = slot.xDisplayPosition; k1 = slot.yDisplayPosition; - GL11.glColorMask(true, true, true, false); + GlStateManager.colorMask(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); + GlStateManager.colorMask(true, true, true, true); + GlStateManager.enableLighting(); + GlStateManager.enableDepth(); } } - GL11.glDisable(GL11.GL_LIGHTING); - this.drawGuiContainerForegroundLayer(par1, par2); - GL11.glEnable(GL11.GL_LIGHTING); + RenderHelper.disableStandardItemLighting(); + this.drawGuiContainerForegroundLayer(mouseX, mouseY); + RenderHelper.enableGUIStandardItemLighting(); InventoryPlayer inventoryplayer = this.mc.thePlayer.inventory; ItemStack itemstack = this.draggedStack == null ? inventoryplayer.getItemStack() : this.draggedStack; @@ -123,12 +143,12 @@ public void drawScreen(int par1, int par2, float par3) if (this.draggedStack != null && this.isRightMouseClick) { itemstack = itemstack.copy(); - itemstack.stackSize = MathHelper.ceiling_float_int((float) itemstack.stackSize / 2.0F); + itemstack.stackSize = MathHelper.ceiling_float_int((float)itemstack.stackSize / 2.0F); } - else if (this.field_147007_t && this.field_147008_s.size() > 1) + else if (this.dragSplitting && this.dragSplittingSlots.size() > 1) { itemstack = itemstack.copy(); - itemstack.stackSize = this.field_146996_I; + itemstack.stackSize = this.dragSplittingRemnant; if (itemstack.stackSize == 0) { @@ -136,7 +156,7 @@ else if (this.field_147007_t && this.field_147008_s.size() > 1) } } - this.drawItemStack(itemstack, par1 - k - b0, par2 - l - k1, s); + this.drawItemStack(itemstack, mouseX - k - b0, mouseY - l - k1, s); } if (this.returningStack != null) @@ -149,71 +169,80 @@ else if (this.field_147007_t && this.field_147008_s.size() > 1) 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, null); + k1 = this.returningStackDestSlot.xDisplayPosition - this.touchUpX; + int j2 = this.returningStackDestSlot.yDisplayPosition - this.touchUpY; + int l1 = this.touchUpX + (int)((float)k1 * f1); + int i2 = this.touchUpY + (int)((float)j2 * f1); + this.drawItemStack(this.returningStack, l1, i2, (String)null); } - GL11.glPopMatrix(); + GlStateManager.popMatrix(); if (inventoryplayer.getItemStack() == null && this.theSlot != null && this.theSlot.getHasStack()) { ItemStack itemstack1 = this.theSlot.getStack(); - this.renderToolTip(itemstack1, par1, par2); + this.renderToolTip(itemstack1, mouseX, mouseY); } - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_DEPTH_TEST); + GlStateManager.enableLighting(); + GlStateManager.enableDepth(); RenderHelper.enableStandardItemLighting(); } - private void drawItemStack(ItemStack p_146982_1_, int p_146982_2_, int p_146982_3_, String p_146982_4_) + /** + * Render an ItemStack. Args : stack, x, y, format + */ + private void drawItemStack(ItemStack stack, int x, int y, String altText) { - GL11.glTranslatef(0.0F, 0.0F, 32.0F); + GlStateManager.translate(0.0F, 0.0F, 32.0F); this.zLevel = 200.0F; - itemRender.zLevel = 200.0F; + this.itemRender.zLevel = 200.0F; FontRenderer font = null; - if (p_146982_1_ != null) font = p_146982_1_.getItem().getFontRenderer(p_146982_1_); + if (stack != null) font = stack.getItem().getFontRenderer(stack); 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.itemRender.renderItemAndEffectIntoGUI(stack, x, y); + this.itemRender.renderItemOverlayIntoGUI(font, stack, x, y - (this.draggedStack == null ? 0 : 8), altText); this.zLevel = 0.0F; - itemRender.zLevel = 0.0F; + this.itemRender.zLevel = 0.0F; } - protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_) {} + /** + * Draw the foreground layer for the GuiContainer (everything in front of the items). Args : mouseX, mouseY + */ + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {} - protected abstract void drawGuiContainerBackgroundLayer(float var1, int var2, int var3); + /** + * Args : renderPartialTicks, mouseX, mouseY + */ + protected abstract void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY); - private void func_146977_a(Slot p_146977_1_) + private void drawSlot(Slot slotIn) { - int i = p_146977_1_.xDisplayPosition; - int j = p_146977_1_.yDisplayPosition; - ItemStack itemstack = p_146977_1_.getStack(); + int i = slotIn.xDisplayPosition; + int j = slotIn.yDisplayPosition; + ItemStack itemstack = slotIn.getStack(); boolean flag = false; - boolean flag1 = p_146977_1_ == this.clickedSlot && this.draggedStack != null && !this.isRightMouseClick; + boolean flag1 = slotIn == 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) + if (slotIn == 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) + else if (this.dragSplitting && this.dragSplittingSlots.contains(slotIn) && itemstack1 != null) { - if (this.field_147008_s.size() == 1) + if (this.dragSplittingSlots.size() == 1) { return; } - if (Container.func_94527_a(p_146977_1_, itemstack1, true) && this.inventorySlots.canDragIntoSlot(p_146977_1_)) + if (Container.canAddItemToSlot(slotIn, itemstack1, true) && this.inventorySlots.canDragIntoSlot(slotIn)) { 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); + Container.computeStackSize(this.dragSplittingSlots, this.dragSplittingLimit, itemstack, slotIn.getStack() == null ? 0 : slotIn.getStack().stackSize); if (itemstack.stackSize > itemstack.getMaxStackSize()) { @@ -221,32 +250,32 @@ else if (this.field_147007_t && this.field_147008_s.contains(p_146977_1_) && ite itemstack.stackSize = itemstack.getMaxStackSize(); } - if (itemstack.stackSize > p_146977_1_.getSlotStackLimit()) + if (itemstack.stackSize > slotIn.getItemStackLimit(itemstack)) { - s = EnumChatFormatting.YELLOW + "" + p_146977_1_.getSlotStackLimit(); - itemstack.stackSize = p_146977_1_.getSlotStackLimit(); + s = EnumChatFormatting.YELLOW + "" + slotIn.getItemStackLimit(itemstack); + itemstack.stackSize = slotIn.getItemStackLimit(itemstack); } } else { - this.field_147008_s.remove(p_146977_1_); - this.func_146980_g(); + this.dragSplittingSlots.remove(slotIn); + this.updateDragSplitting(); } } this.zLevel = 100.0F; - itemRender.zLevel = 100.0F; + this.itemRender.zLevel = 100.0F; if (itemstack == null) { - IIcon iicon = p_146977_1_.getBackgroundIconIndex(); + TextureAtlasSprite textureatlassprite = slotIn.getBackgroundSprite(); - if (iicon != null) + if (textureatlassprite != null) { - GL11.glDisable(GL11.GL_LIGHTING); - this.mc.getTextureManager().bindTexture(TextureMap.locationItemsTexture); - this.drawTexturedModelRectFromIcon(i, j, iicon, 16, 16); - GL11.glEnable(GL11.GL_LIGHTING); + GlStateManager.disableLighting(); + this.mc.getTextureManager().bindTexture(slotIn.getBackgroundLocation()); + this.drawTexturedModalRect(i, j, textureatlassprite, 16, 16); + GlStateManager.enableLighting(); flag1 = true; } } @@ -258,52 +287,55 @@ else if (this.field_147007_t && this.field_147008_s.contains(p_146977_1_) && ite drawRect(i, j, i + 16, j + 16, -2130706433); } - GL11.glEnable(GL11.GL_DEPTH_TEST); - itemRender.renderItemAndEffectIntoGUI(this.fontRendererObj, this.mc.getTextureManager(), itemstack, i, j); - itemRender.renderItemOverlayIntoGUI(this.fontRendererObj, this.mc.getTextureManager(), itemstack, i, j, s); + GlStateManager.enableDepth(); + this.itemRender.renderItemAndEffectIntoGUI(itemstack, i, j); + this.itemRender.renderItemOverlayIntoGUI(this.fontRendererObj, itemstack, i, j, s); } - itemRender.zLevel = 0.0F; + this.itemRender.zLevel = 0.0F; this.zLevel = 0.0F; } - private void func_146980_g() + private void updateDragSplitting() { ItemStack itemstack = this.mc.thePlayer.inventory.getItemStack(); - if (itemstack != null && this.field_147007_t) + if (itemstack != null && this.dragSplitting) { - this.field_146996_I = itemstack.stackSize; + this.dragSplittingRemnant = itemstack.stackSize; ItemStack itemstack1; int i; - for (Iterator iterator = this.field_147008_s.iterator(); iterator.hasNext(); this.field_146996_I -= itemstack1.stackSize - i) + for (Iterator iterator = this.dragSplittingSlots.iterator(); iterator.hasNext(); this.dragSplittingRemnant -= 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); + Container.computeStackSize(this.dragSplittingSlots, this.dragSplittingLimit, itemstack1, i); if (itemstack1.stackSize > itemstack1.getMaxStackSize()) { itemstack1.stackSize = itemstack1.getMaxStackSize(); } - if (itemstack1.stackSize > slot.getSlotStackLimit()) + if (itemstack1.stackSize > slot.getItemStackLimit(itemstack1)) { - itemstack1.stackSize = slot.getSlotStackLimit(); + itemstack1.stackSize = slot.getItemStackLimit(itemstack1); } } } } - private Slot getSlotAtPosition(int p_146975_1_, int p_146975_2_) + /** + * Returns the slot at the given coordinates or null if there is none. + */ + private Slot getSlotAtPosition(int x, int y) { 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_)) + if (this.isMouseOverSlot(slot, x, y)) { return slot; } @@ -312,20 +344,23 @@ private Slot getSlotAtPosition(int p_146975_1_, int p_146975_2_) return null; } - protected void mouseClicked(int par1, int par2, int par3) + /** + * Called when the mouse is clicked. Args : mouseX, mouseY, clickedButton + */ + protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { - super.mouseClicked(par1, par2, par3); - boolean flag = par3 == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100; - Slot slot = this.getSlotAtPosition(par1, par2); + super.mouseClicked(mouseX, mouseY, mouseButton); + boolean flag = mouseButton == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100; + Slot slot = this.getSlotAtPosition(mouseX, mouseY); 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; + this.doubleClick = this.lastClickSlot == slot && l - this.lastClickTime < 250L && this.lastClickButton == mouseButton; + this.ignoreMouseUp = false; - if (par3 == 0 || par3 == 1 || flag) + if (mouseButton == 0 || mouseButton == 1 || flag) { int i1 = this.guiLeft; int j1 = this.guiTop; - boolean flag1 = par1 < i1 || par2 < j1 || par1 >= i1 + this.xSize || par2 >= j1 + this.ySize; + boolean flag1 = mouseX < i1 || mouseY < j1 || mouseX >= i1 + this.xSize || mouseY >= j1 + this.ySize; int k1 = -1; if (slot != null) @@ -340,7 +375,7 @@ protected void mouseClicked(int par1, int par2, int par3) if (this.mc.gameSettings.touchscreen && flag1 && this.mc.thePlayer.inventory.getItemStack() == null) { - this.mc.displayGuiScreen(null); + this.mc.displayGuiScreen((GuiScreen)null); return; } @@ -352,20 +387,20 @@ protected void mouseClicked(int par1, int par2, int par3) { this.clickedSlot = slot; this.draggedStack = null; - this.isRightMouseClick = par3 == 1; + this.isRightMouseClick = mouseButton == 1; } else { this.clickedSlot = null; } } - else if (!this.field_147007_t) + else if (!this.dragSplitting) { if (this.mc.thePlayer.inventory.getItemStack() == null) { - if (par3 == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100) + if (mouseButton == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100) { - this.handleMouseClick(slot, k1, par3, 3); + this.handleMouseClick(slot, k1, mouseButton, 3); } else { @@ -374,7 +409,7 @@ else if (!this.field_147007_t) if (flag2) { - this.field_146994_N = slot.getHasStack() ? slot.getStack() : null; + this.shiftClickedSlot = slot != null && slot.getHasStack() ? slot.getStack() : null; b0 = 1; } else if (k1 == -999) @@ -382,43 +417,51 @@ else if (k1 == -999) b0 = 4; } - this.handleMouseClick(slot, k1, par3, b0); + this.handleMouseClick(slot, k1, mouseButton, b0); } - this.field_146995_H = true; + this.ignoreMouseUp = true; } else { - this.field_147007_t = true; - this.field_146988_G = par3; - this.field_147008_s.clear(); + this.dragSplitting = true; + this.dragSplittingButton = mouseButton; + this.dragSplittingSlots.clear(); - if (par3 == 0) + if (mouseButton == 0) + { + this.dragSplittingLimit = 0; + } + else if (mouseButton == 1) { - this.field_146987_F = 0; + this.dragSplittingLimit = 1; } - else if (par3 == 1) + else if (mouseButton == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100) { - this.field_146987_F = 1; + this.dragSplittingLimit = 2; } } } } } - this.field_146998_K = slot; - this.field_146997_J = l; - this.field_146992_L = par3; + this.lastClickSlot = slot; + this.lastClickTime = l; + this.lastClickButton = mouseButton; } - protected void mouseClickMove(int p_146273_1_, int p_146273_2_, int p_146273_3_, long p_146273_4_) + /** + * Called when a mouse button is pressed and the mouse is moved around. Parameters are : mouseX, mouseY, + * lastButtonClicked & timeSinceMouseClick. + */ + protected void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - Slot slot = this.getSlotAtPosition(p_146273_1_, p_146273_2_); + Slot slot = this.getSlotAtPosition(mouseX, mouseY); ItemStack itemstack = this.mc.thePlayer.inventory.getItemStack(); if (this.clickedSlot != null && this.mc.gameSettings.touchscreen) { - if (p_146273_3_ == 0 || p_146273_3_ == 1) + if (clickedMouseButton == 0 || clickedMouseButton == 1) { if (this.draggedStack == null) { @@ -427,42 +470,46 @@ protected void mouseClickMove(int p_146273_1_, int p_146273_2_, int p_146273_3_, this.draggedStack = this.clickedSlot.getStack().copy(); } } - else if (this.draggedStack.stackSize > 1 && slot != null && Container.func_94527_a(slot, this.draggedStack, false)) + else if (this.draggedStack.stackSize > 1 && slot != null && Container.canAddItemToSlot(slot, this.draggedStack, false)) { long i1 = Minecraft.getSystemTime(); - if (this.field_146985_D == slot) + if (this.currentDragTargetSlot == slot) { - if (i1 - this.field_146986_E > 500L) + if (i1 - this.dragItemDropDelay > 500L) { this.handleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, 0, 0); this.handleMouseClick(slot, slot.slotNumber, 1, 0); this.handleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, 0, 0); - this.field_146986_E = i1 + 750L; + this.dragItemDropDelay = i1 + 750L; --this.draggedStack.stackSize; } } else { - this.field_146985_D = slot; - this.field_146986_E = i1; + this.currentDragTargetSlot = slot; + this.dragItemDropDelay = 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)) + else if (this.dragSplitting && slot != null && itemstack != null && itemstack.stackSize > this.dragSplittingSlots.size() && Container.canAddItemToSlot(slot, itemstack, true) && slot.isItemValid(itemstack) && this.inventorySlots.canDragIntoSlot(slot)) { - this.field_147008_s.add(slot); - this.func_146980_g(); + this.dragSplittingSlots.add(slot); + this.updateDragSplitting(); } } - protected void mouseMovedOrUp(int p_146286_1_, int p_146286_2_, int p_146286_3_) + /** + * Called when a mouse button is released. Args : mouseX, mouseY, releaseButton + */ + protected void mouseReleased(int mouseX, int mouseY, int state) { - Slot slot = this.getSlotAtPosition(p_146286_1_, p_146286_2_); + super.mouseReleased(mouseX, mouseY, state); //Forge, Call parent to release buttons + Slot slot = this.getSlotAtPosition(mouseX, mouseY); 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; + boolean flag = mouseX < l || mouseY < i1 || mouseX >= l + this.xSize || mouseY >= i1 + this.ySize; int j1 = -1; if (slot != null) @@ -478,11 +525,11 @@ protected void mouseMovedOrUp(int p_146286_1_, int p_146286_2_, int p_146286_3_) Slot slot1; Iterator iterator; - if (this.field_146993_M && slot != null && p_146286_3_ == 0 && this.inventorySlots.func_94530_a(null, slot)) + if (this.doubleClick && slot != null && state == 0 && this.inventorySlots.canMergeSlot((ItemStack)null, slot)) { if (isShiftKeyDown()) { - if (slot != null && slot.inventory != null && this.field_146994_N != null) + if (slot != null && slot.inventory != null && this.shiftClickedSlot != null) { iterator = this.inventorySlots.inventorySlots.iterator(); @@ -490,34 +537,34 @@ protected void mouseMovedOrUp(int p_146286_1_, int p_146286_2_, int p_146286_3_) { 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)) + if (slot1 != null && slot1.canTakeStack(this.mc.thePlayer) && slot1.getHasStack() && slot1.inventory == slot.inventory && Container.canAddItemToSlot(slot1, this.shiftClickedSlot, true)) { - this.handleMouseClick(slot1, slot1.slotNumber, p_146286_3_, 1); + this.handleMouseClick(slot1, slot1.slotNumber, state, 1); } } } } else { - this.handleMouseClick(slot, j1, p_146286_3_, 6); + this.handleMouseClick(slot, j1, state, 6); } - this.field_146993_M = false; - this.field_146997_J = 0L; + this.doubleClick = false; + this.lastClickTime = 0L; } else { - if (this.field_147007_t && this.field_146988_G != p_146286_3_) + if (this.dragSplitting && this.dragSplittingButton != state) { - this.field_147007_t = false; - this.field_147008_s.clear(); - this.field_146995_H = true; + this.dragSplitting = false; + this.dragSplittingSlots.clear(); + this.ignoreMouseUp = true; return; } - if (this.field_146995_H) + if (this.ignoreMouseUp) { - this.field_146995_H = false; + this.ignoreMouseUp = false; return; } @@ -525,25 +572,25 @@ protected void mouseMovedOrUp(int p_146286_1_, int p_146286_2_, int p_146286_3_) if (this.clickedSlot != null && this.mc.gameSettings.touchscreen) { - if (p_146286_3_ == 0 || p_146286_3_ == 1) + if (state == 0 || state == 1) { if (this.draggedStack == null && slot != this.clickedSlot) { this.draggedStack = this.clickedSlot.getStack(); } - flag1 = Container.func_94527_a(slot, this.draggedStack, false); + flag1 = Container.canAddItemToSlot(slot, this.draggedStack, false); if (j1 != -1 && this.draggedStack != null && flag1) { - this.handleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, p_146286_3_, 0); + this.handleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, state, 0); this.handleMouseClick(slot, j1, 0, 0); if (this.mc.thePlayer.inventory.getItemStack() != null) { - this.handleMouseClick(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.handleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, state, 0); + this.touchUpX = mouseX - l; + this.touchUpY = mouseY - i1; this.returningStackDestSlot = this.clickedSlot; this.returningStack = this.draggedStack; this.returningStackTime = Minecraft.getSystemTime(); @@ -555,8 +602,8 @@ protected void mouseMovedOrUp(int p_146286_1_, int p_146286_2_, int p_146286_3_) } else if (this.draggedStack != null) { - this.field_147011_y = p_146286_1_ - l; - this.field_147010_z = p_146286_2_ - i1; + this.touchUpX = mouseX - l; + this.touchUpY = mouseY - i1; this.returningStackDestSlot = this.clickedSlot; this.returningStack = this.draggedStack; this.returningStackTime = Minecraft.getSystemTime(); @@ -566,24 +613,24 @@ else if (this.draggedStack != null) this.clickedSlot = null; } } - else if (this.field_147007_t && !this.field_147008_s.isEmpty()) + else if (this.dragSplitting && !this.dragSplittingSlots.isEmpty()) { - this.handleMouseClick(null, -999, Container.func_94534_d(0, this.field_146987_F), 5); - iterator = this.field_147008_s.iterator(); + this.handleMouseClick((Slot)null, -999, Container.func_94534_d(0, this.dragSplittingLimit), 5); + iterator = this.dragSplittingSlots.iterator(); while (iterator.hasNext()) { slot1 = (Slot)iterator.next(); - this.handleMouseClick(slot1, slot1.slotNumber, Container.func_94534_d(1, this.field_146987_F), 5); + this.handleMouseClick(slot1, slot1.slotNumber, Container.func_94534_d(1, this.dragSplittingLimit), 5); } - this.handleMouseClick(null, -999, Container.func_94534_d(2, this.field_146987_F), 5); + this.handleMouseClick((Slot)null, -999, Container.func_94534_d(2, this.dragSplittingLimit), 5); } else if (this.mc.thePlayer.inventory.getItemStack() != null) { - if (p_146286_3_ == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100) + if (state == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100) { - this.handleMouseClick(slot, j1, p_146286_3_, 3); + this.handleMouseClick(slot, j1, state, 3); } else { @@ -591,75 +638,93 @@ else if (this.mc.thePlayer.inventory.getItemStack() != null) if (flag1) { - this.field_146994_N = slot != null && slot.getHasStack() ? slot.getStack() : null; + this.shiftClickedSlot = slot != null && slot.getHasStack() ? slot.getStack() : null; } - this.handleMouseClick(slot, j1, p_146286_3_, flag1 ? 1 : 0); + this.handleMouseClick(slot, j1, state, flag1 ? 1 : 0); } } } if (this.mc.thePlayer.inventory.getItemStack() == null) { - this.field_146997_J = 0L; + this.lastClickTime = 0L; } - this.field_147007_t = false; + this.dragSplitting = false; } - private boolean isMouseOverSlot(Slot p_146981_1_, int p_146981_2_, int p_146981_3_) + /** + * Returns if the passed mouse position is over the specified slot. Args : slot, mouseX, mouseY + */ + private boolean isMouseOverSlot(Slot slotIn, int mouseX, int mouseY) { - return this.func_146978_c(p_146981_1_.xDisplayPosition, p_146981_1_.yDisplayPosition, 16, 16, p_146981_2_, p_146981_3_); + return this.isPointInRegion(slotIn.xDisplayPosition, slotIn.yDisplayPosition, 16, 16, mouseX, mouseY); } - 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_) + /** + * Test if the 2D point is in a rectangle (relative to the GUI). Args : rectX, rectY, rectWidth, rectHeight, pointX, + * pointY + */ + protected boolean isPointInRegion(int left, int top, int right, int bottom, int pointX, int pointY) { 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; + pointX -= k1; + pointY -= l1; + return pointX >= left - 1 && pointX < left + right + 1 && pointY >= top - 1 && pointY < top + bottom + 1; } - protected void handleMouseClick(Slot p_146984_1_, int p_146984_2_, int p_146984_3_, int p_146984_4_) + /** + * Called when the mouse is clicked over a slot or outside the gui. + */ + protected void handleMouseClick(Slot slotIn, int slotId, int clickedButton, int clickType) { - if (p_146984_1_ != null) + if (slotIn != null) { - p_146984_2_ = p_146984_1_.slotNumber; + slotId = slotIn.slotNumber; } - this.mc.playerController.windowClick(this.inventorySlots.windowId, p_146984_2_, p_146984_3_, p_146984_4_, this.mc.thePlayer); + this.mc.playerController.windowClick(this.inventorySlots.windowId, slotId, clickedButton, clickType, this.mc.thePlayer); } - protected void keyTyped(char par1, int par2) + /** + * Fired when a key is typed (except F11 which toggles full screen). This is the equivalent of + * KeyListener.keyTyped(KeyEvent e). Args : character (character on the key), keyCode (lwjgl Keyboard key code) + */ + protected void keyTyped(char typedChar, int keyCode) throws IOException { - if (par2 == 1 || par2 == this.mc.gameSettings.keyBindInventory.getKeyCode()) + if (keyCode == 1 || keyCode == this.mc.gameSettings.keyBindInventory.getKeyCode()) { this.mc.thePlayer.closeScreen(); } - this.checkHotbarKeys(par2); + this.checkHotbarKeys(keyCode); if (this.theSlot != null && this.theSlot.getHasStack()) { - if (par2 == this.mc.gameSettings.keyBindPickBlock.getKeyCode()) + if (keyCode == this.mc.gameSettings.keyBindPickBlock.getKeyCode()) { this.handleMouseClick(this.theSlot, this.theSlot.slotNumber, 0, 3); } - else if (par2 == this.mc.gameSettings.keyBindDrop.getKeyCode()) + else if (keyCode == this.mc.gameSettings.keyBindDrop.getKeyCode()) { this.handleMouseClick(this.theSlot, this.theSlot.slotNumber, isCtrlKeyDown() ? 1 : 0, 4); } } } - protected boolean checkHotbarKeys(int p_146983_1_) + /** + * This function is what controls the hotbar shortcut check when you press a number key when hovering a stack. Args + * : keyCode, Returns true if a Hotbar key is pressed, else false + */ + protected boolean checkHotbarKeys(int keyCode) { 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()) + if (keyCode == this.mc.gameSettings.keyBindsHotbar[j].getKeyCode()) { this.handleMouseClick(this.theSlot, this.theSlot.slotNumber, j, 2); return true; @@ -670,6 +735,9 @@ protected boolean checkHotbarKeys(int p_146983_1_) return false; } + /** + * Called when the screen is unloaded. Used to disable keyboard repeat events + */ public void onGuiClosed() { if (this.mc.thePlayer != null) @@ -678,11 +746,17 @@ public void onGuiClosed() } } + /** + * 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(); diff --git a/src/main/java/vswe/stevesfactory/interfaces/GuiBase.java b/src/main/java/vswe/stevesfactory/interfaces/GuiBase.java index 3ae6df94a..696765cbb 100644 --- a/src/main/java/vswe/stevesfactory/interfaces/GuiBase.java +++ b/src/main/java/vswe/stevesfactory/interfaces/GuiBase.java @@ -1,33 +1,33 @@ package vswe.stevesfactory.interfaces; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; +import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; -import net.minecraft.init.Blocks; +import net.minecraft.client.renderer.WorldRenderer; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Vec3; +import net.minecraft.util.*; import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fml.client.FMLClientHandler; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; import vswe.stevesfactory.StevesFactoryManager; import vswe.stevesfactory.blocks.TileEntityClusterElement; import vswe.stevesfactory.settings.Settings; import java.util.ArrayList; import java.util.Arrays; -import java.util.Iterator; import java.util.List; @SideOnly(Side.CLIENT) @@ -66,12 +66,13 @@ private double fixScaledCoordinate(int val, float scale, int size) { public void drawScaleFriendlyTexture(double x, double y, double srcX, double srcY, double w, double h) { float f = 0.00390625F; float f1 = 0.00390625F; - Tessellator tessellator = Tessellator.instance; - tessellator.startDrawingQuads(); - tessellator.addVertexWithUV(x + 0, y + h, (double)this.zLevel, (srcX + 0) * f, (srcY + h) * f1); - tessellator.addVertexWithUV(x + w, y + h, (double)this.zLevel, (srcX + w) * f, (srcY + h) * f1); - tessellator.addVertexWithUV(x + w, y + 0, (double)this.zLevel, (srcX + w) * f, (srcY + 0) * f1); - tessellator.addVertexWithUV(x + 0, y + 0, (double)this.zLevel, (srcX + 0) * f, (srcY + 0) * f1); + Tessellator tessellator = Tessellator.getInstance(); + WorldRenderer worldRenderer = tessellator.getWorldRenderer(); + worldRenderer.begin(7, DefaultVertexFormats.POSITION_TEX); + worldRenderer.pos(x + 0, y + h, (double) this.zLevel).tex((srcX + 0) * f, (srcY + h) * f1).endVertex(); + worldRenderer.pos(x + w, y + h, (double) this.zLevel).tex((srcX + w) * f, (srcY + h) * f1).endVertex(); + worldRenderer.pos(x + w, y + 0, (double) this.zLevel).tex((srcX + w) * f, (srcY + 0) * f1).endVertex(); + worldRenderer.pos(x + 0, y + 0, (double) this.zLevel).tex((srcX + 0) * f, (srcY + 0) * f1).endVertex(); tessellator.draw(); } @@ -84,23 +85,23 @@ public static ResourceLocation registerTexture(String name) { } public void drawString(String str, int x, int y, float mult, int color) { - GL11.glPushMatrix(); - GL11.glScalef(mult, mult, 1F); + GlStateManager.pushMatrix(); + GlStateManager.scale(mult, mult, 1F); fontRendererObj.drawString(str, (int) ((x + guiLeft) / mult), (int) ((y + guiTop) / mult), color); bindTexture(getComponentResource()); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glPopMatrix(); + GlStateManager.popMatrix(); } public void drawSplitString(String str, int x, int y, int w, float mult, int color) { - GL11.glPushMatrix(); - GL11.glScalef(mult, mult, 1F); - fontRendererObj.drawSplitString(str, (int)((x + guiLeft) / mult), (int)((y + guiTop) / mult), (int)(w / mult), color); + GlStateManager.pushMatrix(); + GlStateManager.scale(mult, mult, 1F); + fontRendererObj.drawSplitString(str, (int) ((x + guiLeft) / mult), (int) ((y + guiTop) / mult), (int) (w / mult), color); bindTexture(getComponentResource()); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glPopMatrix(); + GlStateManager.popMatrix(); } public void drawString(String str, int x, int y, int color) { @@ -179,10 +180,10 @@ public void drawMouseOver(IAdvancedTooltip tooltip, int mX, int mY) { } public void drawMouseOver(IAdvancedTooltip tooltip, int x, int y, int mX, int mY) { if (tooltip != null) { - GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GlStateManager.disableRescaleNormal(); RenderHelper.disableStandardItemLighting(); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); + GlStateManager.disableLighting(); + GlStateManager.disableDepth(); List prefix = tooltip.getPrefix(this); @@ -227,10 +228,10 @@ public void drawMouseOver(IAdvancedTooltip tooltip, int x, int y, int mX, int mY this.zLevel = 0.0F; itemRender.zLevel = 0.0F; - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_DEPTH_TEST); + GlStateManager.enableLighting(); + GlStateManager.enableDepth(); RenderHelper.enableStandardItemLighting(); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GlStateManager.enableRescaleNormal(); } } public int getAdvancedToolTipContentStartX(IAdvancedTooltip tooltip) { @@ -292,14 +293,12 @@ private ItemStack getItemStackFromBlock(TileEntity te) { return ((TileEntityClusterElement)te).getItemStackFromBlock(); } - World world = te.getWorldObj(); + World world = te.getWorld(); Block block = te.getBlockType(); if (world != null && block != null) { - int x = te.xCoord; - int y = te.yCoord; - int z = te.zCoord; + BlockPos pos = te.getPos(); - return getItemStackFromBlock(world, x, y, z, block, world.getBlockMetadata(x, y, z)); + return getItemStackFromBlock(world, pos, block, world.getBlockState(pos)); } } @@ -308,19 +307,21 @@ private ItemStack getItemStackFromBlock(TileEntity te) { public ItemStack getItemStackFromBlock(World world, int x, int y, int z) { if (world != null) { - Block block = world.getBlock(x, y, z); + BlockPos pos = new BlockPos(x, y, z); + Block block = world.getBlockState(pos).getBlock(); if (block != null) { - return getItemStackFromBlock(world, x, y, z, block, world.getBlockMetadata(x, y, z)); + return getItemStackFromBlock(world, pos, block, world.getBlockState(pos)); } } return null; } - private ItemStack getItemStackFromBlock(World world, int x, int y, int z, Block block, int meta) { + private ItemStack getItemStackFromBlock(World world, BlockPos pos, Block block, IBlockState state) { + try { //try to get it by picking the block - ItemStack item = block.getPickBlock(new MovingObjectPosition(x, y, z, 1, Vec3.createVectorHelper(x, y, z)), world, x, y, z); + ItemStack item = block.getPickBlock(new MovingObjectPosition(MovingObjectPosition.MovingObjectType.BLOCK, new Vec3(pos.getX(), pos.getY(), pos.getZ()), EnumFacing.UP, pos), world, pos, FMLClientHandler.instance().getClientPlayerEntity()); if (item != null) { return item; } @@ -329,7 +330,7 @@ private ItemStack getItemStackFromBlock(World world, int x, int y, int z, Block try{ //try to get it from dropped items - List items = block.getDrops(world, x, y, z, meta, 0); + List items = block.getDrops(world, pos, state, 0); if (items != null && items.size() > 0 && items.get(0) != null) { return items.get(0); } @@ -338,30 +339,30 @@ private ItemStack getItemStackFromBlock(World world, int x, int y, int z, Block //get it from its id and meta - return new ItemStack(block, 1, meta); + return new ItemStack(block, 1, block.getMetaFromState(state)); } public void drawItemAmount(ItemStack itemstack, int x, int y) { - itemRender.renderItemOverlayIntoGUI(fontRendererObj, this.mc.getTextureManager(), itemstack, x + guiLeft, y + guiTop); + itemRender.renderItemOverlayIntoGUI(fontRendererObj, itemstack, x + guiLeft, y + guiTop, null); bindTexture(getComponentResource()); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_LIGHTING); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.disableLighting(); } public void drawItemStack(ItemStack itemstack, int x, int y) { - GL11.glPushMatrix(); + GlStateManager.pushMatrix(); RenderHelper.enableGUIStandardItemLighting(); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glEnable(GL11.GL_COLOR_MATERIAL); - GL11.glEnable(GL11.GL_LIGHTING); + GlStateManager.disableLighting(); + GlStateManager.enableRescaleNormal(); + GlStateManager.enableColorMaterial(); + GlStateManager.enableLighting(); itemRender.zLevel = 1F; try { - itemRender.renderItemIntoGUI(fontRendererObj, this.mc.getTextureManager(), itemstack, x + guiLeft, y + guiTop); + itemRender.renderItemIntoGUI(itemstack, x + guiLeft, y + guiTop); }catch (Exception ex) { if (itemstack.getItemDamage() != 0) { ItemStack newStack = itemstack.copy(); @@ -372,11 +373,11 @@ public void drawItemStack(ItemStack itemstack, int x, int y) { itemRender.zLevel = 0F; bindTexture(getComponentResource()); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glPopMatrix(); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.disableLighting(); + GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GlStateManager.enableAlpha(); + GlStateManager.popMatrix(); } } @@ -394,25 +395,25 @@ public void drawCursor(int x, int y, int z, int color) { drawCursor(x, y, z, 1F, color); } public void drawCursor(int x, int y, int z, float size, int color) { - GL11.glPushMatrix(); - GL11.glTranslatef(0, 0, z); + GlStateManager.pushMatrix(); + GlStateManager.translate(0, 0, z); x += guiLeft; y += guiTop; - GL11.glTranslatef(x, y, 0); - GL11.glScalef(size, size, 0); - GL11.glTranslatef(-x, -y, 0); + GlStateManager.translate(x, y, 0); + GlStateManager.scale(size, size, 0); + GlStateManager.translate(-x, -y, 0); Gui.drawRect(x, y + 1, x + 1, y + 10, color); - GL11.glPopMatrix(); + GlStateManager.popMatrix(); } public void drawLine(int x1, int y1, int x2, int y2) { - GL11.glPushMatrix(); + GlStateManager.pushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glColor4f(0.4F, 0.4F, 0.4F, 1F); + GlStateManager.disableTexture2D(); + GlStateManager.color(0.4F, 0.4F, 0.4F, 1F); - //GL11.glEnable(GL11.GL_BLEND); + //GlStateManager.enableBlend(); //GL11.glBlendFunc(GL11.GL_DST_COLOR, GL11.GL_DST_COLOR); //GL11.glShadeModel(GL11.GL_SMOOTH); //GL11.glEnable(GL11.GL_LINE_SMOOTH); @@ -425,10 +426,10 @@ public void drawLine(int x1, int y1, int x2, int y2) { GL11.glVertex3f(guiLeft + x2, guiTop + y2, 0); GL11.glEnd(); - GL11.glDisable(GL11.GL_BLEND); - GL11.glColor4f(1F, 1F, 1F, 1F); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); + GlStateManager.disableBlend(); + GlStateManager.color(1F, 1F, 1F, 1F); + GlStateManager.enableTexture2D(); + GlStateManager.popMatrix(); } @@ -454,23 +455,23 @@ public void drawScreen(int x, int y, float f) { private void startScaling() { //start scale - GL11.glPushMatrix(); + GlStateManager.pushMatrix(); float scale = getScale(); - GL11.glScalef(scale, scale, 1); - GL11.glTranslatef(-guiLeft, -guiTop, 0.0F); - GL11.glTranslatef((this.width - this.xSize * scale) / (2 * scale), (this.height - this.ySize * scale) / (2 * scale), 0.0F); + GlStateManager.scale(scale, scale, 1); + GlStateManager.translate(-guiLeft, -guiTop, 0.0F); + GlStateManager.translate((this.width - this.xSize * scale) / (2 * scale), (this.height - this.ySize * scale) / (2 * scale), 0.0F); } private void stopScaling() { //stop scale - GL11.glPopMatrix(); + GlStateManager.popMatrix(); } protected float getScale() { - net.minecraft.client.gui.ScaledResolution scaledresolution = new net.minecraft.client.gui.ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight); + net.minecraft.client.gui.ScaledResolution scaledresolution = new net.minecraft.client.gui.ScaledResolution(this.mc); float w = scaledresolution.getScaledWidth() * 0.9F; float h = scaledresolution.getScaledHeight() * 0.9F; float multX = w / xSize; @@ -500,21 +501,25 @@ protected int scaleY(float y) { return (int)y; } - public void drawIcon(IIcon icon, int x, int y) { - drawTexturedModelRectFromIcon(guiLeft + x, guiTop + y, icon, 16, 16); + public void drawIcon(TextureAtlasSprite texture, int x, int y) { + drawTexturedModalRect(guiLeft + x, guiTop + y, texture, 16, 16); } public void drawFluid(Fluid fluid, int x, int y) { + if (fluid == null) { + return; + } + + TextureMap textureMapBlocks = mc.getTextureMapBlocks(); + ResourceLocation fluidStill = fluid.getStill(); + TextureAtlasSprite icon = null; - IIcon icon = fluid.getIcon(); + if (fluidStill != null) + icon = textureMapBlocks.getAtlasSprite(fluidStill.toString()); if (icon == null) { - if (FluidRegistry.WATER.equals(fluid)) { - icon = Blocks.water.getIcon(0, 0); - }else if(FluidRegistry.LAVA.equals(fluid)) { - icon = Blocks.lava.getIcon(0, 0); - } + icon = textureMapBlocks.getMissingSprite(); } if (icon != null) { @@ -523,7 +528,7 @@ public void drawFluid(Fluid fluid, int x, int y) { drawIcon(icon, x, y); - GL11.glColor4f(1F, 1F, 1F, 1F); + GlStateManager.color(1F, 1F, 1F, 1F); bindTexture(getComponentResource()); } } @@ -533,7 +538,7 @@ private void setColor(int color) { for (int i = 0; i < colorComponents.length; i++) { colorComponents[i] = ((color & (255 << (i * 8))) >> (i * 8)) / 255F; } - GL11.glColor4f(colorComponents[2], colorComponents[1], colorComponents[0], 1F); + GlStateManager.color(colorComponents[2], colorComponents[1], colorComponents[0], 1F); } diff --git a/src/main/java/vswe/stevesfactory/interfaces/GuiManager.java b/src/main/java/vswe/stevesfactory/interfaces/GuiManager.java index 4389fba33..5bdd6af91 100644 --- a/src/main/java/vswe/stevesfactory/interfaces/GuiManager.java +++ b/src/main/java/vswe/stevesfactory/interfaces/GuiManager.java @@ -1,16 +1,15 @@ package vswe.stevesfactory.interfaces; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; -import org.lwjgl.opengl.GL11; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.Localization; -import vswe.stevesfactory.StevesFactoryManager; import vswe.stevesfactory.animation.AnimationController; import vswe.stevesfactory.blocks.TileEntityManager; import vswe.stevesfactory.components.FlowComponent; @@ -18,6 +17,7 @@ import vswe.stevesfactory.network.DataWriter; import vswe.stevesfactory.network.PacketHandler; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -53,13 +53,13 @@ public ResourceLocation getComponentResource() { public void drawWorldBackground(int val) { if (usePinkScreen) { drawRect(0, 0, width, height, 0xFFEC008C); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); }else if (useBlueScreen) { drawRect(0, 0, width, height, 0xFF000A91); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); }else if (useGreenScreen) { drawRect(0, 0, width, height, 0xFF00FF00); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); }else{ super.drawWorldBackground(val); } @@ -73,7 +73,7 @@ protected void drawGuiContainerBackgroundLayer(float f, int x, int y) { if (!useGreenScreen && !useBlueScreen && !usePinkScreen) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); bindTexture(BACKGROUND_1); drawTexture(0, 0, 0, 0, 256, 256); @@ -172,11 +172,10 @@ protected void drawGuiContainerBackgroundLayer(float f, int x, int y) { } } - public void handleMouseInput() { + @Override + public void handleMouseInput() throws IOException { super.handleMouseInput(); - - int scroll = Mouse.getEventDWheel(); if (scroll != 0) { if (hasSpecialRenderer()) { @@ -217,7 +216,7 @@ private String getInfo() { } @Override - protected void mouseClicked(int x, int y, int button) { + protected void mouseClicked(int x, int y, int button) throws IOException { x = scaleX(x); y = scaleY(y); @@ -283,11 +282,11 @@ protected void mouseClickMove(int x, int y, int button, long ticks) { } @Override - protected void mouseMovedOrUp(int x, int y, int button) { + protected void mouseReleased(int x, int y, int button) { x = scaleX(x); y = scaleY(y); - super.mouseMovedOrUp(x, y, button); + super.mouseReleased(x, y, button); x -= guiLeft; y -= guiTop; @@ -432,7 +431,7 @@ public boolean keyTyped(char c) { } @Override - protected void keyTyped(char c, int k) { + protected void keyTyped(char c, int k) throws IOException{ if (hasSpecialRenderer()) { getSpecialRenderer().onKeyTyped(this, c, k); }else{ diff --git a/src/main/java/vswe/stevesfactory/interfaces/GuiRelay.java b/src/main/java/vswe/stevesfactory/interfaces/GuiRelay.java index 60485ebff..95ab0d98f 100644 --- a/src/main/java/vswe/stevesfactory/interfaces/GuiRelay.java +++ b/src/main/java/vswe/stevesfactory/interfaces/GuiRelay.java @@ -1,12 +1,11 @@ package vswe.stevesfactory.interfaces; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StringUtils; -import org.lwjgl.opengl.GL11; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.Localization; import vswe.stevesfactory.blocks.TileEntityRelay; @@ -16,8 +15,10 @@ import vswe.stevesfactory.network.PacketHandler; import vswe.stevesfactory.util.Utils; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.UUID; @SideOnly(Side.CLIENT) public class GuiRelay extends GuiBase { @@ -43,7 +44,7 @@ public boolean isEnabled() { @Override public void onClick() { if (relay.getPermissions().size() < TileEntityRelay.PERMISSION_MAX_LENGTH) { - relay.getPermissions().add(new UserPermission(getUserName())); + relay.getPermissions().add(new UserPermission(getUserId(), getUserName())); addUser(); } } @@ -310,7 +311,7 @@ private int getSelectedPermission() { @Override protected void drawGuiContainerBackgroundLayer(float f, int mX, int mY) { hasCachedPermission = false; - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); bindTexture(TEXTURE); drawTexture(0, 0, 0, 0, xSize, ySize); @@ -339,7 +340,7 @@ protected void drawGuiContainerBackgroundLayer(float f, int mX, int mY) { renderInfoBox(j, permission, x + LIST_MENU_WIDTH - (1 + j) * (INFO_SIZE + INFO_MARGIN_X), y + INFO_MARGIN_Y); } - drawString(permission.getName(), x + LIST_TEXT_POS_X, y + LIST_TEXT_POS_Y, 0.7F, 0xEEEEEE); + drawString(permission.getUserName(), x + LIST_TEXT_POS_X, y + LIST_TEXT_POS_Y, 0.7F, 0xEEEEEE); } if (getPageCount() > 1) { @@ -360,7 +361,7 @@ protected void drawGuiContainerBackgroundLayer(float f, int mX, int mY) { UserPermission info = relay.doesListRequireOp() && !isOp(player, true) ? player : selected; if (info != null) { - drawString(info.getName(), INFO_BOX_POS_X + INFO_BOX_NAME_X, INFO_BOX_POS_Y + INFO_BOX_NAME_Y, 0.7F, 0x404040); + drawString(info.getUserName(), INFO_BOX_POS_X + INFO_BOX_NAME_X, INFO_BOX_POS_Y + INFO_BOX_NAME_Y, 0.7F, 0x404040); for (int i = 0; i < 2; i++) { int x = INFO_BOX_POS_X + INFO_BOX_INFO_X; int y = INFO_BOX_POS_Y + INFO_BOX_INFO_Y + i * (INFO_SIZE + INFO_MARGIN_INFO_Y); @@ -431,7 +432,7 @@ private void drawInfoBoxString(int id, UserPermission permission, int x, int y) } private boolean isOwner(UserPermission permission, boolean viewer) { - return (permission != null && permission.getName().equals(relay.getOwner())) || (viewer && getUserName().equals(relay.getOwner())); + return (permission != null && permission.getUserId().equals(relay.getOwner())) || (viewer && getUserId().equals(relay.getOwner())); } private boolean isOp(UserPermission permission, boolean viewer) { @@ -440,7 +441,7 @@ private boolean isOp(UserPermission permission, boolean viewer) { @Override - protected void mouseClicked(int mX, int mY, int b) { + protected void mouseClicked(int mX, int mY, int b) throws IOException { mX = scaleX(mX); mY = scaleY(mY); @@ -499,8 +500,12 @@ protected void mouseClicked(int mX, int mY, int b) { private UserPermission cachedPermission; private boolean hasCachedPermission; + private UUID getUserId() { + return Minecraft.getMinecraft().thePlayer.getUniqueID(); + } + private String getUserName() { - return Utils.stripControlCodes(Minecraft.getMinecraft().thePlayer.getDisplayName()); + return Utils.stripControlCodes(Minecraft.getMinecraft().thePlayer.getDisplayNameString()); } private UserPermission getUserPermission() { @@ -512,7 +517,7 @@ private UserPermission getUserPermission() { } for (UserPermission permission : relay.getPermissions()) { - if (permission.getName().equals(getUserName())) { + if (permission.getUserId().equals(getUserId())) { cachedPermission = permission; break; } @@ -547,7 +552,7 @@ private void removeUser(int id) { private void removeUser() { for (int i = 0; i < relay.getPermissions().size(); i++) { - if (relay.getPermissions().get(i).getName().equals(getUserName())) { + if (relay.getPermissions().get(i).getUserId().equals(getUserId())) { removeUser(i); break; } @@ -566,6 +571,7 @@ private void addUser() { DataWriter dw = PacketHandler.getWriterForServerPacket(); dw.writeBoolean(true); //user data dw.writeBoolean(true); //added + dw.writeString(getUserId().toString(), DataBitHelper.UUID_LENGTH); dw.writeString(getUserName(), DataBitHelper.NAME_LENGTH); PacketHandler.sendDataToServer(dw); } diff --git a/src/main/java/vswe/stevesfactory/interfaces/IAdvancedTooltip.java b/src/main/java/vswe/stevesfactory/interfaces/IAdvancedTooltip.java index f5713d0eb..a0f551376 100644 --- a/src/main/java/vswe/stevesfactory/interfaces/IAdvancedTooltip.java +++ b/src/main/java/vswe/stevesfactory/interfaces/IAdvancedTooltip.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.interfaces; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import java.util.List; diff --git a/src/main/java/vswe/stevesfactory/interfaces/IInterfaceRenderer.java b/src/main/java/vswe/stevesfactory/interfaces/IInterfaceRenderer.java index 046fba7ab..70ceb03d4 100644 --- a/src/main/java/vswe/stevesfactory/interfaces/IInterfaceRenderer.java +++ b/src/main/java/vswe/stevesfactory/interfaces/IInterfaceRenderer.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.interfaces; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public interface IInterfaceRenderer { diff --git a/src/main/java/vswe/stevesfactory/nbt/NBTNode.java b/src/main/java/vswe/stevesfactory/nbt/NBTNode.java index e0a4c5528..0dc044955 100644 --- a/src/main/java/vswe/stevesfactory/nbt/NBTNode.java +++ b/src/main/java/vswe/stevesfactory/nbt/NBTNode.java @@ -105,7 +105,7 @@ public static NBTNode generateNodes(NBTTagCompound compound) { private static NBTNode generateNodesFromTag(NBTTagCompound compound) { NBTNode node = new NBTNode(compound); node.nodes = new ArrayList(); - for (Object obj : compound.func_150296_c()) { + for (Object obj : compound.getKeySet()) { NBTBase tag = (NBTBase)obj; if (tag.getId() == END_TAG) break; @@ -127,7 +127,7 @@ private static NBTNode generateNodesFromList(NBTTagList compound) { private static NBTNode generateNodesFromArray(NBTTagByteArray compound) { NBTNode node = new NBTNode(compound); node.nodes = new ArrayList(); - for (byte b : compound.func_150292_c()) { + for (byte b : compound.getByteArray()) { NBTNode child = new NBTNode(null); child.value = String.valueOf(b); node.nodes.add(child); @@ -138,7 +138,7 @@ private static NBTNode generateNodesFromArray(NBTTagByteArray compound) { private static NBTNode generateNodesFromArray(NBTTagIntArray compound) { NBTNode node = new NBTNode(compound); node.nodes = new ArrayList(); - for (int n : compound.func_150302_c()) { + for (int n : compound.getIntArray()) { NBTNode child = new NBTNode(null); child.value = String.valueOf(n); node.nodes.add(child); diff --git a/src/main/java/vswe/stevesfactory/nbt/NBTRenderer.java b/src/main/java/vswe/stevesfactory/nbt/NBTRenderer.java index c5eb61091..22a5a1aec 100644 --- a/src/main/java/vswe/stevesfactory/nbt/NBTRenderer.java +++ b/src/main/java/vswe/stevesfactory/nbt/NBTRenderer.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.nbt; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.interfaces.GuiManager; import vswe.stevesfactory.interfaces.IInterfaceRenderer; diff --git a/src/main/java/vswe/stevesfactory/network/DataBitHelper.java b/src/main/java/vswe/stevesfactory/network/DataBitHelper.java index 2ebcf887d..563b1d7fc 100644 --- a/src/main/java/vswe/stevesfactory/network/DataBitHelper.java +++ b/src/main/java/vswe/stevesfactory/network/DataBitHelper.java @@ -32,9 +32,8 @@ public enum DataBitHelper { WORLD_COORDINATE(32), GUI_BUTTON_ID(5), - MENU_FLUID_ID(10) //Actually an int, but I think 10 bits is too much anyways. If someone has over 1024 fluids I have a problem - , - MENU_LIQUID_AMOUNT(20), + MENU_FLUID_ID_LENGTH(5), + MENU_FLUID_AMOUNT(20), MENU_SPLIT_DATA_ID(2), @@ -46,6 +45,7 @@ public enum DataBitHelper { PULSE_TICKS(5), NAME_LENGTH(5), + UUID_LENGTH(6), PERMISSION_ID(8), COMMAND_NAME(5), diff --git a/src/main/java/vswe/stevesfactory/network/DataReader.java b/src/main/java/vswe/stevesfactory/network/DataReader.java index 77ada052f..117e2f733 100644 --- a/src/main/java/vswe/stevesfactory/network/DataReader.java +++ b/src/main/java/vswe/stevesfactory/network/DataReader.java @@ -1,9 +1,9 @@ package vswe.stevesfactory.network; -import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTSizeTracker; import net.minecraft.nbt.NBTTagCompound; +import vswe.stevesfactory.util.Utils; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -94,7 +94,7 @@ public NBTTagCompound readNBT(){ } try { - return CompressedStreamTools.func_152457_a(bytes, new NBTSizeTracker(2097152L)); + return Utils.readCompressed(bytes, new NBTSizeTracker(2097152L)); }catch (IOException ex) { return null; } diff --git a/src/main/java/vswe/stevesfactory/network/DataWriter.java b/src/main/java/vswe/stevesfactory/network/DataWriter.java index 18e0a119a..31e59545e 100644 --- a/src/main/java/vswe/stevesfactory/network/DataWriter.java +++ b/src/main/java/vswe/stevesfactory/network/DataWriter.java @@ -1,18 +1,18 @@ package vswe.stevesfactory.network; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.common.network.internal.FMLProxyPacket; -import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.ICrafting; -import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.PacketBuffer; +import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraftforge.fml.common.network.internal.FMLProxyPacket; import vswe.stevesfactory.blocks.TileEntityManager; import vswe.stevesfactory.interfaces.ContainerBase; import vswe.stevesfactory.settings.Settings; +import vswe.stevesfactory.util.Utils; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -78,7 +78,7 @@ public void writeData(int data, int bitCount) { private FMLProxyPacket createPacket() { writeFinalBits(); - ByteBuf buf = Unpooled.copiedBuffer(((ByteArrayOutputStream)stream).toByteArray()); + PacketBuffer buf = new PacketBuffer(Unpooled.copiedBuffer(((ByteArrayOutputStream)stream).toByteArray())); return new FMLProxyPacket(buf, CHANNEL); } @@ -122,7 +122,7 @@ public void writeNBT(NBTTagCompound nbtTagCompound){ if (nbtTagCompound != null) { try { - bytes = CompressedStreamTools.compress(nbtTagCompound); + bytes = Utils.compress(nbtTagCompound); }catch (IOException ex) { bytes = null; } diff --git a/src/main/java/vswe/stevesfactory/network/PacketEventHandler.java b/src/main/java/vswe/stevesfactory/network/PacketEventHandler.java index 177d671fb..858519322 100644 --- a/src/main/java/vswe/stevesfactory/network/PacketEventHandler.java +++ b/src/main/java/vswe/stevesfactory/network/PacketEventHandler.java @@ -1,21 +1,33 @@ package vswe.stevesfactory.network; -import cpw.mods.fml.client.FMLClientHandler; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.network.FMLNetworkEvent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; import net.minecraft.network.NetHandlerPlayServer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; +import net.minecraftforge.fml.client.FMLClientHandler; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.network.FMLNetworkEvent; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.interfaces.ContainerBase; public class PacketEventHandler { @SideOnly(Side.CLIENT) @SubscribeEvent - public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) { + public void onClientPacket(final FMLNetworkEvent.ClientCustomPacketEvent event) { + FMLClientHandler.instance().getClient().addScheduledTask(new Runnable() { + @Override + public void run() { + processClientPacket(event); + } + }); + } + + @SideOnly(Side.CLIENT) + private void processClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) { DataReader dr = new DataReader(event.packet.payload().array()); EntityPlayer player = FMLClientHandler.instance().getClient().thePlayer; @@ -38,7 +50,7 @@ public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) { int y = dr.readData(DataBitHelper.WORLD_COORDINATE); int z = dr.readData(DataBitHelper.WORLD_COORDINATE); - TileEntity te = player.worldObj.getTileEntity(x, y, z); + TileEntity te = player.worldObj.getTileEntity(new BlockPos(x, y, z)); if (te != null && te instanceof IPacketBlock) { int id = dr.readData(((IPacketBlock) te).infoBitLength(false)); ((IPacketBlock)te).readData(dr, player, false, id); @@ -49,7 +61,17 @@ public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) { } @SubscribeEvent - public void onServerPacket(FMLNetworkEvent.ServerCustomPacketEvent event) { + public void onServerPacket(final FMLNetworkEvent.ServerCustomPacketEvent event) { + EntityPlayerMP player = ((NetHandlerPlayServer)event.handler).playerEntity; + player.getServerForPlayer().addScheduledTask(new Runnable() { + @Override + public void run() { + processServerPacket(event); + } + }); + } + + private void processServerPacket(FMLNetworkEvent.ServerCustomPacketEvent event) { DataReader dr = new DataReader(event.packet.payload().array()); EntityPlayer player = ((NetHandlerPlayServer)event.handler).playerEntity; @@ -68,7 +90,7 @@ public void onServerPacket(FMLNetworkEvent.ServerCustomPacketEvent event) { int y = dr.readData(DataBitHelper.WORLD_COORDINATE); int z = dr.readData(DataBitHelper.WORLD_COORDINATE); - TileEntity te = player.worldObj.getTileEntity(x, y, z); + TileEntity te = player.worldObj.getTileEntity(new BlockPos(x, y, z)); if (te != null && te instanceof IPacketBlock) { int id = dr.readData(((IPacketBlock) te).infoBitLength(true)); ((IPacketBlock)te).readData(dr, player, true, id); diff --git a/src/main/java/vswe/stevesfactory/network/PacketHandler.java b/src/main/java/vswe/stevesfactory/network/PacketHandler.java index 0735fdffc..31cb2829d 100644 --- a/src/main/java/vswe/stevesfactory/network/PacketHandler.java +++ b/src/main/java/vswe/stevesfactory/network/PacketHandler.java @@ -1,13 +1,14 @@ package vswe.stevesfactory.network; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; import net.minecraft.inventory.ICrafting; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.blocks.ITileEntityInterface; import vswe.stevesfactory.blocks.TileEntityManager; import vswe.stevesfactory.components.ComponentMenu; @@ -226,13 +227,14 @@ public static void sendRemovalPacket(ContainerManager container, int idToRemove) public static void sendBlockPacket(IPacketBlock block, EntityPlayer player, int id) { if (block instanceof TileEntity) { TileEntity te = (TileEntity)block; + BlockPos pos = te.getPos(); boolean onServer = player == null || !player.worldObj.isRemote; DataWriter dw = new DataWriter(); dw.writeBoolean(false); //no container - dw.writeData(te.xCoord, DataBitHelper.WORLD_COORDINATE); - dw.writeData(te.yCoord, DataBitHelper.WORLD_COORDINATE); - dw.writeData(te.zCoord, DataBitHelper.WORLD_COORDINATE); + dw.writeData(pos.getX(), DataBitHelper.WORLD_COORDINATE); + dw.writeData(pos.getY(), DataBitHelper.WORLD_COORDINATE); + dw.writeData(pos.getZ(), DataBitHelper.WORLD_COORDINATE); int length = block.infoBitLength(onServer); if (length != 0) { dw.writeData(id, length); @@ -244,7 +246,7 @@ public static void sendBlockPacket(IPacketBlock block, EntityPlayer player, int }else if(player != null) { dw.sendPlayerPacket((EntityPlayerMP)player); }else{ - dw.sendPlayerPackets(te.xCoord + 0.5, te.yCoord, te.zCoord, BLOCK_UPDATE_RANGE, te.getWorldObj().provider.dimensionId); + dw.sendPlayerPackets(pos.getX() + 0.5, pos.getY(), pos.getZ(), BLOCK_UPDATE_RANGE, te.getWorld().provider.getDimensionId()); } dw.close(); diff --git a/src/main/java/vswe/stevesfactory/proxy/ClientProxy.java b/src/main/java/vswe/stevesfactory/proxy/ClientProxy.java index 75b986799..4485ff1e5 100644 --- a/src/main/java/vswe/stevesfactory/proxy/ClientProxy.java +++ b/src/main/java/vswe/stevesfactory/proxy/ClientProxy.java @@ -1,17 +1,79 @@ package vswe.stevesfactory.proxy; -import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.Block; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.ModelResourceLocation; +import net.minecraft.item.Item; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.ModelLoaderRegistry; +import vswe.stevesfactory.StevesFactoryManager; import vswe.stevesfactory.blocks.ModBlocks; -import vswe.stevesfactory.blocks.RenderCamouflage; +import vswe.stevesfactory.blocks.client.ModelLoader; import vswe.stevesfactory.settings.Settings; public class ClientProxy extends CommonProxy { + @Override - public void init() { - RenderCamouflage camouflage = new RenderCamouflage(); - ModBlocks.CAMOUFLAGE_RENDER_ID = camouflage.getRenderId(); - RenderingRegistry.registerBlockHandler(camouflage); + public void preInit() { Settings.load(); + ModelLoaderRegistry.registerLoader(new ModelLoader()); + + addVariantNames(ModBlocks.blockCableRelay, "cable_relay", "cable_relay_advanced"); + addVariantNames(ModBlocks.blockCableIntake, "cable_valve", "cable_valve_instant"); + addVariantNames(ModBlocks.blockCableCluster, "cable_cluster", "cable_cluster_advanced"); + addVariantNames(ModBlocks.blockCableCamouflage, "cable_camouflage", "cable_camouflage_inside", "cable_camouflage_transform"); + + registerBlockModel(ModBlocks.blockManager); + registerBlockModel(ModBlocks.blockCable); + registerBlockModel(ModBlocks.blockCableOutput); + registerBlockModel(ModBlocks.blockCableInput); + registerBlockModel(ModBlocks.blockCableCreative); + registerBlockModel(ModBlocks.blockCableBUD); + registerBlockModel(ModBlocks.blockCableBreaker); + registerBlockModel(ModBlocks.blockCableSign); + registerBlockModelForVariant(ModBlocks.blockCableRelay, 0, "cable_relay"); + registerBlockModelForVariant(ModBlocks.blockCableRelay, 8, "cable_relay_advanced"); + registerBlockModelForVariant(ModBlocks.blockCableIntake, 0, "cable_valve"); + registerBlockModelForVariant(ModBlocks.blockCableIntake, 8, "cable_valve_instant"); + registerBlockModelForVariant(ModBlocks.blockCableCluster, 0, "cable_cluster"); + registerBlockModelForVariant(ModBlocks.blockCableCluster, 8, "cable_cluster_advanced"); + registerBlockModelForVariant(ModBlocks.blockCableCamouflage, 0, "cable_camouflage"); + registerBlockModelForVariant(ModBlocks.blockCableCamouflage, 1, "cable_camouflage_inside"); + registerBlockModelForVariant(ModBlocks.blockCableCamouflage, 2, "cable_camouflage_transform"); + } + + private static void addVariantNames(Block block, String... names) { + ResourceLocation[] locations = new ResourceLocation[names.length]; + for (int i = 0; i < names.length; i++) + { + locations[i] = new ResourceLocation(getResource(names[i])); + } + + if(block != null) + ModelBakery.registerItemVariants(Item.getItemFromBlock(block), locations); + } + + private static void registerBlockModelForVariant(Block base, int meta, String variant) { + registerBlockModel(base, meta, getResource(variant)); + } + + private static void registerBlockModel(Block block) { + ResourceLocation resourceLocation = Block.blockRegistry.getNameForObject(block); + + registerBlockModel(block, 0, resourceLocation.toString()); + } + + private static void registerBlockModel(Block block, int meta, String modelName) { + registerItemModel(Item.getItemFromBlock(block), meta, modelName); + } + + private static void registerItemModel(Item item, int meta, String resourcePath) { + ModelResourceLocation modelResourceLocation = new ModelResourceLocation(resourcePath, "inventory"); + net.minecraftforge.client.model.ModelLoader.setCustomModelResourceLocation(item, meta, modelResourceLocation); + } + + public static String getResource(String resource) { + return (StevesFactoryManager.MODID.toLowerCase() + ":") + resource; } } diff --git a/src/main/java/vswe/stevesfactory/proxy/CommonProxy.java b/src/main/java/vswe/stevesfactory/proxy/CommonProxy.java index 01e40620b..c47986bdb 100644 --- a/src/main/java/vswe/stevesfactory/proxy/CommonProxy.java +++ b/src/main/java/vswe/stevesfactory/proxy/CommonProxy.java @@ -2,7 +2,8 @@ public class CommonProxy { - public void init() { + + public void preInit() { } } diff --git a/src/main/java/vswe/stevesfactory/settings/Settings.java b/src/main/java/vswe/stevesfactory/settings/Settings.java index 866496bea..bedf0d34f 100644 --- a/src/main/java/vswe/stevesfactory/settings/Settings.java +++ b/src/main/java/vswe/stevesfactory/settings/Settings.java @@ -1,8 +1,9 @@ package vswe.stevesfactory.settings; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.state.IBlockState; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.blocks.TileEntityManager; import vswe.stevesfactory.network.DataReader; import vswe.stevesfactory.network.DataWriter; @@ -152,22 +153,24 @@ public static void setAutoBlacklist(boolean autoBlacklist) { } public static boolean isLimitless(TileEntityManager manager) { - return ( manager.getWorldObj().getBlockMetadata(manager.xCoord, manager.yCoord, manager.zCoord) & 1) != 0; + IBlockState state = manager.getWorld().getBlockState(manager.getPos()); + return (state.getBlock().getMetaFromState(state) & 1) != 0; } public static void setLimitless(TileEntityManager manager, boolean limitless) { - if (manager.getWorldObj().isRemote) { + if (manager.getWorld().isRemote) { DataWriter dw = PacketHandler.getWriterForServerActionPacket(); dw.writeBoolean(limitless); PacketHandler.sendDataToServer(dw); }else{ - int meta = manager.getWorldObj().getBlockMetadata(manager.xCoord, manager.yCoord, manager.zCoord); + IBlockState state = manager.getWorld().getBlockState(manager.getPos()); + int meta = state.getBlock().getMetaFromState(state); if (limitless) { meta |= 1; }else{ meta &= ~1; } - manager.getWorldObj().setBlockMetadataWithNotify(manager.xCoord, manager.yCoord, manager.zCoord, meta, 3); + manager.getWorld().setBlockState(manager.getPos(), state.getBlock().getStateFromMeta(meta), 3); } } diff --git a/src/main/java/vswe/stevesfactory/settings/SettingsScreen.java b/src/main/java/vswe/stevesfactory/settings/SettingsScreen.java index 7fb21614c..d9e1c4a33 100644 --- a/src/main/java/vswe/stevesfactory/settings/SettingsScreen.java +++ b/src/main/java/vswe/stevesfactory/settings/SettingsScreen.java @@ -1,8 +1,8 @@ package vswe.stevesfactory.settings; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.CollisionHelper; import vswe.stevesfactory.Localization; import vswe.stevesfactory.blocks.TileEntityManager; diff --git a/src/main/java/vswe/stevesfactory/util/Utils.java b/src/main/java/vswe/stevesfactory/util/Utils.java index 38008377b..73a5ae88e 100644 --- a/src/main/java/vswe/stevesfactory/util/Utils.java +++ b/src/main/java/vswe/stevesfactory/util/Utils.java @@ -1,6 +1,13 @@ package vswe.stevesfactory.util; +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTSizeTracker; +import net.minecraft.nbt.NBTTagCompound; + +import java.io.*; import java.util.regex.Pattern; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; public class Utils { @@ -11,4 +18,40 @@ public static String stripControlCodes(String s) return patternControlCode.matcher(s).replaceAll(""); } + + public static NBTTagCompound readCompressed(byte[] bytes, NBTSizeTracker sizeTracker) throws IOException + { + DataInputStream datainputstream = new DataInputStream(new BufferedInputStream(new GZIPInputStream(new ByteArrayInputStream(bytes)))); + NBTTagCompound nbttagcompound; + + try + { + nbttagcompound = CompressedStreamTools.read(datainputstream, sizeTracker); + } + finally + { + datainputstream.close(); + } + + return nbttagcompound; + } + + public static byte[] compress(NBTTagCompound tagCompound) throws IOException + { + ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(); + DataOutputStream dataoutputstream = new DataOutputStream(new GZIPOutputStream(bytearrayoutputstream)); + + try + { + CompressedStreamTools.write(tagCompound, dataoutputstream); + } + finally + { + dataoutputstream.close(); + } + + return bytearrayoutputstream.toByteArray(); + } + + } diff --git a/src/main/java/vswe/stevesfactory/waila/Provider.java b/src/main/java/vswe/stevesfactory/waila/Provider.java index 98277e9cb..41d14b7cc 100644 --- a/src/main/java/vswe/stevesfactory/waila/Provider.java +++ b/src/main/java/vswe/stevesfactory/waila/Provider.java @@ -1,71 +1,85 @@ package vswe.stevesfactory.waila; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import mcp.mobius.waila.api.*; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import vswe.stevesfactory.Localization; import vswe.stevesfactory.blocks.*; import java.util.List; public class Provider implements IWailaDataProvider { + @Override public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) { TileEntity te = accessor.getTileEntity(); if (te != null && !isShiftDown()) { - TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, te.getWorldObj(), te.xCoord, te.yCoord, te.zCoord); + TileEntityCamouflage camouflage = TileEntityCluster.getTileEntity(TileEntityCamouflage.class, te.getWorld(), te.getPos()); if (camouflage != null ) { - int id = camouflage.getId(accessor.getPosition().sideHit); - int meta = camouflage.getMeta(accessor.getPosition().sideHit); + int id = camouflage.getId(accessor.getSide().getIndex()); + int meta = camouflage.getMeta(accessor.getSide().getIndex()); if (id != 0) { Block block = Block.getBlockById(id); if (block != null) { - return new ItemStack(block, 1, block.damageDropped(meta)); + return new ItemStack(block, 1, block.damageDropped(block.getStateFromMeta(meta))); } } } } - return new ItemStack(accessor.getBlock(), 1, accessor.getBlock().damageDropped(accessor.getMetadata())); + return new ItemStack(accessor.getBlock(), 1, accessor.getBlock().damageDropped(accessor.getBlock().getStateFromMeta(accessor.getMetadata()))); } @Override - public List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { - return currenttip; + public List getWailaHead(ItemStack itemStack, List list, IWailaDataAccessor iWailaDataAccessor, IWailaConfigHandler iWailaConfigHandler) { + return list; } @Override - public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { - if (itemStack != null && itemStack.getItem() == accessor.getStack().getItem()) { - TileEntity te = accessor.getTileEntity(); + public List getWailaBody(ItemStack itemStack, List list, IWailaDataAccessor iWailaDataAccessor, IWailaConfigHandler iWailaConfigHandler) { + if (itemStack != null && itemStack.getItem() == iWailaDataAccessor.getStack().getItem()) { + TileEntity te = iWailaDataAccessor.getTileEntity(); if (te != null ) { if (te instanceof TileEntityCluster) { TileEntityCluster cluster = (TileEntityCluster)te; for (byte type : cluster.getTypes()) { - currenttip.add(ClusterRegistry.getRegistryList().get(type).getItemStack().getDisplayName()); + list.add(ClusterRegistry.getRegistryList().get(type).getItemStack().getDisplayName()); } }else if(te instanceof TileEntityOutput) { TileEntityOutput emitter = (TileEntityOutput)te; if (isShiftDown()) { - for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { - currenttip.add(getEmitterSide(emitter, i, true)); + for (EnumFacing side: EnumFacing.values()) { + list.add(getEmitterSide(emitter, side, true)); } }else{ - currenttip.add(getEmitterSide(emitter, accessor.getPosition().sideHit, false)); + list.add(getEmitterSide(emitter, iWailaDataAccessor.getSide(), false)); } } } } - return currenttip; + return list; + } + + @Override + public List getWailaTail(ItemStack itemStack, List list, IWailaDataAccessor iWailaDataAccessor, IWailaConfigHandler iWailaConfigHandler) { + return list; + } + + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { + return tag; } @SideOnly(Side.CLIENT) @@ -73,21 +87,16 @@ private boolean isShiftDown() { return GuiScreen.isShiftKeyDown(); } - private String getEmitterSide(TileEntityOutput emitter, int side, boolean full) { + private String getEmitterSide(TileEntityOutput emitter, EnumFacing side, boolean full) { String str = (emitter.hasStrongSignalAtSide(side) ? Localization.STRONG_POWER.toString() : Localization.WEAK_POWER.toString()) + ": " + emitter.getStrengthFromSide(side) + " "; if (full) { - str = Localization.getForgeDirectionLocalization(side) + " " + str; + str = Localization.getDirectionLocalization(side) + " " + str; } return str; } - @Override - public List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { - return currenttip; - } - public static void callbackRegister(IWailaRegistrar registrar){ Provider instance = new Provider(); registrar.registerBodyProvider(instance, BlockCableCluster.class); @@ -100,4 +109,4 @@ public static void callbackRegister(IWailaRegistrar registrar){ -} +} \ No newline at end of file diff --git a/src/main/java/vswe/stevesfactory/wrappers/InventoryWrapper.java b/src/main/java/vswe/stevesfactory/wrappers/InventoryWrapper.java index 87fae79f8..0d6da9674 100644 --- a/src/main/java/vswe/stevesfactory/wrappers/InventoryWrapper.java +++ b/src/main/java/vswe/stevesfactory/wrappers/InventoryWrapper.java @@ -4,6 +4,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; +import net.minecraft.util.IChatComponent; public abstract class InventoryWrapper implements IInventory { @@ -29,8 +30,8 @@ public ItemStack decrStackSize(int i, int j) { } @Override - public ItemStack getStackInSlotOnClosing(int i) { - return inventory.getStackInSlotOnClosing(i); + public ItemStack removeStackFromSlot(int i) { + return inventory.removeStackFromSlot(i); } @Override @@ -39,13 +40,18 @@ public void setInventorySlotContents(int i, ItemStack itemstack) { } @Override - public String getInventoryName() { - return inventory.getInventoryName(); + public String getName() { + return inventory.getName(); } @Override - public boolean hasCustomInventoryName() { - return inventory.hasCustomInventoryName(); + public boolean hasCustomName() { + return inventory.hasCustomName(); + } + + @Override + public IChatComponent getDisplayName() { + return inventory.getDisplayName(); } @Override @@ -64,17 +70,37 @@ public boolean isUseableByPlayer(EntityPlayer entityplayer) { } @Override - public void openInventory() { - inventory.openInventory(); + public void openInventory(EntityPlayer player) { + inventory.openInventory(player); } @Override - public void closeInventory() { - inventory.closeInventory(); + public void closeInventory(EntityPlayer player) { + inventory.closeInventory(player); } @Override public boolean isItemValidForSlot(int i, ItemStack itemstack) { return inventory.isItemValidForSlot(i, itemstack); } + + @Override + public int getField(int id) { + return inventory.getField(id); + } + + @Override + public void setField(int id, int value) { + inventory.setField(id, value); + } + + @Override + public int getFieldCount() { + return inventory.getFieldCount(); + } + + @Override + public void clear() { + inventory.clear(); + } } diff --git a/src/main/java/vswe/stevesfactory/wrappers/InventoryWrapperHorse.java b/src/main/java/vswe/stevesfactory/wrappers/InventoryWrapperHorse.java index 5d9b7d244..b723ce464 100644 --- a/src/main/java/vswe/stevesfactory/wrappers/InventoryWrapperHorse.java +++ b/src/main/java/vswe/stevesfactory/wrappers/InventoryWrapperHorse.java @@ -1,10 +1,10 @@ package vswe.stevesfactory.wrappers; -import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.entity.passive.EntityHorse; import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.relauncher.ReflectionHelper; public class InventoryWrapperHorse extends InventoryWrapper { @@ -26,7 +26,7 @@ public boolean isItemValidForSlot(int i, ItemStack itemstack) { //armor }else if(i == 1 && horse.getHorseType() == 0) { - return horse.func_110259_cr() && EntityHorse.func_146085_a(itemstack.getItem()); + return horse.canWearArmor() && EntityHorse.isArmorItem(itemstack.getItem()); //chest }else { diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/Thumbs.db b/src/main/resources/assets/stevesfactory/textures/blocks/Thumbs.db deleted file mode 100644 index 2963d72fd..000000000 Binary files a/src/main/resources/assets/stevesfactory/textures/blocks/Thumbs.db and /dev/null differ diff --git a/src/main/resources/assets/stevesfactory/textures/gui/Thumbs.db b/src/main/resources/assets/stevesfactory/textures/gui/Thumbs.db deleted file mode 100644 index 87ab1adca..000000000 Binary files a/src/main/resources/assets/stevesfactory/textures/gui/Thumbs.db and /dev/null differ diff --git a/src/main/resources/assets/stevesfactory/textures/items/Thumbs.db b/src/main/resources/assets/stevesfactory/textures/items/Thumbs.db deleted file mode 100644 index b80ee7b61..000000000 Binary files a/src/main/resources/assets/stevesfactory/textures/items/Thumbs.db and /dev/null differ diff --git a/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableBUDName.json b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableBUDName.json new file mode 100644 index 000000000..af5f12641 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableBUDName.json @@ -0,0 +1,5 @@ +{ + "variants": { + "normal": { "model": "stevesfactorymanager:cable_bud" } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableBreakerName.json b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableBreakerName.json new file mode 100644 index 000000000..d9fdcc4e4 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableBreakerName.json @@ -0,0 +1,45 @@ +{ + "variants": { + "direction=down,front=down": { "model": "stevesfactorymanager:cable_breaker_both", "x": 90}, + "direction=up,front=down": { "model": "stevesfactorymanager:cable_breaker_op", "x": 90}, + "direction=north,front=down": { "model": "stevesfactorymanager:cable_breaker_side", "x": 90, "y": 270}, + "direction=south,front=down": { "model": "stevesfactorymanager:cable_breaker_side", "x": 90, "y": 90}, + "direction=west,front=down": { "model": "stevesfactorymanager:cable_breaker_side", "x": 90, "y": 180}, + "direction=east,front=down": { "model": "stevesfactorymanager:cable_breaker_side", "x": 90}, + + "direction=down,front=up": { "model": "stevesfactorymanager:cable_breaker_op", "x": 270}, + "direction=up,front=up": { "model": "stevesfactorymanager:cable_breaker_both", "x": 270}, + "direction=north,front=up": { "model": "stevesfactorymanager:cable_breaker_side", "x": 270, "y": 270}, + "direction=south,front=up": { "model": "stevesfactorymanager:cable_breaker_side", "x": 270, "y": 90}, + "direction=west,front=up": { "model": "stevesfactorymanager:cable_breaker_side", "x": 270, "y": 180}, + "direction=east,front=up": { "model": "stevesfactorymanager:cable_breaker_side", "x": 270}, + + "direction=down,front=north": { "model": "stevesfactorymanager:cable_breaker_up", "x": 180, "y": 180}, + "direction=up,front=north": { "model": "stevesfactorymanager:cable_breaker_up"}, + "direction=north,front=north": { "model": "stevesfactorymanager:cable_breaker_both"}, + "direction=south,front=north": { "model": "stevesfactorymanager:cable_breaker_op"}, + "direction=west,front=north": { "model": "stevesfactorymanager:cable_breaker_side", "x": 180, "y": 180}, + "direction=east,front=north": { "model": "stevesfactorymanager:cable_breaker_side"}, + + "direction=down,front=south": { "model": "stevesfactorymanager:cable_breaker_up", "x": 180}, + "direction=up,front=south": { "model": "stevesfactorymanager:cable_breaker_up", "y": 180}, + "direction=north,front=south": { "model": "stevesfactorymanager:cable_breaker_op", "y": 180}, + "direction=south,front=south": { "model": "stevesfactorymanager:cable_breaker_both", "y": 180}, + "direction=west,front=south": { "model": "stevesfactorymanager:cable_breaker_side", "y": 180}, + "direction=east,front=south": { "model": "stevesfactorymanager:cable_breaker_side", "x": 180}, + + "direction=down,front=west": { "model": "stevesfactorymanager:cable_breaker_up", "x": 180, "y": 90}, + "direction=up,front=west": { "model": "stevesfactorymanager:cable_breaker_up", "y": 270}, + "direction=north,front=west": { "model": "stevesfactorymanager:cable_breaker_side", "y": 270}, + "direction=south,front=west": { "model": "stevesfactorymanager:cable_breaker_side", "y": 90, "x": 180}, + "direction=west,front=west": { "model": "stevesfactorymanager:cable_breaker_both", "y": 270}, + "direction=east,front=west": { "model": "stevesfactorymanager:cable_breaker_op", "y": 270}, + + "direction=down,front=east": { "model": "stevesfactorymanager:cable_breaker_up", "x": 180, "y": 270}, + "direction=up,front=east": { "model": "stevesfactorymanager:cable_breaker_up", "y": 90}, + "direction=north,front=east": { "model": "stevesfactorymanager:cable_breaker_side", "y": 270, "x": 180}, + "direction=south,front=east": { "model": "stevesfactorymanager:cable_breaker_side", "y": 90}, + "direction=west,front=east": { "model": "stevesfactorymanager:cable_breaker_op", "y": 90}, + "direction=east,front=east": { "model": "stevesfactorymanager:cable_breaker_both", "y": 90} + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableCamouflageName.json b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableCamouflageName.json new file mode 100644 index 000000000..b9c2968b4 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableCamouflageName.json @@ -0,0 +1,7 @@ +{ + "variants": { + "camo_type=cable_camo": { "model": "stevesfactorymanager:builtin/cable_camouflage" }, + "camo_type=cable_camo_inside": { "model": "stevesfactorymanager:builtin/cable_camouflage" }, + "camo_type=cable_camo_shape": { "model": "stevesfactorymanager:builtin/cable_camouflage" } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableClusterName.json b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableClusterName.json new file mode 100644 index 000000000..8d91902d8 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableClusterName.json @@ -0,0 +1,16 @@ +{ + "variants": { + "advanced=false,facing=north": { "model": "stevesfactorymanager:builtin/cable_cluster"}, + "advanced=false,facing=down": { "model": "stevesfactorymanager:builtin/cable_cluster", "x": 90 }, + "advanced=false,facing=up": { "model": "stevesfactorymanager:builtin/cable_cluster", "x": 270 }, + "advanced=false,facing=east": { "model": "stevesfactorymanager:builtin/cable_cluster", "y": 90 }, + "advanced=false,facing=south": { "model": "stevesfactorymanager:builtin/cable_cluster", "y": 180 }, + "advanced=false,facing=west": { "model": "stevesfactorymanager:builtin/cable_cluster", "y": 270 }, + "advanced=true,facing=north": { "model": "stevesfactorymanager:builtin/cable_cluster" }, + "advanced=true,facing=down": { "model": "stevesfactorymanager:builtin/cable_cluster", "x": 90 }, + "advanced=true,facing=up": { "model": "stevesfactorymanager:builtin/cable_cluster", "x": 270 }, + "advanced=true,facing=east": { "model": "stevesfactorymanager:builtin/cable_cluster", "y": 90 }, + "advanced=true,facing=south": { "model": "stevesfactorymanager:builtin/cable_cluster", "y": 180 }, + "advanced=true,facing=west": { "model": "stevesfactorymanager:builtin/cable_cluster", "y": 270 } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableCreativeName.json b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableCreativeName.json new file mode 100644 index 000000000..def59ea06 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableCreativeName.json @@ -0,0 +1,5 @@ +{ + "variants": { + "normal": { "model": "stevesfactorymanager:cable_creative" } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableInputName.json b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableInputName.json new file mode 100644 index 000000000..2719e0667 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableInputName.json @@ -0,0 +1,5 @@ +{ + "variants": { + "normal": { "model": "stevesfactorymanager:cable_receiver" } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableIntakeName.json b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableIntakeName.json new file mode 100644 index 000000000..ecda15efa --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableIntakeName.json @@ -0,0 +1,16 @@ +{ + "variants": { + "advanced=false,facing=north": { "model": "stevesfactorymanager:cable_valve"}, + "advanced=false,facing=down": { "model": "stevesfactorymanager:cable_valve", "x": 90 }, + "advanced=false,facing=up": { "model": "stevesfactorymanager:cable_valve", "x": 270 }, + "advanced=false,facing=east": { "model": "stevesfactorymanager:cable_valve", "y": 90 }, + "advanced=false,facing=south": { "model": "stevesfactorymanager:cable_valve", "y": 180 }, + "advanced=false,facing=west": { "model": "stevesfactorymanager:cable_valve", "y": 270 }, + "advanced=true,facing=north": { "model": "stevesfactorymanager:cable_valve_instant" }, + "advanced=true,facing=down": { "model": "stevesfactorymanager:cable_valve_instant", "x": 90 }, + "advanced=true,facing=up": { "model": "stevesfactorymanager:cable_valve_instant", "x": 270 }, + "advanced=true,facing=east": { "model": "stevesfactorymanager:cable_valve_instant", "y": 90 }, + "advanced=true,facing=south": { "model": "stevesfactorymanager:cable_valve_instant", "y": 180 }, + "advanced=true,facing=west": { "model": "stevesfactorymanager:cable_valve_instant", "y": 270 } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableName.json b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableName.json new file mode 100644 index 000000000..8caf2aa87 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableName.json @@ -0,0 +1,5 @@ +{ + "variants": { + "normal": { "model": "stevesfactorymanager:cable" } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableOutputName.json b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableOutputName.json new file mode 100644 index 000000000..e5841f92a --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableOutputName.json @@ -0,0 +1,5 @@ +{ + "variants": { + "normal": { "model": "stevesfactorymanager:builtin/cable_emitter" } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableRelayName.json b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableRelayName.json new file mode 100644 index 000000000..7b553ab49 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableRelayName.json @@ -0,0 +1,16 @@ +{ + "variants": { + "advanced=false,facing=north": { "model": "stevesfactorymanager:cable_relay"}, + "advanced=false,facing=down": { "model": "stevesfactorymanager:cable_relay", "x": 90 }, + "advanced=false,facing=up": { "model": "stevesfactorymanager:cable_relay", "x": 270 }, + "advanced=false,facing=east": { "model": "stevesfactorymanager:cable_relay", "y": 90 }, + "advanced=false,facing=south": { "model": "stevesfactorymanager:cable_relay", "y": 180 }, + "advanced=false,facing=west": { "model": "stevesfactorymanager:cable_relay", "y": 270 }, + "advanced=true,facing=north": { "model": "stevesfactorymanager:cable_relay_advanced" }, + "advanced=true,facing=down": { "model": "stevesfactorymanager:cable_relay_advanced", "x": 90 }, + "advanced=true,facing=up": { "model": "stevesfactorymanager:cable_relay_advanced", "x": 270 }, + "advanced=true,facing=east": { "model": "stevesfactorymanager:cable_relay_advanced", "y": 90 }, + "advanced=true,facing=south": { "model": "stevesfactorymanager:cable_relay_advanced", "y": 180 }, + "advanced=true,facing=west": { "model": "stevesfactorymanager:cable_relay_advanced", "y": 270 } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableSignName.json b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableSignName.json new file mode 100644 index 000000000..be6bcaf5e --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockCableSignName.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=north": { "model": "stevesfactorymanager:cable_sign"}, + "facing=down": { "model": "stevesfactorymanager:cable_sign", "x": 90 }, + "facing=up": { "model": "stevesfactorymanager:cable_sign", "x": 270 }, + "facing=east": { "model": "stevesfactorymanager:cable_sign", "y": 90 }, + "facing=south": { "model": "stevesfactorymanager:cable_sign", "y": 180 }, + "facing=west": { "model": "stevesfactorymanager:cable_sign", "y": 270 } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/blockstates/BlockMachineManagerName.json b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockMachineManagerName.json new file mode 100644 index 000000000..a97b47d4e --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/blockstates/BlockMachineManagerName.json @@ -0,0 +1,10 @@ +{ + "variants": { + "limitless=false": { + "model": "stevesfactorymanager:machine_manager" + }, + "limitless=true": { + "model": "stevesfactorymanager:machine_manager" + } + } +} diff --git a/src/main/resources/assets/stevesfactory/lang/en_US.lang b/src/main/resources/assets/stevesfactorymanager/lang/en_US.lang similarity index 97% rename from src/main/resources/assets/stevesfactory/lang/en_US.lang rename to src/main/resources/assets/stevesfactorymanager/lang/en_US.lang index e90bfcdc9..c06f45f3f 100644 --- a/src/main/resources/assets/stevesfactory/lang/en_US.lang +++ b/src/main/resources/assets/stevesfactorymanager/lang/en_US.lang @@ -33,12 +33,12 @@ gui.sfm.ConditionShort=Condition gui.sfm.ConditionLong=Condition gui.sfm.FlowControlShort=Flow gui.sfm.FlowControlLong=Flow Control -gui.sfm.LiquidInputShort=Input (L) -gui.sfm.LiquidInputLong=Liquid Input -gui.sfm.LiquidOutputShort=Output (L) -gui.sfm.LiquidOutputLong=Liquid Output -gui.sfm.LiquidConditionShort=Condition (L) -gui.sfm.LiquidConditionLong=Liquid Condition +gui.sfm.FluidInputShort=Input (F) +gui.sfm.FluidInputLong=Fluid Input +gui.sfm.FluidOutputShort=Output (F) +gui.sfm.FluidOutputLong=Fluid Output +gui.sfm.FluidConditionShort=Condition (F) +gui.sfm.FluidConditionLong=Fluid Condition gui.sfm.RedstoneEmitterShort=Emitter gui.sfm.RedstoneEmitterLong=Redstone Emitter gui.sfm.RedstoneConditionShort=Condition (R) @@ -136,7 +136,7 @@ gui.sfm.DamageValue=Damage value gui.sfm.NoConditionError=No condition selected gui.sfm.Buckets=Buckets gui.sfm.MilliBuckets=Milli Buckets -gui.sfm.LiquidsMenu=Liquids +gui.sfm.FluidsMenu=Fluids gui.sfm.UseAll=Use all gui.sfm.Reversed=Reversed gui.sfm.LoopOrderMenu=Loop Order @@ -222,8 +222,8 @@ gui.sfm.VariableBrown=Brown variable gui.sfm.VariableGreen=Green variable gui.sfm.VariableRed=Red variable gui.sfm.VariableBlack=Black variable -gui.sfm.NoLiquidSelected=[No liquid selected] -gui.sfm.ChangeLiquid=Left click to change liquid +gui.sfm.NoFluidSelected=[No Fluid selected] +gui.sfm.ChangeFluid=Left click to change fluid gui.sfm.EditSetting=Right click to edit settings gui.sfm.NoItemSelected=[No item selected] gui.sfm.ChangeItem=Left click to change item diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable.json new file mode 100644 index 000000000..a0a646dc4 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "stevesfactorymanager:blocks/cable" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker.json new file mode 100644 index 000000000..e8d6de513 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "particle": "#front", + "down": "#side", + "up": "#side", + "north": "#front", + "east": "#orient", + "south": "#side", + "west": "#side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_both.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_both.json new file mode 100644 index 000000000..78d9e14e2 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_both.json @@ -0,0 +1,7 @@ +{ + "parent": "stevesfactorymanager:block/orientable_front", + "textures": { + "front": "stevesfactorymanager:blocks/cable_breaker", + "side": "stevesfactorymanager:blocks/cable_idle" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_op.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_op.json new file mode 100644 index 000000000..2f5b1ab8f --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_op.json @@ -0,0 +1,8 @@ +{ + "parent": "stevesfactorymanager:block/orientable_front_op", + "textures": { + "front": "stevesfactorymanager:blocks/cable_breaker_front", + "opposite": "stevesfactorymanager:blocks/cable_breaker_direction", + "side": "stevesfactorymanager:blocks/cable_idle" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_side.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_side.json new file mode 100644 index 000000000..b78df0ebf --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_side.json @@ -0,0 +1,8 @@ +{ + "parent": "stevesfactorymanager:block/cable_breaker", + "textures": { + "front": "stevesfactorymanager:blocks/cable_breaker_front", + "orient": "stevesfactorymanager:blocks/cable_breaker_direction", + "side": "stevesfactorymanager:blocks/cable_idle" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_up.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_up.json new file mode 100644 index 000000000..f88846b83 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_up.json @@ -0,0 +1,8 @@ +{ + "parent": "stevesfactorymanager:block/cable_breaker_vertical", + "textures": { + "front": "stevesfactorymanager:blocks/cable_breaker_front", + "orient": "stevesfactorymanager:blocks/cable_breaker_direction", + "side": "stevesfactorymanager:blocks/cable_idle" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_vertical.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_vertical.json new file mode 100644 index 000000000..8c7318705 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_breaker_vertical.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "particle": "#front", + "down": "#side", + "up": "#orient", + "north": "#front", + "east": "#side", + "south": "#side", + "west": "#side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_bud.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_bud.json new file mode 100644 index 000000000..2ab1f92fa --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_bud.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "stevesfactorymanager:blocks/cable_bud" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_camouflage.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_camouflage.json new file mode 100644 index 000000000..826307726 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_camouflage.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "stevesfactorymanager:blocks/cable_camo" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_camouflage_inside.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_camouflage_inside.json new file mode 100644 index 000000000..9bc61ff6b --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_camouflage_inside.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "stevesfactorymanager:blocks/cable_camo_inside" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_camouflage_transform.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_camouflage_transform.json new file mode 100644 index 000000000..70e44f91f --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_camouflage_transform.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "stevesfactorymanager:blocks/cable_camo_shape" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_cluster.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_cluster.json new file mode 100644 index 000000000..86ec2a271 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_cluster.json @@ -0,0 +1,7 @@ +{ + "parent": "stevesfactorymanager:block/orientable_front", + "textures": { + "front": "stevesfactorymanager:blocks/cable_cluster_front", + "side": "stevesfactorymanager:blocks/cable_cluster" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_cluster_advanced.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_cluster_advanced.json new file mode 100644 index 000000000..c576171ca --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_cluster_advanced.json @@ -0,0 +1,7 @@ +{ + "parent": "stevesfactorymanager:block/orientable_front", + "textures": { + "front": "stevesfactorymanager:blocks/cable_cluster_adv_front", + "side": "stevesfactorymanager:blocks/cable_cluster_adv" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_creative.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_creative.json new file mode 100644 index 000000000..d0a88cc06 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_creative.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "stevesfactorymanager:blocks/cable_creative" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_emitter.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_emitter.json new file mode 100644 index 000000000..a56635766 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_emitter.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "stevesfactorymanager:blocks/cable_output_weak" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_receiver.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_receiver.json new file mode 100644 index 000000000..426869a6a --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_receiver.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "stevesfactorymanager:blocks/cable_input" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_relay.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_relay.json new file mode 100644 index 000000000..1497a491c --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_relay.json @@ -0,0 +1,7 @@ +{ + "parent": "stevesfactorymanager:block/orientable_front", + "textures": { + "front": "stevesfactorymanager:blocks/cable_relay", + "side": "stevesfactorymanager:blocks/cable_idle" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_relay_advanced.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_relay_advanced.json new file mode 100644 index 000000000..1b40bca19 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_relay_advanced.json @@ -0,0 +1,7 @@ +{ + "parent": "stevesfactorymanager:block/orientable_front", + "textures": { + "front": "stevesfactorymanager:blocks/cable_relay_advanced", + "side": "stevesfactorymanager:blocks/cable_idle" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_sign.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_sign.json new file mode 100644 index 000000000..194d44936 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_sign.json @@ -0,0 +1,7 @@ +{ + "parent": "stevesfactorymanager:block/orientable_front", + "textures": { + "front": "stevesfactorymanager:blocks/cable_sign", + "side": "stevesfactorymanager:blocks/cable_idle" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_valve.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_valve.json new file mode 100644 index 000000000..37b956298 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_valve.json @@ -0,0 +1,7 @@ +{ + "parent": "stevesfactorymanager:block/orientable_front", + "textures": { + "front": "stevesfactorymanager:blocks/cable_intake_out", + "side": "stevesfactorymanager:blocks/cable_intake" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/cable_valve_instant.json b/src/main/resources/assets/stevesfactorymanager/models/block/cable_valve_instant.json new file mode 100644 index 000000000..c28e580a7 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/cable_valve_instant.json @@ -0,0 +1,7 @@ +{ + "parent": "stevesfactorymanager:block/orientable_front", + "textures": { + "front": "stevesfactorymanager:blocks/cable_intake_out_instant", + "side": "stevesfactorymanager:blocks/cable_intake_instant" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/machine_manager.json b/src/main/resources/assets/stevesfactorymanager/models/block/machine_manager.json new file mode 100644 index 000000000..e2770e576 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/machine_manager.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "top": "stevesfactorymanager:blocks/manager_top", + "bottom": "stevesfactorymanager:blocks/manager_bot", + "side": "stevesfactorymanager:blocks/manager_side" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/orientable_front.json b/src/main/resources/assets/stevesfactorymanager/models/block/orientable_front.json new file mode 100644 index 000000000..904dbcfb2 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/orientable_front.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "particle": "#front", + "down": "#side", + "up": "#side", + "north": "#front", + "east": "#side", + "south": "#side", + "west": "#side" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/block/orientable_front_op.json b/src/main/resources/assets/stevesfactorymanager/models/block/orientable_front_op.json new file mode 100644 index 000000000..a13c9a546 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/block/orientable_front_op.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "particle": "#front", + "down": "#side", + "up": "#side", + "north": "#front", + "east": "#side", + "south": "#opposite", + "west": "#side" + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableBUDName.json b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableBUDName.json new file mode 100644 index 000000000..d3df134d9 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableBUDName.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_bud", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableBreakerName.json b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableBreakerName.json new file mode 100644 index 000000000..5b3dba4ab --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableBreakerName.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_breaker_both", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableCreativeName.json b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableCreativeName.json new file mode 100644 index 000000000..ae9d7f704 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableCreativeName.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_creative", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableInputName.json b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableInputName.json new file mode 100644 index 000000000..8e5da6aee --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableInputName.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_receiver", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableName.json b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableName.json new file mode 100644 index 000000000..f9efacc26 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableName.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableOutputName.json b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableOutputName.json new file mode 100644 index 000000000..de13cf082 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableOutputName.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_emitter", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableSignName.json b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableSignName.json new file mode 100644 index 000000000..74489ae29 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/BlockCableSignName.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_sign", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/BlockMachineManagerName.json b/src/main/resources/assets/stevesfactorymanager/models/item/BlockMachineManagerName.json new file mode 100644 index 000000000..0c21f6479 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/BlockMachineManagerName.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/machine_manager", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/cable_camouflage.json b/src/main/resources/assets/stevesfactorymanager/models/item/cable_camouflage.json new file mode 100644 index 000000000..9b313f7ae --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/cable_camouflage.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_camouflage", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/cable_camouflage_inside.json b/src/main/resources/assets/stevesfactorymanager/models/item/cable_camouflage_inside.json new file mode 100644 index 000000000..735f111d5 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/cable_camouflage_inside.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_camouflage_inside", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/cable_camouflage_transform.json b/src/main/resources/assets/stevesfactorymanager/models/item/cable_camouflage_transform.json new file mode 100644 index 000000000..d965453da --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/cable_camouflage_transform.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_camouflage_transform", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/cable_cluster.json b/src/main/resources/assets/stevesfactorymanager/models/item/cable_cluster.json new file mode 100644 index 000000000..8c6e0eb06 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/cable_cluster.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_cluster", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/cable_cluster_advanced.json b/src/main/resources/assets/stevesfactorymanager/models/item/cable_cluster_advanced.json new file mode 100644 index 000000000..b066cf883 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/cable_cluster_advanced.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_cluster_advanced", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/cable_relay.json b/src/main/resources/assets/stevesfactorymanager/models/item/cable_relay.json new file mode 100644 index 000000000..976584193 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/cable_relay.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_relay", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/cable_relay_advanced.json b/src/main/resources/assets/stevesfactorymanager/models/item/cable_relay_advanced.json new file mode 100644 index 000000000..b22b5b224 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/cable_relay_advanced.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_relay_advanced", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/cable_valve.json b/src/main/resources/assets/stevesfactorymanager/models/item/cable_valve.json new file mode 100644 index 000000000..844a5855b --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/cable_valve.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_valve", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactorymanager/models/item/cable_valve_instant.json b/src/main/resources/assets/stevesfactorymanager/models/item/cable_valve_instant.json new file mode 100644 index 000000000..fb0736db1 --- /dev/null +++ b/src/main/resources/assets/stevesfactorymanager/models/item/cable_valve_instant.json @@ -0,0 +1,10 @@ +{ + "parent": "stevesfactorymanager:block/cable_valve_instant", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_breaker.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_breaker.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_breaker.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_breaker.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_breaker_advanced.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_breaker_advanced.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_breaker_advanced.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_breaker_advanced.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_breaker_direction.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_breaker_direction.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_breaker_direction.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_breaker_direction.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_breaker_front.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_breaker_front.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_breaker_front.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_breaker_front.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_bud.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_bud.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_bud.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_bud.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_camo.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_camo.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_camo.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_camo.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_camo_inside.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_camo_inside.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_camo_inside.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_camo_inside.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_camo_shape.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_camo_shape.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_camo_shape.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_camo_shape.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_cluster.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_cluster.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_cluster.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_cluster.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_cluster_adv.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_cluster_adv.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_cluster_adv.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_cluster_adv.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_cluster_adv_front.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_cluster_adv_front.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_cluster_adv_front.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_cluster_adv_front.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_cluster_front.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_cluster_front.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_cluster_front.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_cluster_front.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_creative.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_creative.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_creative.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_creative.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_idle.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_idle.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_idle.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_idle.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_input.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_input.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_input.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_input.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_intake.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_intake.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_intake.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_intake.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_intake_instant.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_intake_instant.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_intake_instant.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_intake_instant.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_intake_out.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_intake_out.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_intake_out.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_intake_out.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_intake_out_instant.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_intake_out_instant.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_intake_out_instant.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_intake_out_instant.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_output_strong.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_output_strong.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_output_strong.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_output_strong.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_output_weak.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_output_weak.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_output_weak.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_output_weak.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_relay.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_relay.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_relay.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_relay.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_relay_advanced.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_relay_advanced.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_relay_advanced.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_relay_advanced.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/cable_sign.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_sign.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/cable_sign.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/cable_sign.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/manager_bot.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/manager_bot.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/manager_bot.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/manager_bot.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/manager_side.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/manager_side.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/manager_side.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/manager_side.png diff --git a/src/main/resources/assets/stevesfactory/textures/blocks/manager_top.png b/src/main/resources/assets/stevesfactorymanager/textures/blocks/manager_top.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/blocks/manager_top.png rename to src/main/resources/assets/stevesfactorymanager/textures/blocks/manager_top.png diff --git a/src/main/resources/assets/stevesfactory/textures/gui/Background1.png b/src/main/resources/assets/stevesfactorymanager/textures/gui/Background1.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/gui/Background1.png rename to src/main/resources/assets/stevesfactorymanager/textures/gui/Background1.png diff --git a/src/main/resources/assets/stevesfactory/textures/gui/Background2.png b/src/main/resources/assets/stevesfactorymanager/textures/gui/Background2.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/gui/Background2.png rename to src/main/resources/assets/stevesfactorymanager/textures/gui/Background2.png diff --git a/src/main/resources/assets/stevesfactory/textures/gui/FlowComponents.png b/src/main/resources/assets/stevesfactorymanager/textures/gui/FlowComponents.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/gui/FlowComponents.png rename to src/main/resources/assets/stevesfactorymanager/textures/gui/FlowComponents.png diff --git a/src/main/resources/assets/stevesfactory/textures/gui/Relay.png b/src/main/resources/assets/stevesfactorymanager/textures/gui/Relay.png similarity index 100% rename from src/main/resources/assets/stevesfactory/textures/gui/Relay.png rename to src/main/resources/assets/stevesfactorymanager/textures/gui/Relay.png diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 4a8bfb727..169d21356 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -7,7 +7,7 @@ "mcversion": "${mcversion}", "url": "", "updateUrl": "", - "authors": ["Vswe"], + "authorList": ["Vswe"], "credits": "", "logoFile": "", "screenshots": [],