diff --git a/build.gradle b/build.gradle index 6bbc56aff..6c119de8a 100644 --- a/build.gradle +++ b/build.gradle @@ -18,12 +18,12 @@ buildscript { apply plugin: 'forge' apply plugin: 'maven' -version = "1.7.10-0.0.5.3" +version = "1.7.10-0.0.5.4" group = "ellpeck.actuallyadditions" archivesBaseName = "ActuallyAdditions" minecraft { - version = "1.7.10-10.13.3.1395-1710ls" + version = "1.7.10-10.13.3.1428-1.7.10" runDir = "idea" } @@ -39,16 +39,10 @@ repositories { } dependencies { - compile "mcp.mobius.waila:Waila:1.5.6_1.7.10" -} - -task copyChickenBones(type: Copy, dependsOn: "extractUserDev") { - from { configurations.compile } - include "**/*Chicken*.jar", "**/*NotEnoughItems*.jar" - exclude "**/CodeChickenLib*" - into file("./run/mods") - mustRunAfter "deobfBinJar" - mustRunAfter "repackMinecraft" + compile "mcp.mobius.waila:Waila:1.5.10_1.7.10" + compile "codechicken:CodeChickenLib:1.7.10-1.1.1.99:dev" + compile "codechicken:CodeChickenCore:1.7.10-1.0.4.29:dev" + compile "codechicken:NotEnoughItems:1.7.10-1.0.3.74:dev" } processResources{ diff --git a/src/main/java/ellpeck/actuallyadditions/ActuallyAdditions.java b/src/main/java/ellpeck/actuallyadditions/ActuallyAdditions.java index e22cfa268..b8568fb64 100644 --- a/src/main/java/ellpeck/actuallyadditions/ActuallyAdditions.java +++ b/src/main/java/ellpeck/actuallyadditions/ActuallyAdditions.java @@ -39,8 +39,8 @@ public class ActuallyAdditions{ public void preInit(FMLPreInitializationEvent event){ Util.logInfo("Starting PreInitialization Phase..."); - PacketHandler.init(); ConfigurationHandler.init(event.getSuggestedConfigurationFile()); + PacketHandler.init(); InitItemMaterials.init(); InitBlocks.init(); InitItems.init(); diff --git a/src/main/java/ellpeck/actuallyadditions/PLANNED.txt b/src/main/java/ellpeck/actuallyadditions/PLANNED.txt index 2557bf0da..f88cf0aa5 100644 --- a/src/main/java/ellpeck/actuallyadditions/PLANNED.txt +++ b/src/main/java/ellpeck/actuallyadditions/PLANNED.txt @@ -14,7 +14,6 @@ -Attracts/Repulses Mobs -Has an aggressive and a friendly version -Maybe for Items - -Crafted with an Ender Casing -Void Bag -Sucks up picked up Items @@ -83,7 +82,18 @@ -Ring of Water Absorption: Removes Water around -Ring of Striptease (Or something like that): Attacker lose parts of their Armor --Coffee - -Coffee Machine - -Coffee Cup - -Bedrockium Coffee Cup +-Food Cannon + -Shoots Food Items + -Damage varies with Food + +-Furniture + -Can be put into a Crafting Table with a Banner to give it a pattern (1.8!) + -Parts of the furniture can have different types (eg. Wood, Stone etc.) -> Via Crafting or Tool? + +-Tinker's Concrete + -Customizable with Items in Concrete Mixer + -(eg. Redstone->Speed Glowstone->Light etc.) + +-XP Solidifier + -Block that creates Solidified Experience from Player's Levels + -Has a GUI with Buttons diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/BlockCoffeeMachine.java b/src/main/java/ellpeck/actuallyadditions/blocks/BlockCoffeeMachine.java new file mode 100644 index 000000000..6ab49eeef --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/blocks/BlockCoffeeMachine.java @@ -0,0 +1,139 @@ +package ellpeck.actuallyadditions.blocks; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.ActuallyAdditions; +import ellpeck.actuallyadditions.inventory.GuiHandler; +import ellpeck.actuallyadditions.tile.TileEntityCoffeeMachine; +import ellpeck.actuallyadditions.util.BlockUtil; +import ellpeck.actuallyadditions.util.INameableItem; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +import java.util.List; + +public class BlockCoffeeMachine extends BlockContainerBase implements INameableItem{ + + public BlockCoffeeMachine(){ + super(Material.rock); + this.setHarvestLevel("pickaxe", 0); + this.setHardness(1.0F); + this.setStepSound(soundTypeStone); + + float f = 1/16F; + this.setBlockBounds(f, 0F, f, 1F-f, 1F-2*f, 1F-f); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack){ + int rotation = MathHelper.floor_double((double)(player.rotationYaw*4.0F/360.0F)+0.5D) & 3; + + if(rotation == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 0); + if(rotation == 1) world.setBlockMetadataWithNotify(x, y, z, 1, 3); + if(rotation == 2) world.setBlockMetadataWithNotify(x, y, z, 0, 2); + if(rotation == 3) world.setBlockMetadataWithNotify(x, y, z, 3, 3); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int f6, float f7, float f8, float f9){ + if(!world.isRemote){ + TileEntityCoffeeMachine machine = (TileEntityCoffeeMachine)world.getTileEntity(x, y, z); + if (machine != null) player.openGui(ActuallyAdditions.instance, GuiHandler.COFFEE_MACHINE_ID, world, x, y, z); + return true; + } + return true; + } + + @Override + public IIcon getIcon(int side, int metadata){ + return this.blockIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconReg){ + this.blockIcon = Blocks.coal_block.getIcon(0, 0); + } + + @Override + public boolean isOpaqueCube(){ + return false; + } + + @Override + public boolean renderAsNormalBlock(){ + return false; + } + + @Override + public int getRenderType(){ + return RenderingRegistry.getNextAvailableRenderId(); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta){ + return new TileEntityCoffeeMachine(); + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int par6){ + this.dropInventory(world, x, y, z); + super.breakBlock(world, x, y, z, block, par6); + } + + @Override + public String getName(){ + return "blockCoffeeMachine"; + } + + @Override + public String getOredictName(){ + return this.getName(); + } + + public static class TheItemBlock extends ItemBlock{ + + private Block theBlock; + + public TheItemBlock(Block block){ + super(block); + this.theBlock = block; + this.setHasSubtypes(false); + this.setMaxDamage(0); + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return EnumRarity.rare; + } + + @Override + public String getUnlocalizedName(ItemStack stack){ + return this.getUnlocalizedName(); + } + + @Override + @SuppressWarnings("unchecked") + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld) { + BlockUtil.addInformation(theBlock, list, 5, ""); + } + + @Override + public int getMetadata(int damage){ + return damage; + } + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/BlockFurnaceSolar.java b/src/main/java/ellpeck/actuallyadditions/blocks/BlockFurnaceSolar.java index 0c2ae5542..36949cd77 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/BlockFurnaceSolar.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/BlockFurnaceSolar.java @@ -23,10 +23,10 @@ import java.util.List; public class BlockFurnaceSolar extends BlockContainerBase implements INameableItem{ public BlockFurnaceSolar(){ - super(Material.wood); - this.setHarvestLevel("axe", 0); + super(Material.rock); + this.setHarvestLevel("pickaxe", 0); this.setHardness(1.0F); - this.setStepSound(soundTypeWood); + this.setStepSound(soundTypeStone); this.setBlockBounds(0F, 0F, 0F, 1F, 3F/16F, 1F); } diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/BlockMisc.java b/src/main/java/ellpeck/actuallyadditions/blocks/BlockMisc.java index 1bb1a2594..513a52bcc 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/BlockMisc.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/BlockMisc.java @@ -45,7 +45,7 @@ public class BlockMisc extends Block implements INameableItem{ @Override public IIcon getIcon(int side, int metadata){ - return textures[metadata]; + return metadata >= textures.length ? null : textures[metadata]; } @Override @@ -79,12 +79,12 @@ public class BlockMisc extends Block implements INameableItem{ @Override public EnumRarity getRarity(ItemStack stack){ - return allMiscBlocks[stack.getItemDamage()].rarity; + return stack.getItemDamage() >= allMiscBlocks.length ? EnumRarity.common : allMiscBlocks[stack.getItemDamage()].rarity; } @Override public String getUnlocalizedName(ItemStack stack){ - return this.getUnlocalizedName() + allMiscBlocks[stack.getItemDamage()].getName(); + return this.getUnlocalizedName() + (stack.getItemDamage() >= allMiscBlocks.length ? " ERROR!" : allMiscBlocks[stack.getItemDamage()].getName()); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/BlockPhantomBooster.java b/src/main/java/ellpeck/actuallyadditions/blocks/BlockPhantomBooster.java new file mode 100644 index 000000000..268276d99 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/blocks/BlockPhantomBooster.java @@ -0,0 +1,109 @@ +package ellpeck.actuallyadditions.blocks; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.tile.TileEntityPhantomBooster; +import ellpeck.actuallyadditions.util.BlockUtil; +import ellpeck.actuallyadditions.util.INameableItem; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +import java.util.List; + +public class BlockPhantomBooster extends BlockContainerBase implements INameableItem{ + + public BlockPhantomBooster(){ + super(Material.rock); + this.setHarvestLevel("pickaxe", 0); + this.setHardness(1.0F); + this.setStepSound(soundTypeStone); + + float f = 1F/16F; + this.setBlockBounds(3*f, 0F, 3*f, 1-3*f, 1F, 1-3*f); + } + + @Override + public String getOredictName(){ + return this.getName(); + } + + @Override + public boolean isOpaqueCube(){ + return false; + } + + @Override + public boolean renderAsNormalBlock(){ + return false; + } + + @Override + public int getRenderType(){ + return RenderingRegistry.getNextAvailableRenderId(); + } + + @Override + public IIcon getIcon(int side, int metadata){ + return this.blockIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconReg){ + this.blockIcon = Blocks.lapis_block.getIcon(0, 0); + } + + @Override + public String getName(){ + return "blockPhantomBooster"; + } + + @Override + public TileEntity createNewTileEntity(World world, int i){ + return new TileEntityPhantomBooster(); + } + + public static class TheItemBlock extends ItemBlock{ + + private Block theBlock; + + public TheItemBlock(Block block){ + super(block); + this.theBlock = block; + this.setHasSubtypes(false); + this.setMaxDamage(0); + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return EnumRarity.epic; + } + + @Override + public String getUnlocalizedName(ItemStack stack){ + return this.getUnlocalizedName(); + } + + @Override + @SuppressWarnings("unchecked") + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld) { + BlockUtil.addInformation(theBlock, list, 2, ""); + } + + @Override + public int getMetadata(int damage){ + return damage; + } + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/BlockPhantomface.java b/src/main/java/ellpeck/actuallyadditions/blocks/BlockPhantomface.java index 85407eaec..06b5c994f 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/BlockPhantomface.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/BlockPhantomface.java @@ -63,9 +63,10 @@ public class BlockPhantomface extends BlockContainerBase implements INameableIte if(tile != null){ if(tile instanceof TileEntityPhantomface){ TileEntityPhantomface phantom = (TileEntityPhantomface)tile; + player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".blockPhantomRange.desc") + ": " + phantom.range)); if(phantom.hasBoundTile()){ - if(phantom.isBoundTileInRage()) player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocalFormatted("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.connectedBlock.desc", phantom.boundTile.xCoord, phantom.boundTile.yCoord, phantom.boundTile.zCoord))); - else player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocalFormatted("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.connectedNoRange.desc", phantom.boundTile.xCoord, phantom.boundTile.yCoord, phantom.boundTile.zCoord))); + if(phantom.isBoundTileInRage()) player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocalFormatted("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.connectedBlock.desc", phantom.boundPosition.posX, phantom.boundPosition.posY, phantom.boundPosition.posZ))); + else player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocalFormatted("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.connectedNoRange.desc", phantom.boundPosition.posX, phantom.boundPosition.posY, phantom.boundPosition.posZ))); } else player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.notConnected.desc"))); } @@ -73,6 +74,7 @@ public class BlockPhantomface extends BlockContainerBase implements INameableIte else if(tile instanceof TileEntityPhantomPlacer){ if(player.isSneaking()){ TileEntityPhantomPlacer phantom = (TileEntityPhantomPlacer)tile; + player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".blockPhantomRange.desc") + ": " + phantom.range)); if(phantom.hasBoundPosition()){ if(phantom.isBoundPositionInRange()) player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocalFormatted("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.connectedBlock.desc", phantom.boundPosition.posX, phantom.boundPosition.posY, phantom.boundPosition.posZ))); else player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocalFormatted("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.connectedNoRange.desc", phantom.boundPosition.posX, phantom.boundPosition.posY, phantom.boundPosition.posZ))); @@ -159,7 +161,6 @@ public class BlockPhantomface extends BlockContainerBase implements INameableIte if(((BlockPhantomface)this.theBlock).type == LIQUIFACE){ list.add(StringUtil.ORANGE+StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".blockPhantomLiquiface.desc.3")); list.add(StringUtil.ORANGE+StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".blockPhantomLiquiface.desc.4")); - list.add(StringUtil.ORANGE+StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".blockPhantomLiquiface.desc.5")); } list.add(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".blockPhantomRange.desc") + ": " + ((BlockPhantomface)theBlock).range); } diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java b/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java index 599857a19..7b20e5acf 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java @@ -1,12 +1,14 @@ package ellpeck.actuallyadditions.blocks; import ellpeck.actuallyadditions.util.BlockUtil; +import ellpeck.actuallyadditions.util.ModUtil; import ellpeck.actuallyadditions.util.Util; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.item.EnumRarity; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; +import org.apache.logging.log4j.Level; import powercrystals.minefactoryreloaded.api.FactoryRegistry; public class InitBlocks{ @@ -34,6 +36,7 @@ public class InitBlocks{ public static Block blockRice; public static Block blockCanola; public static Block blockFlax; + public static Block blockCoffee; public static Fluid fluidCanolaOil; public static Block blockCanolaOil; @@ -56,6 +59,9 @@ public class InitBlocks{ public static Block blockFluidCollector; public static Block blockLavaFactoryController; + public static Block blockCoffeeMachine; + + public static Block blockPhantomBooster; public static void init(){ Util.logInfo("Initializing Blocks..."); @@ -63,20 +69,6 @@ public class InitBlocks{ blockLavaFactoryController = new BlockLavaFactoryController(); BlockUtil.register(blockLavaFactoryController, BlockLavaFactoryController.TheItemBlock.class); - fluidCanolaOil = new FluidAA("canolaoil").setDensity(1200).setViscosity(1500).setTemperature(300).setRarity(EnumRarity.uncommon); - FluidRegistry.registerFluid(fluidCanolaOil); - fluidCanolaOil = FluidRegistry.getFluid(fluidCanolaOil.getName()); - - blockCanolaOil = new BlockFluidFlowing(fluidCanolaOil, Material.water, "blockCanolaOil"); - BlockUtil.register(blockCanolaOil, BlockFluidFlowing.TheItemBlock.class, false); - - fluidOil = new FluidAA("oil").setDensity(1200).setViscosity(1500).setTemperature(300).setRarity(EnumRarity.uncommon); - FluidRegistry.registerFluid(fluidOil); - fluidOil = FluidRegistry.getFluid(fluidOil.getName()); - - blockOil = new BlockFluidFlowing(fluidOil, Material.water, "blockOil"); - BlockUtil.register(blockOil, BlockFluidFlowing.TheItemBlock.class, false); - blockCanolaPress = new BlockCanolaPress(); BlockUtil.register(blockCanolaPress, BlockCanolaPress.TheItemBlock.class); @@ -115,10 +107,15 @@ public class InitBlocks{ FactoryRegistry.sendMessage("registerFertilizable", blockCanola); blockFlax = new BlockPlant("blockFlax", 6, 2, 4); - BlockUtil.register(blockFlax, BlockPlant.TheItemBlock.class); + BlockUtil.register(blockFlax, BlockPlant.TheItemBlock.class, false); FactoryRegistry.sendMessage("registerHarvestable", blockFlax); FactoryRegistry.sendMessage("registerFertilizable", blockFlax); + blockCoffee = new BlockPlant("blockCoffee", 6, 2, 2); + BlockUtil.register(blockCoffee, BlockPlant.TheItemBlock.class, false); + FactoryRegistry.sendMessage("registerHarvestable", blockCoffee); + FactoryRegistry.sendMessage("registerFertilizable", blockCoffee); + blockCompost = new BlockCompost(); BlockUtil.register(blockCompost, BlockCompost.TheItemBlock.class); @@ -175,5 +172,57 @@ public class InitBlocks{ blockFluidCollector = new BlockFluidCollector(false); BlockUtil.register(blockFluidCollector, BlockFluidCollector.TheItemBlock.class); + + blockCoffeeMachine = new BlockCoffeeMachine(); + BlockUtil.register(blockCoffeeMachine, BlockCoffeeMachine.TheItemBlock.class); + + blockPhantomBooster = new BlockPhantomBooster(); + BlockUtil.register(blockPhantomBooster, BlockPhantomBooster.TheItemBlock.class); + + registerFluids(); + } + + public static void registerFluids(){ + String canolaOil = "canolaoil"; + if(!FluidRegistry.isFluidRegistered(canolaOil)){ + fluidCanolaOil = new FluidAA(canolaOil).setDensity(1200).setViscosity(1500).setTemperature(300).setRarity(EnumRarity.uncommon); + FluidRegistry.registerFluid(fluidCanolaOil); + } + else{ + errorAlreadyRegistered("Canola Oil Fluid"); + } + fluidCanolaOil = FluidRegistry.getFluid(canolaOil); + + if(fluidCanolaOil.getBlock() == null){ + blockCanolaOil = new BlockFluidFlowing(fluidCanolaOil, Material.water, "blockCanolaOil"); + BlockUtil.register(blockCanolaOil, BlockFluidFlowing.TheItemBlock.class, false); + } + else{ + errorAlreadyRegistered("Canola Oil Block"); + } + blockCanolaOil = fluidCanolaOil.getBlock(); + + String oil = "oil"; + if(!FluidRegistry.isFluidRegistered(oil)){ + fluidOil = new FluidAA(oil).setDensity(1200).setViscosity(1500).setTemperature(300).setRarity(EnumRarity.uncommon); + FluidRegistry.registerFluid(fluidOil); + } + else{ + errorAlreadyRegistered("Oil Fluid"); + } + fluidOil = FluidRegistry.getFluid(oil); + + if(fluidOil.getBlock() == null){ + blockOil = new BlockFluidFlowing(fluidOil, Material.water, "blockOil"); + BlockUtil.register(blockOil, BlockFluidFlowing.TheItemBlock.class, false); + } + else{ + errorAlreadyRegistered("Oil Block"); + } + blockOil = fluidOil.getBlock(); + } + + public static void errorAlreadyRegistered(String str){ + ModUtil.LOGGER.log(Level.WARN, str + " from Actually Additions is not getting used as it has already been registered by another Mod! Issues may (but shouldn't) occur!"); } } \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/metalists/TheMiscBlocks.java b/src/main/java/ellpeck/actuallyadditions/blocks/metalists/TheMiscBlocks.java index 1eb1dfa4d..fe6ac9a7a 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/metalists/TheMiscBlocks.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/metalists/TheMiscBlocks.java @@ -13,7 +13,8 @@ public enum TheMiscBlocks implements INameableItem{ STONE_CASING("StoneCasing", EnumRarity.uncommon, "blockCasingStone"), CHARCOAL_BLOCK("Charcoal", EnumRarity.common, "blockCharcoal"), ENDERPEARL_BLOCK("Enderpearl", EnumRarity.rare, "blockEnderpearl"), - LAVA_FACTORY_CASE("LavaFactoryCase", EnumRarity.uncommon, "blockLavaFactoryCase"); + LAVA_FACTORY_CASE("LavaFactoryCase", EnumRarity.uncommon, "blockLavaFactoryCase"), + ENDER_CASING("EnderCasing", EnumRarity.epic, "blockEnderCasing"); public final String name; public final String oredictName; diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelBaseAA.java b/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelBaseAA.java index a8b698739..ead226a1b 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelBaseAA.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelBaseAA.java @@ -1,6 +1,7 @@ package ellpeck.actuallyadditions.blocks.render; import net.minecraft.client.model.ModelBase; +import net.minecraft.tileentity.TileEntity; public class ModelBaseAA extends ModelBase{ @@ -11,4 +12,12 @@ public class ModelBaseAA extends ModelBase{ public String getName(){ return null; } + + public void renderExtra(float f, TileEntity tile){ + + } + + public boolean doesRotate(){ + return false; + } } diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelCoffeeMachine.java b/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelCoffeeMachine.java new file mode 100644 index 000000000..38eb0d2bc --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelCoffeeMachine.java @@ -0,0 +1,137 @@ +package ellpeck.actuallyadditions.blocks.render; + +import net.minecraft.client.model.ModelRenderer; + +public class ModelCoffeeMachine extends ModelBaseAA{ + + ModelRenderer p1; + ModelRenderer p2; + ModelRenderer p3; + ModelRenderer p4; + ModelRenderer p5; + ModelRenderer p6; + ModelRenderer p7; + ModelRenderer p8; + ModelRenderer p9; + ModelRenderer p10; + ModelRenderer p11; + ModelRenderer p12; + ModelRenderer p13; + + public ModelCoffeeMachine(){ + textureWidth = 128; + textureHeight = 128; + + p1 = new ModelRenderer(this, 0, 0); + p1.addBox(0F, 0F, 0F, 10, 1, 14); + p1.setRotationPoint(-5F, 23F, -7F); + p1.setTextureSize(128, 128); + p1.mirror = true; + setRotation(p1, 0F, 0F, 0F); + p2 = new ModelRenderer(this, 49, 0); + p2.addBox(0F, 0F, 0F, 10, 8, 6); + p2.setRotationPoint(-5F, 15F, 1F); + p2.setTextureSize(128, 128); + p2.mirror = true; + setRotation(p2, 0F, 0F, 0F); + p3 = new ModelRenderer(this, 0, 16); + p3.addBox(0F, 0F, 0F, 10, 2, 11); + p3.setRotationPoint(-5F, 13F, -4F); + p3.setTextureSize(128, 128); + p3.mirror = true; + setRotation(p3, 0F, 0F, 0F); + p4 = new ModelRenderer(this, 43, 16); + p4.addBox(0F, 0F, 0F, 8, 3, 8); + p4.setRotationPoint(-4F, 10F, -1F); + p4.setTextureSize(128, 128); + p4.mirror = true; + setRotation(p4, 0F, 0F, 0F); + p5 = new ModelRenderer(this, 0, 30); + p5.addBox(0F, 0F, 0F, 2, 1, 2); + p5.setRotationPoint(-1F, 15F, -3.5F); + p5.setTextureSize(128, 128); + p5.mirror = true; + setRotation(p5, 0F, 0F, 0F); + p6 = new ModelRenderer(this, 82, 0); + p6.addBox(0F, 0F, 0F, 4, 5, 1); + p6.setRotationPoint(-2F, 17F, -1F); + p6.setTextureSize(128, 128); + p6.mirror = true; + setRotation(p6, 0F, 0F, 0F); + p7 = new ModelRenderer(this, 82, 0); + p7.addBox(0F, 0F, 0F, 4, 5, 1); + p7.setRotationPoint(-2F, 17F, -6F); + p7.setTextureSize(128, 128); + p7.mirror = true; + setRotation(p7, 0F, 0F, 0F); + p8 = new ModelRenderer(this, 82, 0); + p8.addBox(0F, 0F, 0F, 4, 5, 1); + p8.setRotationPoint(2F, 17F, -1F); + p8.setTextureSize(128, 128); + p8.mirror = true; + setRotation(p8, 0F, 1.570796F, 0F); + p9 = new ModelRenderer(this, 82, 0); + p9.addBox(0F, 0F, 0F, 4, 5, 1); + p9.setRotationPoint(-3F, 17F, -1F); + p9.setTextureSize(128, 128); + p9.mirror = true; + setRotation(p9, 0F, 1.570796F, 0F); + p10 = new ModelRenderer(this, 93, 0); + p10.addBox(0F, 0F, 0F, 4, 1, 4); + p10.setRotationPoint(-2F, 22F, -5F); + p10.setTextureSize(128, 128); + p10.mirror = true; + setRotation(p10, 0F, 0F, 0F); + p11 = new ModelRenderer(this, 82, 7); + p11.addBox(0F, 0F, 0F, 1, 1, 2); + p11.setRotationPoint(-4F, 18F, -4F); + p11.setTextureSize(128, 128); + p11.mirror = true; + setRotation(p11, 0F, 0F, 0F); + p12 = new ModelRenderer(this, 82, 7); + p12.addBox(0F, 0F, 0F, 1, 1, 2); + p12.setRotationPoint(-4F, 21F, -4F); + p12.setTextureSize(128, 128); + p12.mirror = true; + setRotation(p12, 0F, 0F, 0F); + p13 = new ModelRenderer(this, 89, 7); + p13.addBox(0F, 0F, 0F, 1, 2, 2); + p13.setRotationPoint(-5F, 19F, -4F); + p13.setTextureSize(128, 128); + p13.mirror = true; + setRotation(p13, 0F, 0F, 0F); + } + + @Override + public void render(float f){ + p1.render(f); + p2.render(f); + p3.render(f); + p4.render(f); + p5.render(f); + p6.render(f); + p7.render(f); + p8.render(f); + p9.render(f); + p10.render(f); + p11.render(f); + p12.render(f); + p13.render(f); + } + + private void setRotation(ModelRenderer model, float x, float y, float z){ + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + @Override + public String getName(){ + return "modelCoffeeMachine"; + } + + @Override + public boolean doesRotate(){ + return true; + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelCompost.java b/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelCompost.java index 6dfc64af0..1277e985e 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelCompost.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelCompost.java @@ -2,6 +2,7 @@ package ellpeck.actuallyadditions.blocks.render; import ellpeck.actuallyadditions.tile.TileEntityCompost; import net.minecraft.client.model.ModelRenderer; +import net.minecraft.tileentity.TileEntity; public class ModelCompost extends ModelBaseAA{ @@ -43,15 +44,17 @@ public class ModelCompost extends ModelBaseAA{ this.innerDone.addBox(0.0F, 0.0F, 0.0F, 12, 13, 12, 0.0F); } - public void renderExtra(float f, TileEntityCompost tile){ + @Override + public void renderExtra(float f, TileEntity tile){ + TileEntityCompost tileCompost = (TileEntityCompost)tile; int meta = tile.getWorldObj().getBlockMetadata(tile.xCoord, tile.yCoord, tile.zCoord); - if(meta > 0 && meta <= tile.amountNeededToConvert){ - int heightToDisplay = meta*13/tile.amountNeededToConvert; + if(meta > 0 && meta <= tileCompost.amountNeededToConvert){ + int heightToDisplay = meta*13/tileCompost.amountNeededToConvert; if(heightToDisplay > 13) heightToDisplay = 13; this.innerRawList[heightToDisplay-1].render(f); } - if(meta == tile.amountNeededToConvert+1){ + if(meta == tileCompost.amountNeededToConvert+1){ this.innerDone.render(f); } } diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelPhantomBooster.java b/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelPhantomBooster.java new file mode 100644 index 000000000..5f11ef016 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelPhantomBooster.java @@ -0,0 +1,148 @@ +package ellpeck.actuallyadditions.blocks.render; + +import net.minecraft.client.model.ModelRenderer; + +public class ModelPhantomBooster extends ModelBaseAA{ + + ModelRenderer s1; + ModelRenderer s2; + ModelRenderer s3; + ModelRenderer s4; + ModelRenderer s5; + ModelRenderer s6; + ModelRenderer s7; + ModelRenderer s8; + ModelRenderer s9; + ModelRenderer s10; + ModelRenderer s11; + ModelRenderer s12; + ModelRenderer s13; + ModelRenderer s14; + ModelRenderer s15; + + public ModelPhantomBooster(){ + textureWidth = 128; + textureHeight = 128; + + s1 = new ModelRenderer(this, 0, 0); + s1.addBox(0F, 0F, 0F, 4, 16, 4); + s1.setRotationPoint(-2F, 8F, -2F); + s1.setTextureSize(128, 128); + s1.mirror = true; + setRotation(s1, 0F, 0F, 0F); + s2 = new ModelRenderer(this, 17, 0); + s2.addBox(0F, 0F, 0F, 6, 1, 6); + s2.setRotationPoint(-3F, 9F, -3F); + s2.setTextureSize(128, 128); + s2.mirror = true; + setRotation(s2, 0F, 0F, 0F); + s3 = new ModelRenderer(this, 17, 0); + s3.addBox(0F, 0F, 0F, 6, 1, 6); + s3.setRotationPoint(-3F, 22F, -3F); + s3.setTextureSize(128, 128); + s3.mirror = true; + setRotation(s3, 0F, 0F, 0F); + s4 = new ModelRenderer(this, 17, 8); + s4.addBox(0F, 0F, 0F, 6, 2, 1); + s4.setRotationPoint(-3F, 10F, -4F); + s4.setTextureSize(128, 128); + s4.mirror = true; + setRotation(s4, 0F, 0F, 0F); + s5 = new ModelRenderer(this, 17, 8); + s5.addBox(0F, 0F, 0F, 6, 2, 1); + s5.setRotationPoint(-3F, 10F, 3F); + s5.setTextureSize(128, 128); + s5.mirror = true; + setRotation(s5, 0F, 0F, 0F); + s6 = new ModelRenderer(this, 17, 8); + s6.addBox(0F, 0F, 0F, 6, 2, 1); + s6.setRotationPoint(-4F, 10F, 3F); + s6.setTextureSize(128, 128); + s6.mirror = true; + setRotation(s6, 0F, 1.579523F, 0F); + s7 = new ModelRenderer(this, 17, 8); + s7.addBox(0F, 0F, 0F, 6, 2, 1); + s7.setRotationPoint(3F, 10F, 3F); + s7.setTextureSize(128, 128); + s7.mirror = true; + setRotation(s7, 0F, 1.579523F, 0F); + s8 = new ModelRenderer(this, 17, 12); + s8.addBox(0F, 0F, 0F, 6, 8, 1); + s8.setRotationPoint(-3F, 12F, -5F); + s8.setTextureSize(128, 128); + s8.mirror = true; + setRotation(s8, 0F, 0F, 0F); + s9 = new ModelRenderer(this, 17, 12); + s9.addBox(0F, 0F, 0F, 6, 8, 1); + s9.setRotationPoint(-3F, 12F, 4F); + s9.setTextureSize(128, 128); + s9.mirror = true; + setRotation(s9, 0F, 0F, 0F); + s10 = new ModelRenderer(this, 17, 12); + s10.addBox(0F, 0F, 0F, 6, 8, 1); + s10.setRotationPoint(-5F, 12F, 3F); + s10.setTextureSize(128, 128); + s10.mirror = true; + setRotation(s10, 0F, 1.579523F, 0F); + s11 = new ModelRenderer(this, 17, 12); + s11.addBox(0F, 0F, 0F, 6, 8, 1); + s11.setRotationPoint(4F, 12F, 3F); + s11.setTextureSize(128, 128); + s11.mirror = true; + setRotation(s11, 0F, 1.579523F, 0F); + s12 = new ModelRenderer(this, 17, 8); + s12.addBox(0F, 0F, 0F, 6, 2, 1); + s12.setRotationPoint(-4F, 20F, 3F); + s12.setTextureSize(128, 128); + s12.mirror = true; + setRotation(s12, 0F, 1.579523F, 0F); + s13 = new ModelRenderer(this, 17, 8); + s13.addBox(0F, 0F, 0F, 6, 2, 1); + s13.setRotationPoint(-3F, 20F, 3F); + s13.setTextureSize(128, 128); + s13.mirror = true; + setRotation(s13, 0F, 0F, 0F); + s14 = new ModelRenderer(this, 17, 8); + s14.addBox(0F, 0F, 0F, 6, 2, 1); + s14.setRotationPoint(3F, 20F, 3F); + s14.setTextureSize(128, 128); + s14.mirror = true; + setRotation(s14, 0F, 1.579523F, 0F); + s15 = new ModelRenderer(this, 17, 8); + s15.addBox(0F, 0F, 0F, 6, 2, 1); + s15.setRotationPoint(-3F, 20F, -4F); + s15.setTextureSize(128, 128); + s15.mirror = true; + setRotation(s15, 0F, 0F, 0F); + } + + @Override + public void render(float f){ + s1.render(f); + s2.render(f); + s3.render(f); + s4.render(f); + s5.render(f); + s6.render(f); + s7.render(f); + s8.render(f); + s9.render(f); + s10.render(f); + s11.render(f); + s12.render(f); + s13.render(f); + s14.render(f); + s15.render(f); + } + + @Override + public String getName(){ + return "modelPhantomBooster"; + } + + private void setRotation(ModelRenderer model, float x, float y, float z){ + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/render/RenderTileEntity.java b/src/main/java/ellpeck/actuallyadditions/blocks/render/RenderTileEntity.java index b500f1088..0a86843e9 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/render/RenderTileEntity.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/render/RenderTileEntity.java @@ -1,6 +1,5 @@ package ellpeck.actuallyadditions.blocks.render; -import ellpeck.actuallyadditions.tile.TileEntityCompost; import ellpeck.actuallyadditions.util.ModUtil; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; @@ -9,7 +8,7 @@ import org.lwjgl.opengl.GL11; public class RenderTileEntity extends TileEntitySpecialRenderer{ - ModelBaseAA theModel; + public ModelBaseAA theModel; public RenderTileEntity(ModelBaseAA model){ this.theModel = model; @@ -22,9 +21,16 @@ public class RenderTileEntity extends TileEntitySpecialRenderer{ GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(0.0F, -2.0F, 0.0F); this.bindTexture(new ResourceLocation(ModUtil.MOD_ID_LOWER, "textures/blocks/models/" + this.theModel.getName() + ".png")); - theModel.render(0.0625F); - if(tile instanceof TileEntityCompost && theModel instanceof ModelCompost) ((ModelCompost)theModel).renderExtra(0.0625F, (TileEntityCompost)tile); + if(theModel.doesRotate()){ + int meta = tile.getWorldObj().getBlockMetadata(tile.xCoord, tile.yCoord, tile.zCoord); + if(meta == 0) GL11.glRotatef(180F, 0F, 1F, 0F); + if(meta == 1) GL11.glRotatef(90F, 0F, 1F, 0F); + if(meta == 3) GL11.glRotatef(270F, 0F, 1F, 0F); + } + + theModel.render(0.0625F); + theModel.renderExtra(0.0625F, tile); GL11.glPopMatrix(); } diff --git a/src/main/java/ellpeck/actuallyadditions/config/values/ConfigBoolValues.java b/src/main/java/ellpeck/actuallyadditions/config/values/ConfigBoolValues.java index 0d400efbb..260536f75 100644 --- a/src/main/java/ellpeck/actuallyadditions/config/values/ConfigBoolValues.java +++ b/src/main/java/ellpeck/actuallyadditions/config/values/ConfigBoolValues.java @@ -27,7 +27,8 @@ public enum ConfigBoolValues{ DO_RICE_GEN("Rice Gen", ConfigCategories.WORLD_GEN, true, "If Rice should generate in the World"), DO_CANOLA_GEN("Canola Gen", ConfigCategories.WORLD_GEN, true, "If Canola should generate in the World"), - DO_FLAX_GEN("Flax Gen", ConfigCategories.WORLD_GEN, true, "If Flax should generate in the World"); + DO_FLAX_GEN("Flax Gen", ConfigCategories.WORLD_GEN, true, "If Flax should generate in the World"), + DO_COFFEE_GEN("Coffee Gen", ConfigCategories.WORLD_GEN, true, "If Coffee should generate in the World"); public final String name; public final String category; diff --git a/src/main/java/ellpeck/actuallyadditions/config/values/ConfigCrafting.java b/src/main/java/ellpeck/actuallyadditions/config/values/ConfigCrafting.java index fb0fbcd9b..58449b28f 100644 --- a/src/main/java/ellpeck/actuallyadditions/config/values/ConfigCrafting.java +++ b/src/main/java/ellpeck/actuallyadditions/config/values/ConfigCrafting.java @@ -60,7 +60,6 @@ public enum ConfigCrafting{ RING_WATER_BREATHING("Water Breathing Ring", ConfigCategories.POTION_RING_CRAFTING), RING_INVISIBILITY("Invisibility Ring", ConfigCategories.POTION_RING_CRAFTING), RING_NIGHT_VISION("Night Vision Ring", ConfigCategories.POTION_RING_CRAFTING), - RING_SATURATION("Saturation Ring", ConfigCategories.POTION_RING_CRAFTING, false), DOUGH("Dough", ConfigCategories.ITEMS_CRAFTING), PAPER_CONE("Paper Cone", ConfigCategories.ITEMS_CRAFTING), @@ -87,7 +86,15 @@ public enum ConfigCrafting{ PHANTOM_PLACER("Phantom Placer", ConfigCategories.BLOCKS_CRAFTING), PHANTOM_BREAKER("Phantom Breaker", ConfigCategories.BLOCKS_CRAFTING), LIQUID_PLACER("Liquid Placer", ConfigCategories.BLOCKS_CRAFTING), - LIQUID_BREAKER("Liquid Collector", ConfigCategories.BLOCKS_CRAFTING); + LIQUID_BREAKER("Liquid Collector", ConfigCategories.BLOCKS_CRAFTING), + + CUP("Cup", ConfigCategories.ITEMS_CRAFTING), + PAXELS("Paxels", ConfigCategories.ITEMS_CRAFTING), + + ENDER_CASING("Ender Casing", ConfigCategories.BLOCKS_CRAFTING), + PHANTOM_BOOSTER("Phantom Booster", ConfigCategories.BLOCKS_CRAFTING), + COFFEE_MACHINE("Coffee Machine", ConfigCategories.BLOCKS_CRAFTING), + LAVA_FACTORY("Lava Factory", ConfigCategories.BLOCKS_CRAFTING); public final String name; public final String category; diff --git a/src/main/java/ellpeck/actuallyadditions/config/values/ConfigIntValues.java b/src/main/java/ellpeck/actuallyadditions/config/values/ConfigIntValues.java index fe3b2b4d8..bb671f483 100644 --- a/src/main/java/ellpeck/actuallyadditions/config/values/ConfigIntValues.java +++ b/src/main/java/ellpeck/actuallyadditions/config/values/ConfigIntValues.java @@ -52,7 +52,8 @@ public enum ConfigIntValues{ RICE_AMOUNT("Rice Amount", ConfigCategories.WORLD_GEN, 15, 1, 100, "The Chance of Rice generating"), CANOLA_AMOUNT("Canola Amount", ConfigCategories.WORLD_GEN, 10, 1, 50, "The Chance of Canola generating"), - FLAX_AMOUNT("Flax Amount", ConfigCategories.WORLD_GEN, 5, 1, 50, "The Chance of Flax generating"), + FLAX_AMOUNT("Flax Amount", ConfigCategories.WORLD_GEN, 8, 1, 50, "The Chance of Flax generating"), + COFFEE_AMOUNT("Coffee Amount", ConfigCategories.WORLD_GEN, 4, 1, 50, "The Chance of Coffee generating"), GRINDER_ENERGY_USED("Energy Use: Crusher", ConfigCategories.MACHINE_VALUES, 40, 1, 500, "The Amount of Energy used by the Crusher per Tick"), GRINDER_DOUBLE_ENERGY_USED("Energy Use: Double Crusher", ConfigCategories.MACHINE_VALUES, 60, 1, 500, "The Amount of Energy used by the Double Crusher per Tick"), @@ -79,7 +80,14 @@ public enum ConfigIntValues{ PHANTOM_PLACER_RANGE("Phantom Placer and Breaker: Range", ConfigCategories.MACHINE_VALUES, 3, 1, 100, "The Default Range of the Phantom Placer/Breaker"), LAVA_FACTORY_ENERGY_USED("Lava Factory: Energy Used", ConfigCategories.MACHINE_VALUES, 150000, 10, 3000000, "The amount of Energy used by the Lava Factory per Bucket of Lava produced"), - LAVA_FACTORY_TIME("Lava Factory: Production Time", ConfigCategories.MACHINE_VALUES, 200, 5, 10000, "The amount of time it takes for the Lava Factory to produce one Bucket"); + LAVA_FACTORY_TIME("Lava Factory: Production Time", ConfigCategories.MACHINE_VALUES, 200, 5, 10000, "The amount of time it takes for the Lava Factory to produce one Bucket"), + + COFFEE_MACHINE_ENERGY_USED("Coffee Machine: Energy Used", ConfigCategories.MACHINE_VALUES, 150, 10, 3000, "The amount of Energy used by the Coffee Machine per Tick"), + COFFEE_CACHE_ADDED_PER_ITEM("Coffee Machine: Coffee added per Item", ConfigCategories.MACHINE_VALUES, 1, 1, 300, "The amount of Coffee added by one Coffee Item in the Coffee Machine"), + COFFEE_CACHE_USED_PER_ITEM("Coffee Machine: Coffee used per Item", ConfigCategories.MACHINE_VALUES, 10, 1, 300, "The amount of Coffee used to brew one Coffee in the Coffee Machine"), + COFFEE_MACHINE_TIME_USED("Coffee Machine: Time to Brew", ConfigCategories.MACHINE_VALUES, 500, 10, 10000, "The amount of time the Coffee Machine takes to brew a Coffee"), + + COFFEE_DRINK_AMOUNT("Coffee: Drink Amount", ConfigCategories.OTHER, 4, 1, 100, "How often a Coffee can be drunk from"); public final String name; public final String category; diff --git a/src/main/java/ellpeck/actuallyadditions/crafting/BlockCrafting.java b/src/main/java/ellpeck/actuallyadditions/crafting/BlockCrafting.java index 43bc0c64c..a01f4814d 100644 --- a/src/main/java/ellpeck/actuallyadditions/crafting/BlockCrafting.java +++ b/src/main/java/ellpeck/actuallyadditions/crafting/BlockCrafting.java @@ -39,6 +39,45 @@ public class BlockCrafting{ 'R', "dustRedstone", 'S', "stickWood")); + //Ender Casing + if(ConfigCrafting.ENDER_CASING.isEnabled()) + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.ENDER_CASING.ordinal()), + "WSW", "SRS", "WSW", + 'W', TheMiscBlocks.ENDERPEARL_BLOCK.getOredictName(), + 'R', TheMiscBlocks.QUARTZ.getOredictName(), + 'S', Blocks.obsidian)); + + //Phantom Booster + if(ConfigCrafting.PHANTOM_BOOSTER.isEnabled()) + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(InitBlocks.blockPhantomBooster), + "RDR", "DCD", "RDR", + 'R', "dustRedstone", + 'D', "gemDiamond", + 'C', TheMiscBlocks.ENDER_CASING.getOredictName())); + + //Coffee Machine + if(ConfigCrafting.COFFEE_MACHINE.isEnabled()) + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(InitBlocks.blockCoffeeMachine), + " C ", " S ", "A A", + 'C', ((INameableItem)InitItems.itemCoffeeBean).getOredictName(), + 'S', TheMiscBlocks.STONE_CASING.getOredictName(), + 'A', TheMiscItems.COIL.getOredictName())); + + //Lava Factory + if(ConfigCrafting.LAVA_FACTORY.isEnabled()){ + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(InitBlocks.blockLavaFactoryController), + " C ", "ISI", " L ", + 'C', TheMiscBlocks.STONE_CASING.getOredictName(), + 'S', TheMiscItems.COIL_ADVANCED.getOredictName(), + 'I', "blockIron", + 'L', Items.lava_bucket)); + + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(InitBlocks.blockMisc, 4, TheMiscBlocks.LAVA_FACTORY_CASE.ordinal()), + "ICI", + 'C', TheMiscBlocks.STONE_CASING.getOredictName(), + 'I', "blockIron")); + } + //Canola Press if(ConfigCrafting.CANOLA_PRESS.isEnabled()) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(InitBlocks.blockCanolaPress), @@ -256,7 +295,7 @@ public class BlockCrafting{ GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(InitBlocks.blockGreenhouseGlass), "GSG", "SDS", "GSG", 'G', "blockGlass", - 'D', "gemDiamond", + 'D', Blocks.obsidian, 'S', "treeSapling")); //Placer diff --git a/src/main/java/ellpeck/actuallyadditions/crafting/ItemCrafting.java b/src/main/java/ellpeck/actuallyadditions/crafting/ItemCrafting.java index 5fae3d929..ecbfd8be2 100644 --- a/src/main/java/ellpeck/actuallyadditions/crafting/ItemCrafting.java +++ b/src/main/java/ellpeck/actuallyadditions/crafting/ItemCrafting.java @@ -6,6 +6,7 @@ import ellpeck.actuallyadditions.blocks.metalists.TheMiscBlocks; import ellpeck.actuallyadditions.config.values.ConfigCrafting; import ellpeck.actuallyadditions.items.InitItems; import ellpeck.actuallyadditions.items.metalists.*; +import ellpeck.actuallyadditions.util.INameableItem; import ellpeck.actuallyadditions.util.Util; import net.minecraft.init.Blocks; import net.minecraft.init.Items; @@ -50,6 +51,59 @@ public class ItemCrafting{ 'I', "ingotIron", 'R', "dustRedstone")); + //Cup + if(ConfigCrafting.CUP.isEnabled()) + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.CUP.ordinal()), + "S S", "SCS", "SSS", + 'S', "stone", + 'C', ((INameableItem)InitItems.itemCoffeeBean).getOredictName())); + + //Paxels + if(ConfigCrafting.PAXELS.isEnabled()){ + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.woodenPaxel), + new ItemStack(Items.wooden_axe), + new ItemStack(Items.wooden_pickaxe), + new ItemStack(Items.wooden_shovel), + new ItemStack(Items.wooden_sword), + new ItemStack(Items.wooden_hoe))); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.stonePaxel), + new ItemStack(Items.stone_axe), + new ItemStack(Items.stone_pickaxe), + new ItemStack(Items.stone_shovel), + new ItemStack(Items.stone_sword), + new ItemStack(Items.stone_hoe))); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.ironPaxel), + new ItemStack(Items.iron_axe), + new ItemStack(Items.iron_pickaxe), + new ItemStack(Items.iron_shovel), + new ItemStack(Items.iron_sword), + new ItemStack(Items.iron_hoe))); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.goldPaxel), + new ItemStack(Items.golden_axe), + new ItemStack(Items.golden_pickaxe), + new ItemStack(Items.golden_shovel), + new ItemStack(Items.golden_sword), + new ItemStack(Items.golden_hoe))); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.diamondPaxel), + new ItemStack(Items.diamond_axe), + new ItemStack(Items.diamond_pickaxe), + new ItemStack(Items.diamond_shovel), + new ItemStack(Items.diamond_sword), + new ItemStack(Items.diamond_hoe))); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.emeraldPaxel), + new ItemStack(InitItems.itemAxeEmerald), + new ItemStack(InitItems.itemPickaxeEmerald), + new ItemStack(InitItems.itemSwordEmerald), + new ItemStack(InitItems.itemShovelEmerald), + new ItemStack(InitItems.itemHoeEmerald))); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.obsidianPaxel), + new ItemStack(InitItems.itemAxeObsidian), + new ItemStack(InitItems.itemPickaxeObsidian), + new ItemStack(InitItems.itemSwordObsidian), + new ItemStack(InitItems.itemShovelObsidian), + new ItemStack(InitItems.itemHoeObsidian))); + } + //Resonant Rice if(ConfigCrafting.RESONANT_RICE.isEnabled()) GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.itemResonantRice), @@ -164,8 +218,6 @@ public class ItemCrafting{ if(ConfigCrafting.RING_WATER_BREATHING.isEnabled()) addRingRecipeWithStack(ThePotionRings.WATER_BREATHING.craftingItem, ThePotionRings.WATER_BREATHING.ordinal()); if(ConfigCrafting.RING_INVISIBILITY.isEnabled()) addRingRecipeWithStack(ThePotionRings.INVISIBILITY.craftingItem, ThePotionRings.INVISIBILITY.ordinal()); if(ConfigCrafting.RING_NIGHT_VISION.isEnabled()) addRingRecipeWithStack(ThePotionRings.NIGHT_VISION.craftingItem, ThePotionRings.NIGHT_VISION.ordinal()); - if(ConfigCrafting.RING_SATURATION.isEnabled()) addRingRecipeWithStack(ThePotionRings.SATURATION.craftingItem, ThePotionRings.SATURATION.ordinal()); - } public static void addRingRecipeWithStack(ItemStack mainStack, int meta){ diff --git a/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java b/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java index 7f7d1b70e..d601fa893 100644 --- a/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java +++ b/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java @@ -31,6 +31,8 @@ public class CreativeTab extends CreativeTabs{ this.addBlock(InitBlocks.blockPhantomLiquiface); this.addBlock(InitBlocks.blockPhantomPlacer); this.addBlock(InitBlocks.blockPhantomBreaker); + this.addBlock(InitBlocks.blockPhantomBooster); + this.addBlock(InitBlocks.blockCoffeeMachine); this.addBlock(InitBlocks.blockInputter); this.addBlock(InitBlocks.blockInputterAdvanced); @@ -63,6 +65,8 @@ public class CreativeTab extends CreativeTabs{ this.addItem(InitItems.itemBucketCanolaOil); this.addItem(InitItems.itemBucketOil); + this.addItem(InitItems.itemCoffeeSeed); + this.addItem(InitItems.itemCoffeeBean); this.addItem(InitItems.itemRiceSeed); this.addItem(InitItems.itemCanolaSeed); this.addItem(InitItems.itemFlaxSeed); @@ -70,6 +74,8 @@ public class CreativeTab extends CreativeTabs{ this.addItem(InitItems.itemMisc); this.addItem(InitItems.itemResonantRice); this.addItem(InitItems.itemFertilizer); + + this.addItem(InitItems.itemCoffee); this.addItem(InitItems.itemFoods); this.addItem(InitItems.itemKnife); this.addItem(InitItems.itemCrafterOnAStick); @@ -78,6 +84,14 @@ public class CreativeTab extends CreativeTabs{ this.addItem(InitItems.itemLeafBlower); this.addItem(InitItems.itemLeafBlowerAdvanced); + this.addItem(InitItems.woodenPaxel); + this.addItem(InitItems.stonePaxel); + this.addItem(InitItems.ironPaxel); + this.addItem(InitItems.goldPaxel); + this.addItem(InitItems.diamondPaxel); + this.addItem(InitItems.emeraldPaxel); + this.addItem(InitItems.obsidianPaxel); + this.addItem(InitItems.itemPickaxeEmerald); this.addItem(InitItems.itemSwordEmerald); this.addItem(InitItems.itemAxeEmerald); diff --git a/src/main/java/ellpeck/actuallyadditions/event/BucketFillEvent.java b/src/main/java/ellpeck/actuallyadditions/event/BucketFillEvent.java index 953bed198..791ff6795 100644 --- a/src/main/java/ellpeck/actuallyadditions/event/BucketFillEvent.java +++ b/src/main/java/ellpeck/actuallyadditions/event/BucketFillEvent.java @@ -2,7 +2,6 @@ package ellpeck.actuallyadditions.event; import cpw.mods.fml.common.eventhandler.Event; import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import ellpeck.actuallyadditions.blocks.BlockFluidFlowing; import ellpeck.actuallyadditions.blocks.InitBlocks; import ellpeck.actuallyadditions.items.InitItems; import net.minecraft.block.Block; @@ -14,16 +13,14 @@ public class BucketFillEvent{ @SubscribeEvent public void onBucketFilled(FillBucketEvent event){ Block block = event.world.getBlock(event.target.blockX, event.target.blockY, event.target.blockZ); - - if(block instanceof BlockFluidFlowing){ - if(block == InitBlocks.blockCanolaOil){ - event.world.setBlockToAir(event.target.blockX, event.target.blockY, event.target.blockZ); - event.result = new ItemStack(InitItems.itemBucketCanolaOil); - } - if(block == InitBlocks.blockOil){ - event.world.setBlockToAir(event.target.blockX, event.target.blockY, event.target.blockZ); - event.result = new ItemStack(InitItems.itemBucketOil); - } + if(block == InitBlocks.blockCanolaOil){ + event.world.setBlockToAir(event.target.blockX, event.target.blockY, event.target.blockZ); + event.result = new ItemStack(InitItems.itemBucketCanolaOil); + event.setResult(Event.Result.ALLOW); + } + if(block == InitBlocks.blockOil){ + event.world.setBlockToAir(event.target.blockX, event.target.blockY, event.target.blockZ); + event.result = new ItemStack(InitItems.itemBucketOil); event.setResult(Event.Result.ALLOW); } } diff --git a/src/main/java/ellpeck/actuallyadditions/event/RenderPlayerEventAA.java b/src/main/java/ellpeck/actuallyadditions/event/RenderPlayerEventAA.java index e5d0b7037..644fff2fc 100644 --- a/src/main/java/ellpeck/actuallyadditions/event/RenderPlayerEventAA.java +++ b/src/main/java/ellpeck/actuallyadditions/event/RenderPlayerEventAA.java @@ -15,6 +15,7 @@ public class RenderPlayerEventAA{ private RenderSpecial hoseRender = new RenderSpecial(new ModelTorch()); //private RenderSpecial paktoRender = new RenderSpecial(new ModelStandardBlock("Pakto")); private RenderSpecial glenRender = new RenderSpecial(new ModelStandardBlock("Glenthor")); + private RenderSpecial lordiRender = new RenderSpecial(new ModelStandardBlock("Lordi")); @SubscribeEvent(priority = EventPriority.HIGHEST) public void RenderPlayerEvent(RenderPlayerEvent.Pre event){ @@ -40,6 +41,12 @@ public class RenderPlayerEventAA{ //dqmhose if(event.entityPlayer.getUniqueID().equals(UUID.fromString("cb7b293a-5031-484e-b5be-b4f2f4e92726"))){ hoseRender.render(event.entityPlayer, event.partialRenderTick, 0.5F, 1.3F); + return; + } + + //Lordi + if(event.entityPlayer.getUniqueID().equals(UUID.fromString("990ecf6d-15dd-442c-b91b-323a6420c78e"))){ + lordiRender.render(event.entityPlayer, event.partialRenderTick, 0.3F, 1F); } } } diff --git a/src/main/java/ellpeck/actuallyadditions/event/WorldDecorationEvent.java b/src/main/java/ellpeck/actuallyadditions/event/WorldDecorationEvent.java index 4c3ff7cda..f78511e11 100644 --- a/src/main/java/ellpeck/actuallyadditions/event/WorldDecorationEvent.java +++ b/src/main/java/ellpeck/actuallyadditions/event/WorldDecorationEvent.java @@ -38,6 +38,7 @@ public class WorldDecorationEvent{ this.genPlantNormally(InitBlocks.blockCanola, ConfigIntValues.CANOLA_AMOUNT.getValue(), ConfigBoolValues.DO_CANOLA_GEN.isEnabled(), Material.grass, event); this.genPlantNormally(InitBlocks.blockFlax, ConfigIntValues.FLAX_AMOUNT.getValue(), ConfigBoolValues.DO_FLAX_GEN.isEnabled(), Material.grass, event); + this.genPlantNormally(InitBlocks.blockCoffee, ConfigIntValues.COFFEE_AMOUNT.getValue(), ConfigBoolValues.DO_COFFEE_GEN.isEnabled(), Material.grass, event); } public void genPlantNormally(Block plant, int amount, boolean doIt, Material blockBelow, DecorateBiomeEvent event){ diff --git a/src/main/java/ellpeck/actuallyadditions/gadget/RenderSpecial.java b/src/main/java/ellpeck/actuallyadditions/gadget/RenderSpecial.java index d2ca7e8ec..861358e1b 100644 --- a/src/main/java/ellpeck/actuallyadditions/gadget/RenderSpecial.java +++ b/src/main/java/ellpeck/actuallyadditions/gadget/RenderSpecial.java @@ -42,7 +42,7 @@ public class RenderSpecial{ GL11.glRotatef(180F, 1.0F, 0.0F, 1.0F); GL11.glScalef(size, size, size); - if(!(time-(bobHeight/2) < lastTimeForBobbing)){ + if(time-(bobHeight/2) >= lastTimeForBobbing){ GL11.glTranslated(0, ((double)time-this.lastTimeForBobbing)/100, 0); } else{ diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/ContainerCoffeeMachine.java b/src/main/java/ellpeck/actuallyadditions/inventory/ContainerCoffeeMachine.java new file mode 100644 index 000000000..3fb6596b1 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/inventory/ContainerCoffeeMachine.java @@ -0,0 +1,138 @@ +package ellpeck.actuallyadditions.inventory; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.slot.SlotOutput; +import ellpeck.actuallyadditions.items.InitItems; +import ellpeck.actuallyadditions.items.metalists.TheMiscItems; +import ellpeck.actuallyadditions.tile.TileEntityBase; +import ellpeck.actuallyadditions.tile.TileEntityCoffeeMachine; +import invtweaks.api.container.InventoryContainer; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ICrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +@InventoryContainer +public class ContainerCoffeeMachine extends Container{ + + private TileEntityCoffeeMachine machine; + + private int lastCoffeeAmount; + private int lastEnergyAmount; + private int lastBrewTime; + + public ContainerCoffeeMachine(InventoryPlayer inventory, TileEntityBase tile){ + this.machine = (TileEntityCoffeeMachine)tile; + + this.addSlotToContainer(new Slot(machine, TileEntityCoffeeMachine.SLOT_COFFEE_BEANS, 37, 6)); + this.addSlotToContainer(new Slot(machine, TileEntityCoffeeMachine.SLOT_INPUT, 80, 42)); + this.addSlotToContainer(new SlotOutput(machine, TileEntityCoffeeMachine.SLOT_OUTPUT, 80, 73)); + + for (int i = 0; i < 4; i++){ + for (int j = 0; j < 2; j++){ + this.addSlotToContainer(new Slot(machine, j+i*2+3, 125+j*18, 6+i*18){ + @Override + public int getSlotStackLimit(){ + return 1; + } + + }); + } + } + + for (int i = 0; i < 3; i++){ + for (int j = 0; j < 9; j++){ + this.addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 97 + i * 18)); + } + } + for (int i = 0; i < 9; i++){ + this.addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 155)); + } + } + + @Override + public void addCraftingToCrafters(ICrafting iCraft){ + super.addCraftingToCrafters(iCraft); + iCraft.sendProgressBarUpdate(this, 0, this.machine.storage.getEnergyStored()); + iCraft.sendProgressBarUpdate(this, 1, this.machine.coffeeCacheAmount); + iCraft.sendProgressBarUpdate(this, 2, this.machine.brewTime); + + } + + @Override + public void detectAndSendChanges(){ + super.detectAndSendChanges(); + for(Object crafter : this.crafters){ + ICrafting iCraft = (ICrafting)crafter; + + if(this.lastEnergyAmount != this.machine.storage.getEnergyStored()) iCraft.sendProgressBarUpdate(this, 0, this.machine.storage.getEnergyStored()); + if(this.lastCoffeeAmount != this.machine.coffeeCacheAmount) iCraft.sendProgressBarUpdate(this, 1, this.machine.coffeeCacheAmount); + if(this.lastBrewTime != this.machine.brewTime) iCraft.sendProgressBarUpdate(this, 2, this.machine.brewTime); + } + + this.lastEnergyAmount = this.machine.storage.getEnergyStored(); + this.lastCoffeeAmount = this.machine.coffeeCacheAmount; + this.lastBrewTime = this.machine.brewTime; + } + + @Override + @SideOnly(Side.CLIENT) + public void updateProgressBar(int par1, int par2){ + if(par1 == 0) this.machine.storage.setEnergyStored(par2); + if(par1 == 1) this.machine.coffeeCacheAmount = par2; + if(par1 == 2) this.machine.brewTime = par2; + } + + @Override + public boolean canInteractWith(EntityPlayer player){ + return this.machine.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slot){ + final int inventoryStart = 11; + final int inventoryEnd = inventoryStart+26; + final int hotbarStart = inventoryEnd+1; + final int hotbarEnd = hotbarStart+8; + + Slot theSlot = (Slot)this.inventorySlots.get(slot); + if(theSlot.getHasStack()){ + ItemStack currentStack = theSlot.getStack(); + ItemStack newStack = currentStack.copy(); + + if(currentStack.getItem() != null){ + if(slot <= hotbarEnd && slot >= inventoryStart){ + if(currentStack.getItem() == InitItems.itemCoffeeBean){ + this.mergeItemStack(newStack, TileEntityCoffeeMachine.SLOT_COFFEE_BEANS, TileEntityCoffeeMachine.SLOT_COFFEE_BEANS+1, false); + } + if(currentStack.getItem() == InitItems.itemMisc && currentStack.getItemDamage() == TheMiscItems.CUP.ordinal()){ + this.mergeItemStack(newStack, TileEntityCoffeeMachine.SLOT_INPUT, TileEntityCoffeeMachine.SLOT_INPUT+1, false); + } + } + + if(slot <= hotbarEnd && slot >= hotbarStart){ + this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false); + } + + else if(slot <= inventoryEnd && slot >= inventoryStart){ + this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false); + } + + else if(slot < inventoryStart){ + this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false); + } + + if(newStack.stackSize == 0) theSlot.putStack(null); + else theSlot.onSlotChanged(); + if(newStack.stackSize == currentStack.stackSize) return null; + theSlot.onPickupFromSlot(player, newStack); + + return currentStack; + } + } + return null; + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/ContainerInputter.java b/src/main/java/ellpeck/actuallyadditions/inventory/ContainerInputter.java index b11a6ebc0..8b20a09f0 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/ContainerInputter.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/ContainerInputter.java @@ -2,6 +2,7 @@ package ellpeck.actuallyadditions.inventory; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.gui.GuiInputter; import ellpeck.actuallyadditions.inventory.slot.SlotFilter; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityInputter; @@ -24,6 +25,8 @@ public class ContainerInputter extends Container{ private int lastSlotToPull; private int lastPlaceToPutSlotAmount; private int lastPlaceToPullSlotAmount; + private int lastIsPullWhitelist; + private int lastIsPutWhitelist; private boolean isAdvanced; @@ -35,22 +38,21 @@ public class ContainerInputter extends Container{ if(isAdvanced){ for(int i = 0; i < 2; i++){ - this.addSlotToContainer(new SlotFilter(this.tileInputter, 1+i*6, 20+i*84, 6)); - this.addSlotToContainer(new SlotFilter(this.tileInputter, 2+i*6, 38+i*84, 6)); - this.addSlotToContainer(new SlotFilter(this.tileInputter, 3+i*6, 56+i*84, 6)); - this.addSlotToContainer(new SlotFilter(this.tileInputter, 4+i*6, 20+i*84, 24)); - this.addSlotToContainer(new SlotFilter(this.tileInputter, 5+i*6, 38+i*84, 24)); - this.addSlotToContainer(new SlotFilter(this.tileInputter, 6+i*6, 56+i*84, 24)); + for(int x = 0; x < 3; x++){ + for(int y = 0;y < 4; y++){ + this.addSlotToContainer(new SlotFilter(this.tileInputter, 1+y+x*4+i*12, 20+i*84+x*18, 6+y*18)); + } + } } } for(int i = 0; i < 3; i++){ for (int j = 0; j < 9; j++){ - this.addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 97 + i * 18 + (isAdvanced ? 12 : 0))); + this.addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 97 + i * 18 + (isAdvanced ? 12+GuiInputter.OFFSET_ADVANCED : 0))); } } for(int i = 0; i < 9; i++){ - this.addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 155 + (isAdvanced ? 12 : 0))); + this.addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 155 + (isAdvanced ? 12+GuiInputter.OFFSET_ADVANCED : 0))); } } @@ -63,6 +65,8 @@ public class ContainerInputter extends Container{ iCraft.sendProgressBarUpdate(this, 3, this.tileInputter.slotToPull); iCraft.sendProgressBarUpdate(this, 4, this.tileInputter.placeToPullSlotAmount); iCraft.sendProgressBarUpdate(this, 5, this.tileInputter.placeToPutSlotAmount); + iCraft.sendProgressBarUpdate(this, 6, this.tileInputter.isPullWhitelist ? 1 : 0); + iCraft.sendProgressBarUpdate(this, 7, this.tileInputter.isPutWhitelist ? 1 : 0); } @Override @@ -76,13 +80,18 @@ public class ContainerInputter extends Container{ if(this.lastSlotToPull != this.tileInputter.slotToPull) iCraft.sendProgressBarUpdate(this, 3, this.tileInputter.slotToPull); if(this.lastPlaceToPullSlotAmount != this.tileInputter.placeToPullSlotAmount) iCraft.sendProgressBarUpdate(this, 4, this.tileInputter.placeToPullSlotAmount); if(this.lastPlaceToPutSlotAmount != this.tileInputter.placeToPutSlotAmount) iCraft.sendProgressBarUpdate(this, 5, this.tileInputter.placeToPutSlotAmount); + if(this.lastIsPullWhitelist != (this.tileInputter.isPullWhitelist ? 1 : 0)) iCraft.sendProgressBarUpdate(this, 6, this.tileInputter.isPullWhitelist ? 1 : 0); + if(this.lastIsPutWhitelist != (this.tileInputter.isPutWhitelist ? 1 : 0)) iCraft.sendProgressBarUpdate(this, 7, this.tileInputter.isPutWhitelist ? 1 : 0); } + this.lastSideToPut = this.tileInputter.sideToPut; this.lastSlotToPut = this.tileInputter.slotToPut; this.lastSideToPull = this.tileInputter.sideToPull; this.lastSlotToPull = this.tileInputter.slotToPull; this.lastPlaceToPullSlotAmount = this.tileInputter.placeToPullSlotAmount; this.lastPlaceToPutSlotAmount = this.tileInputter.placeToPutSlotAmount; + this.lastIsPutWhitelist = this.tileInputter.isPutWhitelist ? 1 : 0; + this.lastIsPullWhitelist = this.tileInputter.isPullWhitelist ? 1 : 0; } @@ -95,6 +104,8 @@ public class ContainerInputter extends Container{ if(par1 == 3) this.tileInputter.slotToPull = par2; if(par1 == 4) this.tileInputter.placeToPullSlotAmount = par2; if(par1 == 5) this.tileInputter.placeToPutSlotAmount = par2; + if(par1 == 6) this.tileInputter.isPullWhitelist = par2 == 1; + if(par1 == 7) this.tileInputter.isPutWhitelist = par2 == 1; } @Override @@ -104,7 +115,7 @@ public class ContainerInputter extends Container{ @Override public ItemStack transferStackInSlot(EntityPlayer player, int slot){ - final int inventoryStart = this.isAdvanced ? 13 : 1; + final int inventoryStart = this.isAdvanced ? 25 : 1; final int inventoryEnd = inventoryStart+26; final int hotbarStart = inventoryEnd+1; final int hotbarEnd = hotbarStart+8; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiHandler.java b/src/main/java/ellpeck/actuallyadditions/inventory/GuiHandler.java index a78570fcf..61ce9c16c 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiHandler.java @@ -3,8 +3,8 @@ package ellpeck.actuallyadditions.inventory; import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.network.NetworkRegistry; import ellpeck.actuallyadditions.ActuallyAdditions; +import ellpeck.actuallyadditions.inventory.gui.*; import ellpeck.actuallyadditions.tile.TileEntityBase; -import ellpeck.actuallyadditions.tile.TileEntityGrinder; import ellpeck.actuallyadditions.util.Util; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; @@ -13,57 +13,47 @@ public class GuiHandler implements IGuiHandler{ @Override public Object getServerGuiElement(int id, EntityPlayer entityPlayer, World world, int x, int y, int z){ + TileEntityBase tile = null; + if(id != CRAFTER_ID){ + tile = (TileEntityBase)world.getTileEntity(x, y, z); + } switch(id){ case FEEDER_ID: - TileEntityBase tileFeeder = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerFeeder(entityPlayer.inventory, tileFeeder); + return new ContainerFeeder(entityPlayer.inventory, tile); case GIANT_CHEST_ID: - TileEntityBase tileChest = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerGiantChest(entityPlayer.inventory, tileChest); + return new ContainerGiantChest(entityPlayer.inventory, tile); case CRAFTER_ID: return new ContainerCrafter(entityPlayer); case GRINDER_ID: - TileEntityBase tileGrinder = (TileEntityGrinder)world.getTileEntity(x, y, z); - return new ContainerGrinder(entityPlayer.inventory, tileGrinder, false); + return new ContainerGrinder(entityPlayer.inventory, tile, false); case GRINDER_DOUBLE_ID: - TileEntityBase tileGrinderDouble = (TileEntityGrinder)world.getTileEntity(x, y, z); - return new ContainerGrinder(entityPlayer.inventory, tileGrinderDouble, true); + return new ContainerGrinder(entityPlayer.inventory, tile, true); case FURNACE_DOUBLE_ID: - TileEntityBase tileFurnace = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerFurnaceDouble(entityPlayer.inventory, tileFurnace); + return new ContainerFurnaceDouble(entityPlayer.inventory, tile); case INPUTTER_ID: - TileEntityBase tileInputter = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerInputter(entityPlayer.inventory, tileInputter, false); + return new ContainerInputter(entityPlayer.inventory, tile, false); case INPUTTER_ADVANCED_ID: - TileEntityBase tileInputterAdvanced = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerInputter(entityPlayer.inventory, tileInputterAdvanced, true); + return new ContainerInputter(entityPlayer.inventory, tile, true); case REPAIRER_ID: - TileEntityBase tileRepairer = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerRepairer(entityPlayer.inventory, tileRepairer); + return new ContainerRepairer(entityPlayer.inventory, tile); case BREAKER_ID: - TileEntityBase tileBreaker = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerBreaker(entityPlayer.inventory, tileBreaker); + return new ContainerBreaker(entityPlayer.inventory, tile); case DROPPER_ID: - TileEntityBase tileDropper = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerDropper(entityPlayer.inventory, tileDropper); + return new ContainerDropper(entityPlayer.inventory, tile); case CANOLA_PRESS_ID: - TileEntityBase tilePress = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerCanolaPress(entityPlayer.inventory, tilePress); + return new ContainerCanolaPress(entityPlayer.inventory, tile); case FERMENTING_BARREL_ID: - TileEntityBase tileBarrel = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerFermentingBarrel(entityPlayer.inventory, tileBarrel); + return new ContainerFermentingBarrel(entityPlayer.inventory, tile); case COAL_GENERATOR_ID: - TileEntityBase tileGenerator = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerCoalGenerator(entityPlayer.inventory, tileGenerator); + return new ContainerCoalGenerator(entityPlayer.inventory, tile); case OIL_GENERATOR_ID: - TileEntityBase tileOilGen = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerOilGenerator(entityPlayer.inventory, tileOilGen); + return new ContainerOilGenerator(entityPlayer.inventory, tile); case PHANTOM_PLACER_ID: - TileEntityBase tilePlacer = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerPhantomPlacer(entityPlayer.inventory, tilePlacer); + return new ContainerPhantomPlacer(entityPlayer.inventory, tile); case FLUID_COLLECTOR_ID: - TileEntityBase tileCollector = (TileEntityBase)world.getTileEntity(x, y, z); - return new ContainerFluidCollector(entityPlayer.inventory, tileCollector); + return new ContainerFluidCollector(entityPlayer.inventory, tile); + case COFFEE_MACHINE_ID: + return new ContainerCoffeeMachine(entityPlayer.inventory, tile); default: return null; } @@ -71,57 +61,47 @@ public class GuiHandler implements IGuiHandler{ @Override public Object getClientGuiElement(int id, EntityPlayer entityPlayer, World world, int x, int y, int z){ + TileEntityBase tile = null; + if(id != CRAFTER_ID){ + tile = (TileEntityBase)world.getTileEntity(x, y, z); + } switch(id){ case FEEDER_ID: - TileEntityBase tileFeeder = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiFeeder(entityPlayer.inventory, tileFeeder); + return new GuiFeeder(entityPlayer.inventory, tile); case GIANT_CHEST_ID: - TileEntityBase tileChest = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiGiantChest(entityPlayer.inventory, tileChest); + return new GuiGiantChest(entityPlayer.inventory, tile); case CRAFTER_ID: return new GuiCrafter(entityPlayer); case GRINDER_ID: - TileEntityBase tileGrinder = (TileEntityGrinder)world.getTileEntity(x, y, z); - return new GuiGrinder(entityPlayer.inventory, tileGrinder, false); + return new GuiGrinder(entityPlayer.inventory, tile, false); case GRINDER_DOUBLE_ID: - TileEntityBase tileGrinderDouble = (TileEntityGrinder)world.getTileEntity(x, y, z); - return new GuiGrinder(entityPlayer.inventory, tileGrinderDouble, true); + return new GuiGrinder(entityPlayer.inventory, tile, true); case FURNACE_DOUBLE_ID: - TileEntityBase tileFurnace = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiFurnaceDouble(entityPlayer.inventory, tileFurnace); + return new GuiFurnaceDouble(entityPlayer.inventory, tile); case INPUTTER_ID: - TileEntityBase tileInputter = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiInputter(entityPlayer.inventory, tileInputter, x, y, z, world, false); + return new GuiInputter(entityPlayer.inventory, tile, x, y, z, world, false); case INPUTTER_ADVANCED_ID: - TileEntityBase tileInputterAdvanced = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiInputter(entityPlayer.inventory, tileInputterAdvanced, x, y, z, world, true); + return new GuiInputter(entityPlayer.inventory, tile, x, y, z, world, true); case REPAIRER_ID: - TileEntityBase tileRepairer = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiRepairer(entityPlayer.inventory, tileRepairer); + return new GuiRepairer(entityPlayer.inventory, tile); case BREAKER_ID: - TileEntityBase tileBreaker = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiBreaker(entityPlayer.inventory, tileBreaker); + return new GuiBreaker(entityPlayer.inventory, tile); case DROPPER_ID: - TileEntityBase tileDropper = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiDropper(entityPlayer.inventory, tileDropper); + return new GuiDropper(entityPlayer.inventory, tile); case CANOLA_PRESS_ID: - TileEntityBase tilePress = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiCanolaPress(entityPlayer.inventory, tilePress); + return new GuiCanolaPress(entityPlayer.inventory, tile); case FERMENTING_BARREL_ID: - TileEntityBase tileBarrel = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiFermentingBarrel(entityPlayer.inventory, tileBarrel); + return new GuiFermentingBarrel(entityPlayer.inventory, tile); case COAL_GENERATOR_ID: - TileEntityBase tileGenerator = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiCoalGenerator(entityPlayer.inventory, tileGenerator); + return new GuiCoalGenerator(entityPlayer.inventory, tile); case OIL_GENERATOR_ID: - TileEntityBase tileOilGen = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiOilGenerator(entityPlayer.inventory, tileOilGen); + return new GuiOilGenerator(entityPlayer.inventory, tile); case PHANTOM_PLACER_ID: - TileEntityBase tilePlacer = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiPhantomPlacer(entityPlayer.inventory, tilePlacer); + return new GuiPhantomPlacer(entityPlayer.inventory, tile); case FLUID_COLLECTOR_ID: - TileEntityBase tileCollector = (TileEntityBase)world.getTileEntity(x, y, z); - return new GuiFluidCollector(entityPlayer.inventory, tileCollector); + return new GuiFluidCollector(entityPlayer.inventory, tile); + case COFFEE_MACHINE_ID: + return new GuiCoffeeMachine(entityPlayer.inventory, tile, x, y, z, world); default: return null; } @@ -144,6 +124,7 @@ public class GuiHandler implements IGuiHandler{ public static final int OIL_GENERATOR_ID = 14; public static final int PHANTOM_PLACER_ID = 15; public static final int FLUID_COLLECTOR_ID = 16; + public static final int COFFEE_MACHINE_ID = 17; public static void init(){ Util.logInfo("Initializing GuiHandler..."); diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiBreaker.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiBreaker.java similarity index 93% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiBreaker.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiBreaker.java index 0fc2dfa5a..7f6fdad35 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiBreaker.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiBreaker.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerBreaker; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityBreaker; import ellpeck.actuallyadditions.util.AssetUtil; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiCanolaPress.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiCanolaPress.java similarity index 96% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiCanolaPress.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiCanolaPress.java index 5134b91a5..bc5a498d3 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiCanolaPress.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiCanolaPress.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerCanolaPress; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityCanolaPress; import ellpeck.actuallyadditions.util.AssetUtil; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiCoalGenerator.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiCoalGenerator.java similarity index 95% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiCoalGenerator.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiCoalGenerator.java index 17ac5d93d..17e60df8b 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiCoalGenerator.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiCoalGenerator.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerCoalGenerator; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityCoalGenerator; import ellpeck.actuallyadditions.util.AssetUtil; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiCoffeeMachine.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiCoffeeMachine.java new file mode 100644 index 000000000..be2fc918f --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiCoffeeMachine.java @@ -0,0 +1,109 @@ +package ellpeck.actuallyadditions.inventory.gui; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerCoffeeMachine; +import ellpeck.actuallyadditions.network.PacketHandler; +import ellpeck.actuallyadditions.network.gui.PacketGuiButton; +import ellpeck.actuallyadditions.tile.TileEntityBase; +import ellpeck.actuallyadditions.tile.TileEntityCoffeeMachine; +import ellpeck.actuallyadditions.util.AssetUtil; +import ellpeck.actuallyadditions.util.ModUtil; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import org.lwjgl.opengl.GL11; + +import java.util.Collections; + +@SideOnly(Side.CLIENT) +public class GuiCoffeeMachine extends GuiContainer{ + + private TileEntityCoffeeMachine machine; + + private static final ResourceLocation resLoc = AssetUtil.getGuiLocation("guiCoffeeMachine"); + + private int x; + private int y; + private int z; + private World world; + + public GuiCoffeeMachine(InventoryPlayer inventory, TileEntityBase tile, int x, int y, int z, World world){ + super(new ContainerCoffeeMachine(inventory, tile)); + this.machine = (TileEntityCoffeeMachine)tile; + this.xSize = 176; + this.ySize = 93+86; + this.x = x; + this.y = y; + this.z = z; + this.world = world; + } + + @SuppressWarnings("unchecked") + @Override + public void initGui(){ + super.initGui(); + + GuiButton buttonOkay = new GuiButton(0, guiLeft+60, guiTop+11, 58, 20, "OK"); + this.buttonList.add(buttonOkay); + } + + @Override + public void actionPerformed(GuiButton button){ + PacketHandler.theNetwork.sendToServer(new PacketGuiButton(x, y, z, world, button.id, Minecraft.getMinecraft().thePlayer)); + } + + @Override + public void drawGuiContainerForegroundLayer(int x, int y){ + AssetUtil.displayNameString(this.fontRendererObj, xSize, -10, this.machine.getInventoryName()); + } + + @Override + public void drawGuiContainerBackgroundLayer(float f, int x, int y){ + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + this.mc.getTextureManager().bindTexture(AssetUtil.GUI_INVENTORY_LOCATION); + this.drawTexturedModalRect(this.guiLeft, this.guiTop+93, 0, 0, 176, 86); + + this.mc.getTextureManager().bindTexture(resLoc); + this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, 176, 93); + + if(this.machine.getEnergyStored(ForgeDirection.UNKNOWN) > 0){ + int i = this.machine.getEnergyScaled(83); + drawTexturedModalRect(this.guiLeft+17, this.guiTop+89-i, 176, 0, 16, i); + } + + if(this.machine.coffeeCacheAmount > 0){ + int i = this.machine.getCoffeeScaled(30); + drawTexturedModalRect(this.guiLeft+41, this.guiTop+56-i, 192, 0, 8, i); + } + + if(this.machine.brewTime > 0){ + int i = this.machine.getBrewScaled(23); + drawTexturedModalRect(this.guiLeft+53, this.guiTop+42, 192, 30, i, 16); + + int j = this.machine.getBrewScaled(26); + drawTexturedModalRect(this.guiLeft+99+25-j, this.guiTop+44, 192+25-j, 46, j, 12); + } + } + + @Override + public void drawScreen(int x, int y, float f){ + super.drawScreen(x, y, f); + + String text1 = this.machine.getEnergyStored(ForgeDirection.UNKNOWN) + "/" + this.machine.getMaxEnergyStored(ForgeDirection.UNKNOWN) + " RF"; + if(x >= guiLeft+16 && y >= guiTop+5 && x <= guiLeft+33 && y <= guiTop+89){ + this.func_146283_a(Collections.singletonList(text1), x, y); + } + + String text2 = this.machine.coffeeCacheAmount + "/" + this.machine.coffeeCacheMaxAmount+" "+StatCollector.translateToLocal("info."+ModUtil.MOD_ID_LOWER+".gui.coffee"); + if(x >= guiLeft+40 && y >= guiTop+25 && x <= guiLeft+49 && y <= guiTop+56){ + this.func_146283_a(Collections.singletonList(text2), x, y); + } + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiCrafter.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiCrafter.java similarity index 91% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiCrafter.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiCrafter.java index f8a21ba64..7df2aaf70 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiCrafter.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiCrafter.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerCrafter; import ellpeck.actuallyadditions.util.AssetUtil; import ellpeck.actuallyadditions.util.ModUtil; import net.minecraft.client.gui.inventory.GuiContainer; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiDropper.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiDropper.java similarity index 93% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiDropper.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiDropper.java index 1a79f8281..877fb0333 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiDropper.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiDropper.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerDropper; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityDropper; import ellpeck.actuallyadditions.util.AssetUtil; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFeeder.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiFeeder.java similarity index 96% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiFeeder.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiFeeder.java index 74537ae62..aee9220ef 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFeeder.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiFeeder.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerFeeder; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityFeeder; import ellpeck.actuallyadditions.util.AssetUtil; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFermentingBarrel.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiFermentingBarrel.java similarity index 96% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiFermentingBarrel.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiFermentingBarrel.java index 919fcb97d..90a0649e0 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFermentingBarrel.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiFermentingBarrel.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerFermentingBarrel; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityFermentingBarrel; import ellpeck.actuallyadditions.util.AssetUtil; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFluidCollector.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiFluidCollector.java similarity index 95% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiFluidCollector.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiFluidCollector.java index d308d6dbc..e319b43ad 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFluidCollector.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiFluidCollector.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerFluidCollector; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityFluidCollector; import ellpeck.actuallyadditions.util.AssetUtil; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFurnaceDouble.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiFurnaceDouble.java similarity index 95% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiFurnaceDouble.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiFurnaceDouble.java index acb2fafee..96637d3f7 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFurnaceDouble.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiFurnaceDouble.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerFurnaceDouble; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityFurnaceDouble; import ellpeck.actuallyadditions.util.AssetUtil; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiGiantChest.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiGiantChest.java similarity index 92% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiGiantChest.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiGiantChest.java index e030b9d03..d163f9f19 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiGiantChest.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiGiantChest.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerGiantChest; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityGiantChest; import ellpeck.actuallyadditions.util.AssetUtil; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiGrinder.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiGrinder.java similarity index 96% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiGrinder.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiGrinder.java index 4bd6eb59c..bcbe38416 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiGrinder.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiGrinder.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerGrinder; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityGrinder; import ellpeck.actuallyadditions.util.AssetUtil; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiInputter.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiInputter.java similarity index 64% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiInputter.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiInputter.java index 22b5c166c..ad2fb619d 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiInputter.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiInputter.java @@ -1,13 +1,15 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerInputter; import ellpeck.actuallyadditions.network.PacketHandler; -import ellpeck.actuallyadditions.network.PacketInputterButton; +import ellpeck.actuallyadditions.network.gui.PacketGuiButton; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityInputter; import ellpeck.actuallyadditions.util.AssetUtil; import ellpeck.actuallyadditions.util.ModUtil; +import ellpeck.actuallyadditions.util.StringUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiButton; @@ -19,6 +21,8 @@ import net.minecraft.util.StatCollector; import net.minecraft.world.World; import org.lwjgl.opengl.GL11; +import java.util.Collections; + @SideOnly(Side.CLIENT) public class GuiInputter extends GuiContainer{ @@ -37,8 +41,13 @@ public class GuiInputter extends GuiContainer{ private SmallerButton buttonSlotPutM; private SmallerButton buttonSlotPullM; + private SmallerButton whitelistPut; + private SmallerButton whitelistPull; + private boolean isAdvanced; + public static final int OFFSET_ADVANCED = 35; + public static final String[] sideString = new String[]{ StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.disabled"), StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.up"), @@ -56,7 +65,7 @@ public class GuiInputter extends GuiContainer{ this.z = z; this.world = world; this.xSize = 176; - this.ySize = 93+86 + (isAdvanced ? 12 : 0); + this.ySize = 93+86 + (isAdvanced ? 12+OFFSET_ADVANCED : 0); this.isAdvanced = isAdvanced; } @@ -70,15 +79,18 @@ public class GuiInputter extends GuiContainer{ public void initGui(){ super.initGui(); - SmallerButton buttonSidePutP = new SmallerButton(0, guiLeft + 70, guiTop + 43 + (isAdvanced ? 12 : 0), ">"); - SmallerButton buttonSidePutM = new SmallerButton(1, guiLeft + 5, guiTop + 43 + (isAdvanced ? 12 : 0), "<"); - buttonSlotPutP = new SmallerButton(2, guiLeft + 70, guiTop + 64 + (isAdvanced ? 12 : 0), "+"); - buttonSlotPutM = new SmallerButton(3, guiLeft + 5, guiTop + 64 + (isAdvanced ? 12 : 0), "-"); + SmallerButton buttonSidePutP = new SmallerButton(0, guiLeft + 155, guiTop + 43 + (isAdvanced ? 12+OFFSET_ADVANCED : 0), ">"); + SmallerButton buttonSidePutM = new SmallerButton(1, guiLeft + 90, guiTop + 43 + (isAdvanced ? 12+OFFSET_ADVANCED : 0), "<"); + buttonSlotPutP = new SmallerButton(2, guiLeft+ 155, guiTop + 64 + (isAdvanced ? 12+OFFSET_ADVANCED : 0), "+"); + buttonSlotPutM = new SmallerButton(3, guiLeft + 90, guiTop + 64 + (isAdvanced ? 12+OFFSET_ADVANCED : 0), "-"); - SmallerButton buttonSidePullP = new SmallerButton(4, guiLeft + 155, guiTop + 43 + (isAdvanced ? 12 : 0), ">"); - SmallerButton buttonSidePullM = new SmallerButton(5, guiLeft + 90, guiTop + 43 + (isAdvanced ? 12 : 0), "<"); - buttonSlotPullP = new SmallerButton(6, guiLeft+ 155, guiTop + 64 + (isAdvanced ? 12 : 0), "+"); - buttonSlotPullM = new SmallerButton(7, guiLeft + 90, guiTop + 64 + (isAdvanced ? 12 : 0), "-"); + SmallerButton buttonSidePullP = new SmallerButton(4, guiLeft + 70, guiTop + 43 + (isAdvanced ? 12+OFFSET_ADVANCED : 0), ">"); + SmallerButton buttonSidePullM = new SmallerButton(5, guiLeft + 5, guiTop + 43 + (isAdvanced ? 12+OFFSET_ADVANCED : 0), "<"); + buttonSlotPullP = new SmallerButton(6, guiLeft + 70, guiTop + 64 + (isAdvanced ? 12+OFFSET_ADVANCED : 0), "+"); + buttonSlotPullM = new SmallerButton(7, guiLeft + 5, guiTop + 64 + (isAdvanced ? 12+OFFSET_ADVANCED : 0), "-"); + + whitelistPull = new SmallerButton(TileEntityInputter.WHITELIST_PULL_BUTTON_ID, guiLeft+3, guiTop+16, ""); + whitelistPut = new SmallerButton(TileEntityInputter.WHITELIST_PUT_BUTTON_ID, guiLeft+157, guiTop+16, ""); this.buttonList.add(buttonSidePutP); this.buttonList.add(buttonSlotPutP); @@ -88,6 +100,10 @@ public class GuiInputter extends GuiContainer{ this.buttonList.add(buttonSlotPutM); this.buttonList.add(buttonSidePullM); this.buttonList.add(buttonSlotPullM); + if(this.isAdvanced){ + this.buttonList.add(whitelistPut); + this.buttonList.add(whitelistPull); + } } @Override @@ -95,19 +111,19 @@ public class GuiInputter extends GuiContainer{ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(AssetUtil.GUI_INVENTORY_LOCATION); - this.drawTexturedModalRect(this.guiLeft, this.guiTop+93 + (isAdvanced ? 12 : 0), 0, 0, 176, 86); + this.drawTexturedModalRect(this.guiLeft, this.guiTop+93 + (isAdvanced ? 12+OFFSET_ADVANCED : 0), 0, 0, 176, 86); this.mc.getTextureManager().bindTexture(this.isAdvanced ? resLocAdvanced : resLoc); - this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, 176, 93 + (isAdvanced ? 12 : 0)); + this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, 176, 93 + (isAdvanced ? 12+OFFSET_ADVANCED : 0)); - this.fontRendererObj.drawString(StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.put"), guiLeft + 22 + 3, guiTop + 32 + (isAdvanced ? 12 : 0), 4210752); - this.fontRendererObj.drawString(StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.pull"), guiLeft + 107 + 3, guiTop + 32 + (isAdvanced ? 12 : 0), 4210752); + this.fontRendererObj.drawString(StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.pull"), guiLeft + 22 + 3, guiTop + 32 + (isAdvanced ? 12+OFFSET_ADVANCED : 0), 4210752); + this.fontRendererObj.drawString(StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.put"), guiLeft + 107 + 3, guiTop + 32 + (isAdvanced ? 12+OFFSET_ADVANCED : 0), 4210752); - this.fontRendererObj.drawString(sideString[tileInputter.sideToPut+1], guiLeft + 24 + 1, guiTop + 45 + 3 + (isAdvanced ? 12 : 0), 4210752); - this.fontRendererObj.drawString(StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.slot") + " " + (tileInputter.slotToPut == -1 ? StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.all") : tileInputter.slotToPut).toString(), guiLeft + 24 + 3, guiTop + 66 + 3 + (isAdvanced ? 12 : 0), 4210752); + this.fontRendererObj.drawString(sideString[tileInputter.sideToPull+1], guiLeft + 24 + 1, guiTop + 45 + 3 + (isAdvanced ? 12+36 : 0), 4210752); + this.fontRendererObj.drawString(StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.slot") + " " + (tileInputter.slotToPut == -1 ? StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.all") : tileInputter.slotToPull).toString(), guiLeft + 24 + 3, guiTop + 66 + 3 + (isAdvanced ? 12+OFFSET_ADVANCED : 0), StringUtil.DECIMAL_COLOR_GRAY_TEXT); - this.fontRendererObj.drawString(sideString[tileInputter.sideToPull+1], guiLeft + 109 + 1, guiTop + 45 + 3 + (isAdvanced ? 12 : 0), 4210752); - this.fontRendererObj.drawString(StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.slot") + " " + (tileInputter.slotToPull == -1 ? StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.all") : tileInputter.slotToPull).toString(), guiLeft + 109 + 3, guiTop + 66 + 3 + (isAdvanced ? 12 : 0), 4210752); + this.fontRendererObj.drawString(sideString[tileInputter.sideToPut+1], guiLeft + 109 + 1, guiTop + 45 + 3 + (isAdvanced ? 12+36 : 0), 4210752); + this.fontRendererObj.drawString(StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.slot") + " " + (tileInputter.slotToPut == -1 ? StatCollector.translateToLocal("info." + ModUtil.MOD_ID_LOWER + ".gui.all") : tileInputter.slotToPut).toString(), guiLeft + 109 + 3, guiTop + 66 + 3 + (isAdvanced ? 12+OFFSET_ADVANCED : 0), StringUtil.DECIMAL_COLOR_GRAY_TEXT); } @Override @@ -119,11 +135,25 @@ public class GuiInputter extends GuiContainer{ this.buttonSlotPutP.enabled = this.tileInputter.placeToPutSlotAmount > 0; this.buttonSlotPutM.enabled = this.tileInputter.placeToPutSlotAmount > 0; + + this.whitelistPull.displayString = this.tileInputter.isPullWhitelist ? "O" : "X"; + this.whitelistPut.displayString = this.tileInputter.isPutWhitelist ? "O" : "X"; + + if(this.isAdvanced){ + String text1 = this.tileInputter.isPullWhitelist ? StatCollector.translateToLocal("info."+ModUtil.MOD_ID_LOWER+".gui.whitelist") : StatCollector.translateToLocal("info."+ModUtil.MOD_ID_LOWER+".gui.blacklist"); + if(x >= guiLeft+3 && y >= guiTop+16 && x <= guiLeft+18 && y <= guiTop+31){ + this.func_146283_a(Collections.singletonList(text1), x, y); + } + String text2 = this.tileInputter.isPutWhitelist ? StatCollector.translateToLocal("info."+ModUtil.MOD_ID_LOWER+".gui.whitelist") : StatCollector.translateToLocal("info."+ModUtil.MOD_ID_LOWER+".gui.blacklist"); + if(x >= guiLeft+157 && y >= guiTop+16 && x <= guiLeft+172 && y <= guiTop+31){ + this.func_146283_a(Collections.singletonList(text2), x, y); + } + } } @Override public void actionPerformed(GuiButton button){ - PacketHandler.theNetwork.sendToServer(new PacketInputterButton(x, y, z, world, button.id)); + PacketHandler.theNetwork.sendToServer(new PacketGuiButton(x, y, z, world, button.id, Minecraft.getMinecraft().thePlayer)); } public class SmallerButton extends GuiButton{ diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiOilGenerator.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiOilGenerator.java similarity index 96% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiOilGenerator.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiOilGenerator.java index 864722db6..7d0fe4bf2 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiOilGenerator.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiOilGenerator.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerOilGenerator; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityOilGenerator; import ellpeck.actuallyadditions.util.AssetUtil; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiPhantomPlacer.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiPhantomPlacer.java similarity index 93% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiPhantomPlacer.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiPhantomPlacer.java index 9c0a99f9e..18d04955f 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiPhantomPlacer.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiPhantomPlacer.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerPhantomPlacer; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityPhantomPlacer; import ellpeck.actuallyadditions.util.AssetUtil; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiRepairer.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiRepairer.java similarity index 95% rename from src/main/java/ellpeck/actuallyadditions/inventory/GuiRepairer.java rename to src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiRepairer.java index 435af2cf9..2cbb5e84a 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiRepairer.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiRepairer.java @@ -1,7 +1,8 @@ -package ellpeck.actuallyadditions.inventory; +package ellpeck.actuallyadditions.inventory.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.inventory.ContainerRepairer; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.tile.TileEntityItemRepairer; import ellpeck.actuallyadditions.util.AssetUtil; diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/slot/SlotFilter.java b/src/main/java/ellpeck/actuallyadditions/inventory/slot/SlotFilter.java index ab1be1320..873ab776e 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/slot/SlotFilter.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/slot/SlotFilter.java @@ -13,4 +13,5 @@ public class SlotFilter extends Slot{ public int getSlotStackLimit(){ return 1; } + } diff --git a/src/main/java/ellpeck/actuallyadditions/items/InitItems.java b/src/main/java/ellpeck/actuallyadditions/items/InitItems.java index 4b2ea4ce5..d3f758f23 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/InitItems.java +++ b/src/main/java/ellpeck/actuallyadditions/items/InitItems.java @@ -50,6 +50,7 @@ public class InitItems{ public static Item itemRiceSeed; public static Item itemCanolaSeed; public static Item itemFlaxSeed; + public static Item itemCoffeeSeed; public static Item itemResonantRice; public static Item itemBucketOil; @@ -57,6 +58,17 @@ public class InitItems{ public static Item itemPhantomConnector; + public static Item itemCoffeeBean; + public static Item itemCoffee; + + public static Item woodenPaxel; + public static Item stonePaxel; + public static Item ironPaxel; + public static Item diamondPaxel; + public static Item goldPaxel; + public static Item emeraldPaxel; + public static Item obsidianPaxel; + public static void init(){ Util.logInfo("Initializing Items..."); @@ -114,6 +126,9 @@ public class InitItems{ ItemUtil.register(itemHairyBall); HairyBallHandler.init(); + itemCoffeeBean = new ItemCoffeeBean(); + ItemUtil.register(itemCoffeeBean); + itemRiceSeed = new ItemSeed("itemRiceSeed", InitBlocks.blockRice, Blocks.water, EnumPlantType.Water, new ItemStack(itemFoods, 1, TheFoods.RICE.ordinal())); ItemUtil.register(itemRiceSeed); FactoryRegistry.sendMessage("registerPlantable", itemRiceSeed); @@ -126,6 +141,10 @@ public class InitItems{ ItemUtil.register(itemFlaxSeed); FactoryRegistry.sendMessage("registerPlantable", itemFlaxSeed); + itemCoffeeSeed = new ItemSeed("itemCoffeeSeed", InitBlocks.blockCoffee, Blocks.grass, EnumPlantType.Plains, new ItemStack(itemCoffeeBean)); + ItemUtil.register(itemCoffeeSeed); + FactoryRegistry.sendMessage("registerPlantable", itemCoffeeSeed); + itemPickaxeEmerald = new ItemPickaxeAA(InitItemMaterials.toolMaterialEmerald, new ItemStack(Items.emerald), "itemPickaxeEmerald", EnumRarity.rare); itemAxeEmerald = new ItemAxeAA(InitItemMaterials.toolMaterialEmerald, new ItemStack(Items.emerald), "itemAxeEmerald", EnumRarity.rare); itemShovelEmerald = new ItemShovelAA(InitItemMaterials.toolMaterialEmerald, new ItemStack(Items.emerald), "itemShovelEmerald", EnumRarity.rare); @@ -140,5 +159,16 @@ public class InitItems{ itemHoeObsidian = new ItemHoeAA(InitItemMaterials.toolMaterialObsidian, new ItemStack(Blocks.obsidian), "itemHoeObsidian", EnumRarity.uncommon); ItemUtil.registerItems(new Item[]{itemPickaxeObsidian, itemAxeObsidian, itemShovelObsidian, itemSwordObsidian, itemHoeObsidian}); + woodenPaxel = new ItemAllToolAA(Item.ToolMaterial.WOOD, new ItemStack(Blocks.planks), "woodenPaxel", EnumRarity.uncommon); + stonePaxel = new ItemAllToolAA(Item.ToolMaterial.STONE, new ItemStack(Blocks.stone), "stonePaxel", EnumRarity.uncommon); + ironPaxel = new ItemAllToolAA(Item.ToolMaterial.IRON, new ItemStack(Items.iron_ingot), "ironPaxel", EnumRarity.rare); + goldPaxel = new ItemAllToolAA(Item.ToolMaterial.GOLD, new ItemStack(Items.gold_ingot), "goldPaxel", EnumRarity.rare); + diamondPaxel = new ItemAllToolAA(Item.ToolMaterial.EMERALD, new ItemStack(Items.diamond), "diamondPaxel", EnumRarity.epic); + emeraldPaxel = new ItemAllToolAA(InitItemMaterials.toolMaterialEmerald, new ItemStack(Items.emerald), "emeraldPaxel", EnumRarity.epic); + obsidianPaxel = new ItemAllToolAA(InitItemMaterials.toolMaterialObsidian, new ItemStack(Blocks.obsidian), "obsidianPaxel", EnumRarity.epic); + ItemUtil.registerItems(new Item[]{woodenPaxel, stonePaxel, ironPaxel, goldPaxel, diamondPaxel, emeraldPaxel, obsidianPaxel}); + + itemCoffee = new ItemCoffee(); + ItemUtil.register(itemCoffee); } } diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemCoffee.java b/src/main/java/ellpeck/actuallyadditions/items/ItemCoffee.java new file mode 100644 index 000000000..b3c92331b --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemCoffee.java @@ -0,0 +1,253 @@ +package ellpeck.actuallyadditions.items; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.config.values.ConfigIntValues; +import ellpeck.actuallyadditions.items.metalists.TheMiscItems; +import ellpeck.actuallyadditions.util.INameableItem; +import ellpeck.actuallyadditions.util.ItemUtil; +import ellpeck.actuallyadditions.util.KeyUtil; +import ellpeck.actuallyadditions.util.ModUtil; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.EnumAction; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemFood; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +import java.util.ArrayList; +import java.util.List; + +public class ItemCoffee extends ItemFood implements INameableItem{ + + public static ArrayList ingredients = new ArrayList(); + + public void initIngredients(){ + this.registerIngredient(new Ingredient(new ItemStack(Items.milk_bucket), null){ + @Override + public void effect(ItemStack stack){ + PotionEffect[] effects = getEffectsFromStack(stack); + ArrayList effectsNew = new ArrayList(); + if(effects != null && effects.length > 0){ + for(PotionEffect effect : effects){ + if(effect.getAmplifier() > 0) effectsNew.add(new PotionEffect(effect.getPotionID(), effect.getDuration()+150, effect.getAmplifier()-1)); + } + stack.setTagCompound(new NBTTagCompound()); + if(effectsNew.size() > 0){ + this.effects = effectsNew.toArray(new PotionEffect[effectsNew.size()]); + ItemCoffee.addEffectToStack(stack, this); + } + } + } + @Override + public String getExtraText(){ + return StatCollector.translateToLocal("container.nei." + ModUtil.MOD_ID_LOWER + ".coffee.extra.milk"); + } + }); + this.registerIngredient(new Ingredient(new ItemStack(Items.sugar), new PotionEffect[]{new PotionEffect(Potion.moveSpeed.getId(), 30, 0)})); + this.registerIngredient(new Ingredient(new ItemStack(Items.magma_cream), new PotionEffect[]{new PotionEffect(Potion.fireResistance.getId(), 10, 0)})); + this.registerIngredient(new Ingredient(new ItemStack(Items.fish, 1, 3), new PotionEffect[]{new PotionEffect(Potion.waterBreathing.getId(), 15, 0)})); + this.registerIngredient(new Ingredient(new ItemStack(Items.golden_carrot), new PotionEffect[]{new PotionEffect(Potion.nightVision.getId(), 60, 0)})); + this.registerIngredient(new Ingredient(new ItemStack(Items.ghast_tear), new PotionEffect[]{new PotionEffect(Potion.regeneration.getId(), 10, 0)})); + this.registerIngredient(new Ingredient(new ItemStack(Items.blaze_powder), new PotionEffect[]{new PotionEffect(Potion.damageBoost.getId(), 15, 0)})); + this.registerIngredient(new Ingredient(new ItemStack(Items.fermented_spider_eye), new PotionEffect[]{new PotionEffect(Potion.invisibility.getId(), 25, 0)})); + } + + public ItemCoffee(){ + super(2, 2.0F, false); + this.setMaxDamage(ConfigIntValues.COFFEE_DRINK_AMOUNT.getValue()-1); + this.setAlwaysEdible(); + this.setMaxStackSize(1); + this.initIngredients(); + } + + public static Ingredient getIngredientFromStack(ItemStack stack){ + for(Ingredient ingredient : ingredients){ + if(ingredient.ingredient.isItemEqual(stack)) return ingredient; + } + return null; + } + + public static void addEffectProperties(ItemStack stack, PotionEffect effect, boolean addDur, boolean addAmp){ + PotionEffect[] effects = getEffectsFromStack(stack); + stack.setTagCompound(new NBTTagCompound()); + for(int i = 0; i < effects.length; i++){ + if(effects[i].getPotionID() == effect.getPotionID()){ + effects[i] = new PotionEffect(effects[i].getPotionID(), effects[i].getDuration()+(addDur ? effect.getDuration() : 0), effects[i].getAmplifier()+(addAmp ? (effect.getAmplifier() > 0 ? effect.getAmplifier() : 1) : 0)); + } + addEffectToStack(stack, effects[i]); + } + } + + public static void addEffectToStack(ItemStack stack, PotionEffect effect){ + NBTTagCompound tag = stack.getTagCompound(); + if(tag == null) tag = new NBTTagCompound(); + + int prevCounter = tag.getInteger("Counter"); + NBTTagCompound compound = new NBTTagCompound(); + compound.setInteger("ID", effect.getPotionID()); + compound.setInteger("Duration", effect.getDuration()); + compound.setInteger("Amplifier", effect.getAmplifier()); + + int counter = prevCounter+1; + tag.setTag(counter+"", compound); + tag.setInteger("Counter", counter); + + stack.setTagCompound(tag); + } + + public static void addEffectToStack(ItemStack stack, Ingredient ingredient){ + if(ingredient != null){ + PotionEffect[] effects = ingredient.getEffects(); + if(effects != null && effects.length > 0){ + for(PotionEffect effect : effects){ + if(hasEffect(stack, effect)) addEffectProperties(stack, effect, false, true); + else addEffectToStack(stack, effect); + } + } + } + } + + public static PotionEffect[] getEffectsFromStack(ItemStack stack){ + ArrayList effects = new ArrayList(); + NBTTagCompound tag = stack.getTagCompound(); + if(tag != null){ + int counter = tag.getInteger("Counter"); + while(counter > 0){ + NBTTagCompound compound = (NBTTagCompound)tag.getTag(counter + ""); + PotionEffect effect = new PotionEffect(compound.getInteger("ID"), compound.getInteger("Duration"), compound.getByte("Amplifier")); + if(effect.getPotionID() > 0){ + effects.add(effect); + } + counter--; + } + } + return effects.size() > 0 ? effects.toArray(new PotionEffect[effects.size()]) : null; + } + + public static boolean hasEffect(ItemStack stack, PotionEffect effect){ + PotionEffect[] effectsStack = getEffectsFromStack(stack); + if(effectsStack != null && effectsStack.length > 0){ + for(PotionEffect effectStack : effectsStack){ + if(effect.getPotionID() == effectStack.getPotionID()) return true; + } + } + return false; + } + + public static void applyPotionEffectsFromStack(ItemStack stack, EntityPlayer player){ + PotionEffect[] effects = getEffectsFromStack(stack); + if(effects != null && effects.length > 0){ + for(PotionEffect effect : effects){ + player.addPotionEffect(new PotionEffect(effect.getPotionID(), effect.getDuration()*20, effect.getAmplifier())); + } + } + } + + @Override + public boolean getShareTag(){ + return true; + } + + @Override + public EnumAction getItemUseAction(ItemStack stack){ + return EnumAction.drink; + } + + @Override + public String getOredictName(){ + return this.getName(); + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return EnumRarity.rare; + } + + @Override + public int getMetadata(int damage){ + return damage; + } + + @Override + public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player){ + ItemStack theStack = stack.copy(); + super.onEaten(stack, world, player); + applyPotionEffectsFromStack(stack, player); + theStack.setItemDamage(theStack.getItemDamage()+1); + if(theStack.getMaxDamage()-theStack.getItemDamage() < 0) return new ItemStack(InitItems.itemMisc, 1, TheMiscItems.CUP.ordinal()); + else return theStack; + } + + @Override + @SuppressWarnings("unchecked") + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){ + if(KeyUtil.isShiftPressed()){ + list.add(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+"."+this.getName()+".desc.1")); + list.add(StatCollector.translateToLocalFormatted("tooltip."+ModUtil.MOD_ID_LOWER+"."+this.getName()+".desc.2", this.getMaxDamage()+1)); + list.add(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".hunger.desc")+": "+this.func_150905_g(stack)); + list.add(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".saturation.desc")+": "+this.func_150906_h(stack)); + list.add(""); + + PotionEffect[] effects = getEffectsFromStack(stack); + if(effects != null && effects.length > 0){ + for(PotionEffect effect : effects){ + list.add(StatCollector.translateToLocal(effect.getEffectName())+" "+(effect.getAmplifier()+1)+ " (" + Potion.getDurationString(new PotionEffect(0, effect.getDuration()*20, 0)) + ")"); + } + } + else list.add("No Effects"); + } + else list.add(ItemUtil.shiftForInfo()); + } + + @Override + public IIcon getIconFromDamage(int par1){ + return this.itemIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconReg){ + itemIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER + ":" + this.getName()); + } + + @Override + public String getName(){ + return "itemCoffee"; + } + + public void registerIngredient(Ingredient ingredient){ + ingredients.add(ingredient); + } + + public static class Ingredient{ + + public ItemStack ingredient; + protected PotionEffect[] effects; + + public Ingredient(ItemStack ingredient, PotionEffect[] effects){ + this.ingredient = ingredient.copy(); + this.effects = effects; + } + + public String getExtraText(){ + return null; + } + + public PotionEffect[] getEffects(){ + return this.effects; + } + + public void effect(ItemStack stack){ + ItemCoffee.addEffectToStack(stack, this); + } + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemCoffeeBean.java b/src/main/java/ellpeck/actuallyadditions/items/ItemCoffeeBean.java new file mode 100644 index 000000000..08a55cd57 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemCoffeeBean.java @@ -0,0 +1,57 @@ +package ellpeck.actuallyadditions.items; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.util.INameableItem; +import ellpeck.actuallyadditions.util.ItemUtil; +import ellpeck.actuallyadditions.util.ModUtil; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemFood; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import java.util.List; + +public class ItemCoffeeBean extends ItemFood implements INameableItem{ + + public ItemCoffeeBean(){ + super(1, 1F, false); + this.setMaxDamage(0); + } + + @Override + public String getOredictName(){ + return this.getName(); + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return EnumRarity.rare; + } + + @Override + @SuppressWarnings("unchecked") + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){ + ItemUtil.addInformation(this, list, 1, ""); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(ItemStack stack, int pass){ + return this.itemIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconReg){ + this.itemIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER + ":" + this.getName()); + } + + @Override + public String getName(){ + return "itemCoffeeBeans"; + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemDust.java b/src/main/java/ellpeck/actuallyadditions/items/ItemDust.java index 97e9b7dfd..d81f4d634 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/ItemDust.java +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemDust.java @@ -41,7 +41,7 @@ public class ItemDust extends Item implements INameableItem{ @Override public EnumRarity getRarity(ItemStack stack){ - return allDusts[stack.getItemDamage()].rarity; + return stack.getItemDamage() >= allDusts.length ? EnumRarity.common : allDusts[stack.getItemDamage()].rarity; } @SuppressWarnings("all") @@ -54,14 +54,14 @@ public class ItemDust extends Item implements INameableItem{ @Override public String getUnlocalizedName(ItemStack stack){ - return this.getUnlocalizedName() + allDusts[stack.getItemDamage()].name; + return this.getUnlocalizedName() + (stack.getItemDamage() >= allDusts.length ? " ERROR!" : allDusts[stack.getItemDamage()].getName()); } @Override @SuppressWarnings("unchecked") @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){ - ItemUtil.addInformation(this, list, 1, allDusts[stack.getItemDamage()].getName()); + if(stack.getItemDamage() < allDusts.length) ItemUtil.addInformation(this, list, 1, allDusts[stack.getItemDamage()].getName()); } @Override @@ -72,7 +72,7 @@ public class ItemDust extends Item implements INameableItem{ @Override @SideOnly(Side.CLIENT) public int getColorFromItemStack(ItemStack stack, int pass){ - return allDusts[stack.getItemDamage()].color; + return stack.getItemDamage() >= allDusts.length ? 0 : allDusts[stack.getItemDamage()].color; } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemFoods.java b/src/main/java/ellpeck/actuallyadditions/items/ItemFoods.java index 0492eb531..5f1578bb6 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/ItemFoods.java +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemFoods.java @@ -37,27 +37,27 @@ public class ItemFoods extends ItemFood implements INameableItem{ @Override public EnumRarity getRarity(ItemStack stack){ - return allFoods[stack.getItemDamage()].rarity; + return stack.getItemDamage() >= allFoods.length ? EnumRarity.common : allFoods[stack.getItemDamage()].rarity; } @Override public int func_150905_g(ItemStack stack){ - return allFoods[stack.getItemDamage()].healAmount; + return stack.getItemDamage() >= allFoods.length ? 0 : allFoods[stack.getItemDamage()].healAmount; } @Override public float func_150906_h(ItemStack stack){ - return allFoods[stack.getItemDamage()].saturation; + return stack.getItemDamage() >= allFoods.length ? 0 : allFoods[stack.getItemDamage()].saturation; } @Override public EnumAction getItemUseAction(ItemStack stack){ - return allFoods[stack.getItemDamage()].getsDrunken ? EnumAction.drink : EnumAction.eat; + return stack.getItemDamage() >= allFoods.length ? EnumAction.eat : (allFoods[stack.getItemDamage()].getsDrunken ? EnumAction.drink : EnumAction.eat); } @Override public int getMaxItemUseDuration(ItemStack stack){ - return allFoods[stack.getItemDamage()].useDuration; + return stack.getItemDamage() >= allFoods.length ? 0 : allFoods[stack.getItemDamage()].useDuration; } @Override @@ -75,14 +75,14 @@ public class ItemFoods extends ItemFood implements INameableItem{ @Override public String getUnlocalizedName(ItemStack stack){ - return this.getUnlocalizedName() + allFoods[stack.getItemDamage()].getName(); + return this.getUnlocalizedName() + (stack.getItemDamage() >= allFoods.length ? " ERROR!" : allFoods[stack.getItemDamage()].getName()); } @Override public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player){ ItemStack stackToReturn = super.onEaten(stack, world, player); - ItemStack returnItem = allFoods[stack.getItemDamage()].returnItem; - if (returnItem != null){ + ItemStack returnItem = stack.getItemDamage() >= allFoods.length ? null : allFoods[stack.getItemDamage()].returnItem; + if(returnItem != null){ if(!player.inventory.addItemStackToInventory(returnItem.copy())){ if(!world.isRemote){ EntityItem entityItem = new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, returnItem.copy()); @@ -98,17 +98,19 @@ public class ItemFoods extends ItemFood implements INameableItem{ @SuppressWarnings("unchecked") @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){ - if(KeyUtil.isShiftPressed()){ - list.add(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + "." + this.getName() + allFoods[stack.getItemDamage()].getName() + ".desc")); - list.add(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + ".hunger.desc") + ": " + allFoods[stack.getItemDamage()].healAmount); - list.add(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + ".saturation.desc") + ": " + allFoods[stack.getItemDamage()].saturation); + if(stack.getItemDamage() < allFoods.length){ + if(KeyUtil.isShiftPressed()){ + list.add(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+"."+this.getName()+allFoods[stack.getItemDamage()].getName()+".desc")); + list.add(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".hunger.desc")+": "+allFoods[stack.getItemDamage()].healAmount); + list.add(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".saturation.desc")+": "+allFoods[stack.getItemDamage()].saturation); + } + else list.add(ItemUtil.shiftForInfo()); } - else list.add(ItemUtil.shiftForInfo()); } @Override public IIcon getIconFromDamage(int par1){ - return textures[par1]; + return par1 >= textures.length ? null : textures[par1]; } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemJams.java b/src/main/java/ellpeck/actuallyadditions/items/ItemJams.java index 5ce347cd3..5a98848a4 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/ItemJams.java +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemJams.java @@ -41,17 +41,17 @@ public class ItemJams extends ItemFood implements INameableItem{ @Override public EnumRarity getRarity(ItemStack stack){ - return allJams[stack.getItemDamage()].rarity; + return stack.getItemDamage() >= allJams.length ? EnumRarity.common : allJams[stack.getItemDamage()].rarity; } @Override public int func_150905_g(ItemStack stack){ - return allJams[stack.getItemDamage()].healAmount; + return stack.getItemDamage() >= allJams.length ? 0 : allJams[stack.getItemDamage()].healAmount; } @Override public float func_150906_h(ItemStack stack){ - return allJams[stack.getItemDamage()].saturation; + return stack.getItemDamage() >= allJams.length ? 0 : allJams[stack.getItemDamage()].saturation; } @Override @@ -69,20 +69,20 @@ public class ItemJams extends ItemFood implements INameableItem{ @Override public String getUnlocalizedName(ItemStack stack){ - return this.getUnlocalizedName() + allJams[stack.getItemDamage()].getName(); + return this.getUnlocalizedName() + (stack.getItemDamage() >= allJams.length ? " ERROR!" : allJams[stack.getItemDamage()].getName()); } @Override @SideOnly(Side.CLIENT) public int getColorFromItemStack(ItemStack stack, int pass){ - return pass > 0 ? allJams[stack.getItemDamage()].color : super.getColorFromItemStack(stack, pass); + return pass > 0 ? (stack.getItemDamage() >= allJams.length ? 0 : allJams[stack.getItemDamage()].color) : super.getColorFromItemStack(stack, pass); } @Override public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player){ ItemStack stackToReturn = super.onEaten(stack, world, player); - if(!world.isRemote){ + if(!world.isRemote && stack.getItemDamage() < allJams.length){ PotionEffect firstEffectToGet = new PotionEffect(allJams[stack.getItemDamage()].firstEffectToGet, 200); player.addPotionEffect(firstEffectToGet); @@ -103,14 +103,16 @@ public class ItemJams extends ItemFood implements INameableItem{ @SuppressWarnings("unchecked") @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){ - if(KeyUtil.isShiftPressed()){ - list.add(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + "." + this.getName() + ".desc.1")); - list.add(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + "." + this.getName() + allJams[stack.getItemDamage()].getName() + ".desc")); - list.add(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + "." + this.getName() + ".desc.2")); - list.add(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + ".hunger.desc") + ": " + allJams[stack.getItemDamage()].healAmount); - list.add(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + ".saturation.desc") + ": " + allJams[stack.getItemDamage()].saturation); + if(stack.getItemDamage() < allJams.length){ + if(KeyUtil.isShiftPressed()){ + list.add(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+"."+this.getName()+".desc.1")); + list.add(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+"."+this.getName()+allJams[stack.getItemDamage()].getName()+".desc")); + list.add(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+"."+this.getName()+".desc.2")); + list.add(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".hunger.desc")+": "+allJams[stack.getItemDamage()].healAmount); + list.add(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".saturation.desc")+": "+allJams[stack.getItemDamage()].saturation); + } + else list.add(ItemUtil.shiftForInfo()); } - else list.add(ItemUtil.shiftForInfo()); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemMisc.java b/src/main/java/ellpeck/actuallyadditions/items/ItemMisc.java index 2cf6110b6..fd77272e5 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/ItemMisc.java +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemMisc.java @@ -37,7 +37,7 @@ public class ItemMisc extends Item implements INameableItem{ @Override public EnumRarity getRarity(ItemStack stack){ - return allMiscItems[stack.getItemDamage()].rarity; + return stack.getItemDamage() >= allMiscItems.length ? EnumRarity.common : allMiscItems[stack.getItemDamage()].rarity; } @Override @@ -55,19 +55,19 @@ public class ItemMisc extends Item implements INameableItem{ @Override public String getUnlocalizedName(ItemStack stack){ - return this.getUnlocalizedName() + allMiscItems[stack.getItemDamage()].name; + return this.getUnlocalizedName() + (stack.getItemDamage() >= allMiscItems.length ? " ERROR!" : allMiscItems[stack.getItemDamage()].getName()); } @Override @SuppressWarnings("unchecked") @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){ - ItemUtil.addInformation(this, list, 1, allMiscItems[stack.getItemDamage()].getName()); + if(stack.getItemDamage() < allMiscItems.length) ItemUtil.addInformation(this, list, 1, allMiscItems[stack.getItemDamage()].getName()); } @Override public IIcon getIconFromDamage(int par1){ - return textures[par1]; + return par1 >= textures.length ? null : textures[par1]; } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemPhantomConnector.java b/src/main/java/ellpeck/actuallyadditions/items/ItemPhantomConnector.java index e69386905..04a3e66f9 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/ItemPhantomConnector.java +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemPhantomConnector.java @@ -39,24 +39,22 @@ public class ItemPhantomConnector extends Item implements INameableItem{ if(tile != null){ //Passing to Face if(tile instanceof TileEntityPhantomface){ - if(this.checkHasConnection(stack, player)){ - ChunkCoordinates coords = this.getStoredPosition(stack); - TileEntity toStore = this.getStoredWorld(stack).getTileEntity(coords.posX, coords.posY, coords.posZ); - if(toStore != null && ((TileEntityPhantomface)tile).canConnectTo(toStore)){ - ((TileEntityPhantomface)tile).boundTile = toStore; - this.clearStorage(stack); - player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.connected.desc"))); - return true; - } - else player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.notInventory.desc"))); + if(this.checkHasConnection(stack, player, tile)){ + ((TileEntityPhantomface)tile).boundPosition = this.getStoredPosition(stack); + ((TileEntityPhantomface)tile).boundWorld = this.getStoredWorld(stack); + TileEntityPhantomface.updateAround(tile); + this.clearStorage(stack); + player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.connected.desc"))); + return true; } return false; } //Passing to Placer else if(tile instanceof TileEntityPhantomPlacer){ - if(this.checkHasConnection(stack, player)){ + if(this.checkHasConnection(stack, player, tile)){ ((TileEntityPhantomPlacer)tile).boundPosition = this.getStoredPosition(stack); ((TileEntityPhantomPlacer)tile).boundWorld = this.getStoredWorld(stack); + tile.markDirty(); this.clearStorage(stack); player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.connected.desc"))); return true; @@ -71,12 +69,20 @@ public class ItemPhantomConnector extends Item implements INameableItem{ return true; } - public boolean checkHasConnection(ItemStack stack, EntityPlayer player){ + public boolean checkHasConnection(ItemStack stack, EntityPlayer player, TileEntity tile){ if(this.getStoredPosition(stack) != null && this.getStoredWorld(stack) != null){ return true; } else{ - player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + ".phantom.noBound.desc"))); + if(tile instanceof TileEntityPhantomPlacer){ + ((TileEntityPhantomPlacer)tile).boundWorld = null; + ((TileEntityPhantomPlacer)tile).boundPosition = null; + } + if(tile instanceof TileEntityPhantomface){ + ((TileEntityPhantomface)tile).boundWorld = null; + ((TileEntityPhantomface)tile).boundPosition = null; + } + player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + ".phantom.unbound.desc"))); return false; } } diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemPotionRing.java b/src/main/java/ellpeck/actuallyadditions/items/ItemPotionRing.java index 785608fd1..db3fe422c 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/ItemPotionRing.java +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemPotionRing.java @@ -3,7 +3,9 @@ package ellpeck.actuallyadditions.items; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import ellpeck.actuallyadditions.items.metalists.ThePotionRings; -import ellpeck.actuallyadditions.util.*; +import ellpeck.actuallyadditions.util.INameableItem; +import ellpeck.actuallyadditions.util.ItemUtil; +import ellpeck.actuallyadditions.util.ModUtil; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; @@ -40,7 +42,7 @@ public class ItemPotionRing extends Item implements INameableItem{ public void onUpdate(ItemStack stack, World world, Entity player, int par4, boolean par5){ super.onUpdate(stack, world, player, par4, par5); - if(!world.isRemote){ + if(!world.isRemote && stack.getItemDamage() < allRings.length){ if(player instanceof EntityPlayer){ EntityPlayer thePlayer = (EntityPlayer)player; ItemStack equippedStack = ((EntityPlayer)player).getCurrentEquippedItem(); @@ -71,7 +73,7 @@ public class ItemPotionRing extends Item implements INameableItem{ @Override public EnumRarity getRarity(ItemStack stack){ - return allRings[stack.getItemDamage()].rarity; + return stack.getItemDamage() >= allRings.length ? EnumRarity.common : allRings[stack.getItemDamage()].rarity; } @SuppressWarnings("all") @@ -84,20 +86,15 @@ public class ItemPotionRing extends Item implements INameableItem{ @Override public String getUnlocalizedName(ItemStack stack){ - return this.getUnlocalizedName() + allRings[stack.getItemDamage()].name; + return this.getUnlocalizedName() + (stack.getItemDamage() >= allRings.length ? " ERROR!" : allRings[stack.getItemDamage()].getName()); } @Override @SuppressWarnings("unchecked") @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){ - ItemUtil.addInformation(this, list, 2, ""); - - if(KeyUtil.isShiftPressed()){ - if(stack.getItemDamage() == ThePotionRings.SATURATION.ordinal()){ - list.add(StringUtil.RED + StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + ".itemPotionRing.desc.off.1")); - list.add(StringUtil.RED + StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + ".itemPotionRing.desc.off.2")); - } + if(stack.getItemDamage() < allRings.length){ + ItemUtil.addInformation(this, list, 2, ""); } } @@ -109,7 +106,7 @@ public class ItemPotionRing extends Item implements INameableItem{ @Override @SideOnly(Side.CLIENT) public int getColorFromItemStack(ItemStack stack, int pass){ - return allRings[stack.getItemDamage()].color; + return stack.getItemDamage() >= allRings.length ? 0 : allRings[stack.getItemDamage()].color; } @Override @@ -121,8 +118,10 @@ public class ItemPotionRing extends Item implements INameableItem{ @Override public String getItemStackDisplayName(ItemStack stack){ String standardName = StatCollector.translateToLocal(this.getUnlocalizedName() + ".name"); - String name = allRings[stack.getItemDamage()].getName(); - String effect = StatCollector.translateToLocal("effect." + ModUtil.MOD_ID_LOWER + "." + name.substring(0, 1).toLowerCase() + name.substring(1) + ".name"); - return standardName + " " + effect; + if(stack.getItemDamage() < allRings.length){ + String effect = StatCollector.translateToLocal(allRings[stack.getItemDamage()].getName()); + return standardName+" "+effect; + } + return standardName; } } diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemSpecialDrop.java b/src/main/java/ellpeck/actuallyadditions/items/ItemSpecialDrop.java index 200273019..22a758de4 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/ItemSpecialDrop.java +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemSpecialDrop.java @@ -17,10 +17,11 @@ import net.minecraft.util.IIcon; import net.minecraft.world.World; import java.util.List; -import java.util.Random; public class ItemSpecialDrop extends Item implements INameableItem{ + public static final int SOLID_XP_AMOUNT = 8; + public static final TheSpecialDrops[] allDrops = TheSpecialDrops.values(); public IIcon[] textures = new IIcon[allDrops.length]; @@ -32,8 +33,14 @@ public class ItemSpecialDrop extends Item implements INameableItem{ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player){ if(!world.isRemote){ if(stack.getItemDamage() == TheSpecialDrops.SOLIDIFIED_EXPERIENCE.ordinal()){ - world.spawnEntityInWorld(new EntityXPOrb(world, player.posX+0.5, player.posY+0.5, player.posZ+0.5, 5+new Random().nextInt(6))); - if(!player.capabilities.isCreativeMode) stack.stackSize--; + if(!player.isSneaking()){ + world.spawnEntityInWorld(new EntityXPOrb(world, player.posX+0.5, player.posY+0.5, player.posZ+0.5, SOLID_XP_AMOUNT)); + if(!player.capabilities.isCreativeMode) stack.stackSize--; + } + else{ + world.spawnEntityInWorld(new EntityXPOrb(world, player.posX+0.5, player.posY+0.5, player.posZ+0.5, SOLID_XP_AMOUNT*stack.stackSize)); + if(!player.capabilities.isCreativeMode) stack.stackSize = 0; + } } } return stack; @@ -46,7 +53,7 @@ public class ItemSpecialDrop extends Item implements INameableItem{ @Override public EnumRarity getRarity(ItemStack stack){ - return allDrops[stack.getItemDamage()].rarity; + return stack.getItemDamage() >= allDrops.length ? EnumRarity.common : allDrops[stack.getItemDamage()].rarity; } @Override @@ -69,19 +76,19 @@ public class ItemSpecialDrop extends Item implements INameableItem{ @Override public String getUnlocalizedName(ItemStack stack){ - return this.getUnlocalizedName() + allDrops[stack.getItemDamage()].name; + return this.getUnlocalizedName() + (stack.getItemDamage() >= allDrops.length ? " ERROR!" : allDrops[stack.getItemDamage()].getName()); } @Override @SuppressWarnings("unchecked") @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){ - ItemUtil.addInformation(this, list, 1, allDrops[stack.getItemDamage()].getName()); + if(stack.getItemDamage() < allDrops.length) ItemUtil.addInformation(this, list, stack.getItemDamage() == TheSpecialDrops.SOLIDIFIED_EXPERIENCE.ordinal() ? 2 : 1, allDrops[stack.getItemDamage()].getName()); } @Override public IIcon getIconFromDamage(int par1){ - return textures[par1]; + return par1 >= textures.length ? null : textures[par1]; } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/items/metalists/TheMiscItems.java b/src/main/java/ellpeck/actuallyadditions/items/metalists/TheMiscItems.java index b678244ec..d1a819731 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/metalists/TheMiscItems.java +++ b/src/main/java/ellpeck/actuallyadditions/items/metalists/TheMiscItems.java @@ -18,7 +18,8 @@ public enum TheMiscItems implements INameableItem{ TINY_COAL("TinyCoal", EnumRarity.common, "itemTinyCoal"), TINY_CHAR("TinyCharcoal", EnumRarity.common, "itemTinyChar"), RICE_SLIME("RiceSlime", EnumRarity.uncommon, "slimeball"), - CANOLA("Canola", EnumRarity.uncommon, "itemCanola"); + CANOLA("Canola", EnumRarity.uncommon, "itemCanola"), + CUP("Cup", EnumRarity.uncommon, "itemCup"); public final String name; public final String oredictName; diff --git a/src/main/java/ellpeck/actuallyadditions/items/metalists/ThePotionRings.java b/src/main/java/ellpeck/actuallyadditions/items/metalists/ThePotionRings.java index a5904b898..e79f599b2 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/metalists/ThePotionRings.java +++ b/src/main/java/ellpeck/actuallyadditions/items/metalists/ThePotionRings.java @@ -5,32 +5,32 @@ import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; public enum ThePotionRings implements INameableItem{ - SPEED("Speed", 8171462, 1, 0, 1, 10, false, EnumRarity.uncommon, new ItemStack(Items.sugar)), - //TODO Slowness - HASTE("Haste", 14270531, 3, 0, 1, 10, false, EnumRarity.epic, new ItemStack(Items.repeater)), - //TODO Mining Fatigue - STRENGTH("Strength", 9643043, 5, 0, 1, 10, false, EnumRarity.rare, new ItemStack(Items.blaze_powder)), + SPEED(Potion.moveSpeed.getName(), 8171462, Potion.moveSpeed.getId(), 0, 1, 10, false, EnumRarity.uncommon, new ItemStack(Items.sugar)), + //Slowness + HASTE(Potion.digSpeed.getName(), 14270531, Potion.digSpeed.getId(), 0, 1, 10, false, EnumRarity.epic, new ItemStack(Items.repeater)), + //Mining Fatigue + STRENGTH(Potion.damageBoost.getName(), 9643043, Potion.damageBoost.getId(), 0, 1, 10, false, EnumRarity.rare, new ItemStack(Items.blaze_powder)), //Health (Not Happening) - //TODO Damage - JUMP_BOOST("JumpBoost", 7889559, 8, 0, 1, 10, false, EnumRarity.rare, new ItemStack(Blocks.piston)), - //TODO Nausea - REGEN("Regen", 13458603, 10, 0, 1, 50, true, EnumRarity.rare, new ItemStack(Items.ghast_tear)), - RESISTANCE("Resistance", 10044730, 11, 0, 1, 10, false, EnumRarity.epic, new ItemStack(Items.slime_ball)), - FIRE_RESISTANCE("FireResistance", 14981690, 12, 0, 0, 10, false, EnumRarity.uncommon, new ItemStack(Items.magma_cream)), - WATER_BREATHING("WaterBreathing", 3035801, 13, 0, 0, 10, false, EnumRarity.rare, new ItemStack(Items.fish, 1, 3)), - INVISIBILITY("Invisibility", 8356754, 14, 0, 0, 10, false, EnumRarity.epic, new ItemStack(Items.fermented_spider_eye)), - //TODO Blindness - NIGHT_VISION("NightVision", 2039713, 16, 0, 0, 300, false, EnumRarity.rare, new ItemStack(Items.golden_carrot)), - //TODO Hunger - //TODO Weakness - //TODO Poison - //TODO Withering + //Damage + JUMP_BOOST(Potion.jump.getName(), 7889559, Potion.jump.getId(), 0, 1, 10, false, EnumRarity.rare, new ItemStack(Blocks.piston)), + //Nausea + REGEN(Potion.regeneration.getName(), 13458603, Potion.regeneration.getId(), 0, 1, 50, true, EnumRarity.rare, new ItemStack(Items.ghast_tear)), + RESISTANCE(Potion.resistance.getName(), 10044730, Potion.resistance.getId(), 0, 1, 10, false, EnumRarity.epic, new ItemStack(Items.slime_ball)), + FIRE_RESISTANCE(Potion.fireResistance.getName(), 14981690, Potion.fireResistance.getId(), 0, 0, 10, false, EnumRarity.uncommon, new ItemStack(Items.magma_cream)), + WATER_BREATHING(Potion.waterBreathing.getName(), 3035801, Potion.waterBreathing.getId(), 0, 0, 10, false, EnumRarity.rare, new ItemStack(Items.fish, 1, 3)), + INVISIBILITY(Potion.invisibility.getName(), 8356754, Potion.invisibility.getId(), 0, 0, 10, false, EnumRarity.epic, new ItemStack(Items.fermented_spider_eye)), + //Blindness + NIGHT_VISION(Potion.nightVision.getName(), 2039713, Potion.nightVision.getId(), 0, 0, 300, false, EnumRarity.rare, new ItemStack(Items.golden_carrot)); + //Hunger + //Weakness + //Poison + //Withering //Health Boost (Not Happening) //Absorption (Not Happening) - SATURATION("Saturation", 16262179, 23, 0, 1, 10, false, EnumRarity.epic, new ItemStack(Items.cooked_beef)); public final String name; public final int color; diff --git a/src/main/java/ellpeck/actuallyadditions/items/tools/ItemAllToolAA.java b/src/main/java/ellpeck/actuallyadditions/items/tools/ItemAllToolAA.java new file mode 100644 index 000000000..e6cb47d7e --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/items/tools/ItemAllToolAA.java @@ -0,0 +1,133 @@ +package ellpeck.actuallyadditions.items.tools; +import com.google.common.collect.Sets; +import cpw.mods.fml.common.eventhandler.Event; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.util.INameableItem; +import ellpeck.actuallyadditions.util.ItemUtil; +import ellpeck.actuallyadditions.util.KeyUtil; +import ellpeck.actuallyadditions.util.ModUtil; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemTool; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.UseHoeEvent; + +import java.util.List; +import java.util.Set; + +@SuppressWarnings("unchecked") +public class ItemAllToolAA extends ItemTool implements INameableItem{ + + private static final Set axeSet = Sets.newHashSet(Blocks.planks, Blocks.bookshelf, Blocks.log, Blocks.log2, Blocks.chest, Blocks.pumpkin, Blocks.lit_pumpkin); + private static final Set pickSet = Sets.newHashSet(Blocks.cobblestone, Blocks.double_stone_slab, Blocks.stone_slab, Blocks.stone, Blocks.sandstone, Blocks.mossy_cobblestone, Blocks.iron_ore, Blocks.iron_block, Blocks.coal_ore, Blocks.gold_block, Blocks.gold_ore, Blocks.diamond_ore, Blocks.diamond_block, Blocks.ice, Blocks.netherrack, Blocks.lapis_ore, Blocks.lapis_block, Blocks.redstone_ore, Blocks.lit_redstone_ore, Blocks.rail, Blocks.detector_rail, Blocks.golden_rail, Blocks.activator_rail); + private static final Set shovelSet = Sets.newHashSet(Blocks.grass, Blocks.dirt, Blocks.sand, Blocks.gravel, Blocks.snow_layer, Blocks.snow, Blocks.clay, Blocks.farmland, Blocks.soul_sand, Blocks.mycelium); + + private static final Set allSet = Sets.newHashSet(); + static{ + allSet.addAll(axeSet); + allSet.addAll(pickSet); + allSet.addAll(shovelSet); + } + + private String name; + private EnumRarity rarity; + private ItemStack repairItem; + private String oredictName; + + public ItemAllToolAA(ToolMaterial toolMat, ItemStack repairItem, String unlocalizedName, EnumRarity rarity){ + super(5.0F, toolMat, allSet); + + this.repairItem = repairItem; + this.name = unlocalizedName; + this.oredictName = unlocalizedName; + this.rarity = rarity; + + this.setMaxDamage(this.getMaxDamage()*4); + } + + @Override + public float func_150893_a(ItemStack stack, Block block){ + return block.getMaterial() != Material.iron && block.getMaterial() != Material.anvil && block.getMaterial() != Material.rock && block.getMaterial() != Material.wood && block.getMaterial() != Material.plants && block.getMaterial() != Material.vine ? super.func_150893_a(stack, block) : this.efficiencyOnProperMaterial; + } + + @Override + public boolean func_150897_b(Block block){ + return block == Blocks.snow_layer || block == Blocks.snow || (block == Blocks.obsidian ? this.toolMaterial.getHarvestLevel() == 3 : (block != Blocks.diamond_block && block != Blocks.diamond_ore ? (block != Blocks.emerald_ore && block != Blocks.emerald_block ? (block != Blocks.gold_block && block != Blocks.gold_ore ? (block != Blocks.iron_block && block != Blocks.iron_ore ? (block != Blocks.lapis_block && block != Blocks.lapis_ore ? (block != Blocks.redstone_ore && block != Blocks.lit_redstone_ore ? (block.getMaterial() == Material.rock || (block.getMaterial() == Material.iron || block.getMaterial() == Material.anvil)) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 1) : this.toolMaterial.getHarvestLevel() >= 1) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 2)); + } + + @Override + @SuppressWarnings("unchecked") + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld) { + if(KeyUtil.isShiftPressed()){ + list.add(StatCollector.translateToLocal("tooltip."+ModUtil.MOD_ID_LOWER+".paxel.desc")); + list.add(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + ".durability.desc") + ": " + (this.getMaxDamage()-this.getDamage(stack)) + "/" + this.getMaxDamage()); + } + else list.add(ItemUtil.shiftForInfo()); + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ){ + if (!player.canPlayerEdit(x, y, z, side, stack)) return false; + else{ + UseHoeEvent event = new UseHoeEvent(player, stack, world, x, y, z); + if(MinecraftForge.EVENT_BUS.post(event)) return false; + if(event.getResult() == Event.Result.ALLOW){ + stack.damageItem(1, player); + return true; + } + Block block = world.getBlock(x, y, z); + if(side != 0 && world.getBlock(x, y + 1, z).isAir(world, x, y + 1, z) && (block == Blocks.grass || block == Blocks.dirt)){ + Block block1 = Blocks.farmland; + world.playSoundEffect((double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float)z + 0.5F), block1.stepSound.getStepResourcePath(), (block1.stepSound.getVolume() + 1.0F) / 2.0F, block1.stepSound.getPitch() * 0.8F); + if (world.isRemote) return true; + else{ + world.setBlock(x, y, z, block1); + stack.damageItem(1, player); + return true; + } + } + else return false; + } + } + + @Override + public boolean getIsRepairable(ItemStack itemToRepair, ItemStack stack){ + return stack.getItem() == repairItem.getItem(); + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return this.rarity; + } + + @Override + public IIcon getIcon(ItemStack stack, int pass){ + return this.itemIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconReg){ + this.itemIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER + ":" + this.getName()); + } + + @Override + public String getName(){ + return name; + } + + @Override + public String getOredictName(){ + return oredictName; + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/nei/CoffeeMachineRecipeHandler.java b/src/main/java/ellpeck/actuallyadditions/nei/CoffeeMachineRecipeHandler.java new file mode 100644 index 000000000..7f21916a1 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/nei/CoffeeMachineRecipeHandler.java @@ -0,0 +1,152 @@ +package ellpeck.actuallyadditions.nei; + +import codechicken.lib.gui.GuiDraw; +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.RecipeInfo; +import codechicken.nei.recipe.TemplateRecipeHandler; +import ellpeck.actuallyadditions.inventory.gui.GuiCoffeeMachine; +import ellpeck.actuallyadditions.items.InitItems; +import ellpeck.actuallyadditions.items.ItemCoffee; +import ellpeck.actuallyadditions.items.metalists.TheMiscItems; +import ellpeck.actuallyadditions.util.ModUtil; +import ellpeck.actuallyadditions.util.StringUtil; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; +import org.lwjgl.opengl.GL11; + +import java.awt.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class CoffeeMachineRecipeHandler extends TemplateRecipeHandler{ + + public static final String NAME = "actuallyadditions.coffee"; + + public CoffeeMachineRecipeHandler(){ + super(); + RecipeInfo.setGuiOffset(this.getGuiClass(), 32, 3); + } + + public class CachedCoffee extends CachedRecipe{ + + public PositionedStack cup; + public PositionedStack coffeeBeans; + public PositionedStack result; + public PositionedStack ingredientStack; + public String extraText; + + public CachedCoffee(ItemCoffee.Ingredient ingredient){ + this.cup = new PositionedStack(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.CUP.ordinal()), 45, 39); + this.coffeeBeans = new PositionedStack(new ItemStack(InitItems.itemCoffeeBean), 2, 39); + this.ingredientStack = new PositionedStack(ingredient.ingredient, 90, 21); + this.setupResult(ingredient); + this.extraText = ingredient.getExtraText(); + } + + public void setupResult(ItemCoffee.Ingredient ingredient){ + ItemStack result = new ItemStack(InitItems.itemCoffee); + ItemCoffee.addEffectToStack(result, ingredient); + this.result = new PositionedStack(result.copy(), 45, 70); + } + + @Override + public List getIngredients(){ + ArrayList list = new ArrayList(); + list.add(this.ingredientStack); + list.add(this.cup); + list.add(this.coffeeBeans); + return list; + } + + @Override + public PositionedStack getResult(){ + return result; + } + } + + @Override + public int recipiesPerPage(){ + return 1; + } + + @Override + public void loadTransferRects(){ + transferRects.add(new RecipeTransferRect(new Rectangle(21, 39, 22, 16), NAME)); + transferRects.add(new RecipeTransferRect(new Rectangle(67, 42, 22, 10), NAME)); + } + + @Override + public Class getGuiClass(){ + return GuiCoffeeMachine.class; + } + + @Override + public String getRecipeName(){ + return StatCollector.translateToLocal("container.nei." + NAME + ".name"); + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results){ + if(outputId.equals(NAME) && getClass() == CoffeeMachineRecipeHandler.class){ + ArrayList ingredients = ItemCoffee.ingredients; + for(ItemCoffee.Ingredient ingredient : ingredients){ + arecipes.add(new CachedCoffee(ingredient)); + } + } + else super.loadCraftingRecipes(outputId, results); + } + + @Override + public void loadCraftingRecipes(ItemStack result){ + ArrayList ingredients = ItemCoffee.ingredients; + for(ItemCoffee.Ingredient ingredient : ingredients){ + if(result.getItem() instanceof ItemCoffee) arecipes.add(new CachedCoffee(ingredient)); + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient){ + + ArrayList ingredients = ItemCoffee.ingredients; + for(ItemCoffee.Ingredient ingr : ingredients){ + if(NEIServerUtils.areStacksSameTypeCrafting(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.CUP.ordinal()), ingredient) || NEIServerUtils.areStacksSameTypeCrafting(new ItemStack(InitItems.itemCoffeeBean), ingredient) || NEIServerUtils.areStacksSameTypeCrafting(ingr.ingredient, ingredient)){ + CachedCoffee theRecipe = new CachedCoffee(ingr); + theRecipe.setIngredientPermutation(Collections.singletonList(theRecipe.ingredientStack), ingredient); + arecipes.add(theRecipe); + } + } + } + + @Override + public String getGuiTexture(){ + return ModUtil.MOD_ID_LOWER + ":textures/gui/guiNEICoffeeMachine.png"; + } + + @Override + public void drawBackground(int recipeIndex){ + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GuiDraw.changeTexture(getGuiTexture()); + GuiDraw.drawTexturedModalRect(0, 0, 0, 0, 126, 88); + } + + @Override + public void drawExtras(int recipe){ + drawProgressBar(21, 39, 126, 0, 21, 16, 48, 0); + drawProgressBar(63, 42, 125, 16, 24, 12, 48, 2); + + CachedCoffee cache = (CachedCoffee)this.arecipes.get(recipe); + if(cache.extraText != null){ + GuiDraw.drawString(StatCollector.translateToLocal("container.nei." + ModUtil.MOD_ID_LOWER + ".coffee.special"), 2, 6, StringUtil.DECIMAL_COLOR_GRAY_TEXT, false); + GuiDraw.drawString(cache.extraText, 2, 18, StringUtil.DECIMAL_COLOR_GRAY_TEXT, false); + } + GuiDraw.drawString("[SHIFT]!", 1, 75, StringUtil.DECIMAL_COLOR_GRAY_TEXT, false); + } + + @Override + public String getOverlayIdentifier(){ + return NAME; + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/nei/CompostRecipeHandler.java b/src/main/java/ellpeck/actuallyadditions/nei/CompostRecipeHandler.java index 4111dbba9..4bb42739a 100644 --- a/src/main/java/ellpeck/actuallyadditions/nei/CompostRecipeHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/nei/CompostRecipeHandler.java @@ -19,7 +19,7 @@ import java.util.Collections; public class CompostRecipeHandler extends TemplateRecipeHandler{ - public static final String NAME = "compost"; + public static final String NAME = "actuallyadditions.compost"; public CompostRecipeHandler(){ super(); @@ -60,7 +60,7 @@ public class CompostRecipeHandler extends TemplateRecipeHandler{ @Override public String getRecipeName(){ - return StatCollector.translateToLocal("container." + ModUtil.MOD_ID_LOWER + ".nei." + NAME + ".name"); + return StatCollector.translateToLocal("container.nei." + NAME + ".name"); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/nei/CrusherRecipeHandler.java b/src/main/java/ellpeck/actuallyadditions/nei/CrusherRecipeHandler.java index bbb50f5c9..9680388bd 100644 --- a/src/main/java/ellpeck/actuallyadditions/nei/CrusherRecipeHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/nei/CrusherRecipeHandler.java @@ -5,7 +5,7 @@ import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.RecipeInfo; import codechicken.nei.recipe.TemplateRecipeHandler; -import ellpeck.actuallyadditions.inventory.GuiGrinder; +import ellpeck.actuallyadditions.inventory.gui.GuiGrinder; import ellpeck.actuallyadditions.recipe.GrinderRecipes; import ellpeck.actuallyadditions.util.ModUtil; import ellpeck.actuallyadditions.util.StringUtil; @@ -21,7 +21,7 @@ import java.util.List; public class CrusherRecipeHandler extends TemplateRecipeHandler{ - public static final String NAME = "crushing"; + public static final String NAME = "actuallyadditions.crushing"; public CrusherRecipeHandler(){ super(); @@ -78,7 +78,7 @@ public class CrusherRecipeHandler extends TemplateRecipeHandler{ @Override public String getRecipeName(){ - return StatCollector.translateToLocal("container." + ModUtil.MOD_ID_LOWER + ".nei." + NAME + ".name"); + return StatCollector.translateToLocal("container.nei." + NAME + ".name"); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/nei/HairyBallRecipeHandler.java b/src/main/java/ellpeck/actuallyadditions/nei/HairyBallRecipeHandler.java index 950afc0ef..1456c5a67 100644 --- a/src/main/java/ellpeck/actuallyadditions/nei/HairyBallRecipeHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/nei/HairyBallRecipeHandler.java @@ -19,7 +19,7 @@ import java.util.Collections; public class HairyBallRecipeHandler extends TemplateRecipeHandler{ - public static final String NAME = "ballOfHair"; + public static final String NAME = "actuallyadditions.ballOfHair"; public HairyBallRecipeHandler(){ super(); @@ -61,7 +61,7 @@ public class HairyBallRecipeHandler extends TemplateRecipeHandler{ @Override public String getRecipeName(){ - return StatCollector.translateToLocal("container." + ModUtil.MOD_ID_LOWER + ".nei." + NAME + ".name"); + return StatCollector.translateToLocal("container.nei." + NAME + ".name"); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/nei/NEIActuallyAdditionsConfig.java b/src/main/java/ellpeck/actuallyadditions/nei/NEIActuallyAdditionsConfig.java index 6a8ecaa91..a6ccb00a6 100644 --- a/src/main/java/ellpeck/actuallyadditions/nei/NEIActuallyAdditionsConfig.java +++ b/src/main/java/ellpeck/actuallyadditions/nei/NEIActuallyAdditionsConfig.java @@ -4,7 +4,7 @@ import codechicken.nei.api.API; import codechicken.nei.api.IConfigureNEI; import codechicken.nei.recipe.DefaultOverlayHandler; import ellpeck.actuallyadditions.blocks.InitBlocks; -import ellpeck.actuallyadditions.inventory.GuiCrafter; +import ellpeck.actuallyadditions.inventory.gui.GuiCrafter; import ellpeck.actuallyadditions.util.ModUtil; import ellpeck.actuallyadditions.util.Util; import net.minecraft.item.ItemStack; @@ -30,9 +30,14 @@ public class NEIActuallyAdditionsConfig implements IConfigureNEI{ API.registerRecipeHandler(compostRecipeHandler); API.registerUsageHandler(compostRecipeHandler); + CoffeeMachineRecipeHandler coffeeMachineRecipeHandler = new CoffeeMachineRecipeHandler(); + API.registerRecipeHandler(coffeeMachineRecipeHandler); + API.registerUsageHandler(coffeeMachineRecipeHandler); + API.hideItem(new ItemStack(InitBlocks.blockRice)); API.hideItem(new ItemStack(InitBlocks.blockCanola)); API.hideItem(new ItemStack(InitBlocks.blockFlax)); + API.hideItem(new ItemStack(InitBlocks.blockCoffee)); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/network/PacketHandler.java b/src/main/java/ellpeck/actuallyadditions/network/PacketHandler.java index 0884085e9..23daabe01 100644 --- a/src/main/java/ellpeck/actuallyadditions/network/PacketHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/network/PacketHandler.java @@ -3,6 +3,7 @@ package ellpeck.actuallyadditions.network; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; import cpw.mods.fml.relauncher.Side; +import ellpeck.actuallyadditions.network.gui.PacketGuiButton; import ellpeck.actuallyadditions.util.ModUtil; public class PacketHandler{ @@ -13,7 +14,7 @@ public class PacketHandler{ theNetwork = NetworkRegistry.INSTANCE.newSimpleChannel(ModUtil.MOD_ID_LOWER); theNetwork.registerMessage(PacketTileEntityFeeder.Handler.class, PacketTileEntityFeeder.class, 0, Side.CLIENT); - theNetwork.registerMessage(PacketInputterButton.Handler.class, PacketInputterButton.class, 1, Side.SERVER); + theNetwork.registerMessage(PacketGuiButton.Handler.class, PacketGuiButton.class, 1, Side.SERVER); theNetwork.registerMessage(PacketFluidCollectorToClient.Handler.class, PacketFluidCollectorToClient.class, 2, Side.CLIENT); } } diff --git a/src/main/java/ellpeck/actuallyadditions/network/PacketTileEntityFeeder.java b/src/main/java/ellpeck/actuallyadditions/network/PacketTileEntityFeeder.java index 5f172baca..94fc10258 100644 --- a/src/main/java/ellpeck/actuallyadditions/network/PacketTileEntityFeeder.java +++ b/src/main/java/ellpeck/actuallyadditions/network/PacketTileEntityFeeder.java @@ -6,7 +6,7 @@ import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import ellpeck.actuallyadditions.inventory.GuiFeeder; +import ellpeck.actuallyadditions.inventory.gui.GuiFeeder; import ellpeck.actuallyadditions.tile.TileEntityFeeder; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; diff --git a/src/main/java/ellpeck/actuallyadditions/network/gui/IButtonReactor.java b/src/main/java/ellpeck/actuallyadditions/network/gui/IButtonReactor.java new file mode 100644 index 000000000..6f67de9d6 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/network/gui/IButtonReactor.java @@ -0,0 +1,8 @@ +package ellpeck.actuallyadditions.network.gui; + +import net.minecraft.entity.player.EntityPlayer; + +public interface IButtonReactor{ + + void onButtonPressed(int buttonID, EntityPlayer player); +} diff --git a/src/main/java/ellpeck/actuallyadditions/network/PacketInputterButton.java b/src/main/java/ellpeck/actuallyadditions/network/gui/PacketGuiButton.java similarity index 66% rename from src/main/java/ellpeck/actuallyadditions/network/PacketInputterButton.java rename to src/main/java/ellpeck/actuallyadditions/network/gui/PacketGuiButton.java index 231201764..ace4444c7 100644 --- a/src/main/java/ellpeck/actuallyadditions/network/PacketInputterButton.java +++ b/src/main/java/ellpeck/actuallyadditions/network/gui/PacketGuiButton.java @@ -1,33 +1,35 @@ -package ellpeck.actuallyadditions.network; +package ellpeck.actuallyadditions.network.gui; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import ellpeck.actuallyadditions.tile.TileEntityInputter; import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; -public class PacketInputterButton implements IMessage{ +public class PacketGuiButton implements IMessage{ private int tileX; private int tileY; private int tileZ; private int worldID; private int buttonID; + private int playerID; @SuppressWarnings("unused") - public PacketInputterButton(){ + public PacketGuiButton(){ } - public PacketInputterButton(int x, int y, int z, World world, int buttonID){ + public PacketGuiButton(int x, int y, int z, World world, int buttonID, EntityPlayer player){ this.tileX = x; this.tileY = y; this.tileZ = z; this.worldID = world.provider.dimensionId; this.buttonID = buttonID; + this.playerID = player.getEntityId(); } @Override @@ -37,6 +39,7 @@ public class PacketInputterButton implements IMessage{ this.tileZ = buf.readInt(); this.worldID = buf.readInt(); this.buttonID = buf.readInt(); + this.playerID = buf.readInt(); } @Override @@ -46,18 +49,19 @@ public class PacketInputterButton implements IMessage{ buf.writeInt(this.tileZ); buf.writeInt(this.worldID); buf.writeInt(this.buttonID); + buf.writeInt(this.playerID); } - public static class Handler implements IMessageHandler{ + public static class Handler implements IMessageHandler{ @Override - public IMessage onMessage(PacketInputterButton message, MessageContext ctx){ + public IMessage onMessage(PacketGuiButton message, MessageContext ctx){ World world = DimensionManager.getWorld(message.worldID); TileEntity tile = world.getTileEntity(message.tileX, message.tileY, message.tileZ); - if(tile instanceof TileEntityInputter){ - TileEntityInputter inputter = (TileEntityInputter)tile; - inputter.onButtonPressed(message.buttonID); + if(tile instanceof IButtonReactor){ + IButtonReactor reactor = (IButtonReactor)tile; + reactor.onButtonPressed(message.buttonID, (EntityPlayer)world.getEntityByID(message.playerID)); } return null; diff --git a/src/main/java/ellpeck/actuallyadditions/proxy/ClientProxy.java b/src/main/java/ellpeck/actuallyadditions/proxy/ClientProxy.java index d304b006c..8c3ccc31d 100644 --- a/src/main/java/ellpeck/actuallyadditions/proxy/ClientProxy.java +++ b/src/main/java/ellpeck/actuallyadditions/proxy/ClientProxy.java @@ -8,9 +8,7 @@ import ellpeck.actuallyadditions.blocks.render.*; import ellpeck.actuallyadditions.config.values.ConfigBoolValues; import ellpeck.actuallyadditions.config.values.ConfigIntValues; import ellpeck.actuallyadditions.event.RenderPlayerEventAA; -import ellpeck.actuallyadditions.tile.TileEntityCompost; -import ellpeck.actuallyadditions.tile.TileEntityFishingNet; -import ellpeck.actuallyadditions.tile.TileEntityFurnaceSolar; +import ellpeck.actuallyadditions.tile.*; import ellpeck.actuallyadditions.update.UpdateChecker; import ellpeck.actuallyadditions.util.ModUtil; import ellpeck.actuallyadditions.util.Util; @@ -43,6 +41,12 @@ public class ClientProxy implements IProxy{ ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceSolar.class, new RenderTileEntity(new ModelFurnaceSolar())); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(InitBlocks.blockFurnaceSolar), new RenderItems(new ModelFurnaceSolar())); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoffeeMachine.class, new RenderTileEntity(new ModelCoffeeMachine())); + MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(InitBlocks.blockCoffeeMachine), new RenderItems(new ModelCoffeeMachine())); + + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPhantomBooster.class, new RenderTileEntity(new ModelPhantomBooster())); + MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(InitBlocks.blockPhantomBooster), new RenderItems(new ModelPhantomBooster())); + VillagerRegistry.instance().registerVillagerSkin(ConfigIntValues.JAM_VILLAGER_ID.getValue(), new ResourceLocation(ModUtil.MOD_ID_LOWER, "textures/entity/villager/jamVillager.png")); Util.registerEvent(new RenderPlayerEventAA()); diff --git a/src/main/java/ellpeck/actuallyadditions/recipe/FuelHandler.java b/src/main/java/ellpeck/actuallyadditions/recipe/FuelHandler.java index 8fe8d7311..9b10c7853 100644 --- a/src/main/java/ellpeck/actuallyadditions/recipe/FuelHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/recipe/FuelHandler.java @@ -19,6 +19,12 @@ public class FuelHandler implements IFuelHandler{ private static HashMap, Integer> fuelList = new HashMap, Integer>(); + public static void setFuelValues(){ + addFuel(InitItems.itemMisc, TheMiscItems.TINY_CHAR.ordinal(), 200); + addFuel(InitItems.itemMisc, TheMiscItems.TINY_COAL.ordinal(), 200); + addFuel(InitBlocks.blockMisc, TheMiscBlocks.CHARCOAL_BLOCK.ordinal(), 16000); + } + public static void init(){ Util.logInfo("Initializing Fuelstuffs..."); @@ -31,28 +37,14 @@ public class FuelHandler implements IFuelHandler{ return getFuelValue(fuel); } - public static void setFuelValues(){ - addFuel(InitItems.itemMisc, TheMiscItems.TINY_CHAR.ordinal(), 200); - addFuel(InitItems.itemMisc, TheMiscItems.TINY_COAL.ordinal(), 200); - addFuel(InitBlocks.blockMisc, TheMiscBlocks.CHARCOAL_BLOCK.ordinal(), 16000); - } - private static void addFuel(Item item, int metadata, int value){ fuelList.put(Pair.of(item, metadata), value); } - private static void addFuel(Item item, int value){ - addFuel(item, 0, value); - } - private static void addFuel(Block block, int metadata, int value){ addFuel(Item.getItemFromBlock(block), metadata, value); } - private static void addFuel(Block block, int value){ - addFuel(Item.getItemFromBlock(block), 0, value); - } - private static int getFuelValue(ItemStack stack){ if(stack != null && stack.getItem() != null){ Pair pair = Pair.of(stack.getItem(), stack.getItemDamage()); diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java index 3fa3d43dc..b65949634 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java @@ -39,6 +39,7 @@ public class TileEntityBase extends TileEntity{ GameRegistry.registerTileEntity(TileEntityFluidCollector.class, ModUtil.MOD_ID_LOWER + ":tileEntityFluidCollector"); GameRegistry.registerTileEntity(TileEntityFluidCollector.TileEntityFluidPlacer.class, ModUtil.MOD_ID_LOWER + ":tileEntityFluidPlacer"); GameRegistry.registerTileEntity(TileEntityLavaFactoryController.class, ModUtil.MOD_ID_LOWER + ":tileEntityLavaFactoryController"); + GameRegistry.registerTileEntity(TileEntityCoffeeMachine.class, ModUtil.MOD_ID_LOWER + ":tileEntityCoffeeMachine"); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBreaker.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBreaker.java index 2c6e8e5ef..8f0d2c28a 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBreaker.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBreaker.java @@ -39,15 +39,6 @@ public class TileEntityBreaker extends TileEntityInventoryBase{ @SuppressWarnings("unchecked") public void updateEntity(){ if(!worldObj.isRemote){ - - //TODO Remove after some Updating - if(this.isPlacer && this.getClass() != TileEntityPlacer.class){ - ItemStack[] theSlots = this.slots.clone(); - worldObj.removeTileEntity(xCoord, yCoord, zCoord); - worldObj.setTileEntity(xCoord, yCoord, zCoord, new TileEntityPlacer()); - ((TileEntityPlacer)worldObj.getTileEntity(xCoord, yCoord, zCoord)).slots = theSlots.clone(); - } - if(!worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)){ if(this.currentTime > 0){ this.currentTime--; diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCanolaPress.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCanolaPress.java index 757fb4e5b..195384333 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCanolaPress.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCanolaPress.java @@ -17,7 +17,7 @@ import net.minecraftforge.fluids.*; public class TileEntityCanolaPress extends TileEntityInventoryBase implements IEnergyReceiver, IFluidHandler{ - public EnergyStorage storage = new EnergyStorage(40000, energyUsedPerTick+50); + public EnergyStorage storage = new EnergyStorage(40000); public FluidTank tank = new FluidTank(2*FluidContainerRegistry.BUCKET_VOLUME); diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCoalGenerator.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCoalGenerator.java index 18ba7ffb8..03f242f1e 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCoalGenerator.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCoalGenerator.java @@ -13,7 +13,7 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityCoalGenerator extends TileEntityInventoryBase implements IEnergyProvider{ - public EnergyStorage storage = new EnergyStorage(60000, energyProducedPerTick+50); + public EnergyStorage storage = new EnergyStorage(60000); public static int energyProducedPerTick = ConfigIntValues.COAL_GEN_ENERGY_PRODUCED.getValue(); @@ -34,10 +34,11 @@ public class TileEntityCoalGenerator extends TileEntityInventoryBase implements this.storage.receiveEnergy(energyProducedPerTick, false); } - if(energyProducedPerTick*100 <= this.getMaxEnergyStored(ForgeDirection.UNKNOWN)-this.getEnergyStored(ForgeDirection.UNKNOWN)){ - if(this.currentBurnTime <= 0 && this.slots[0] != null && TileEntityFurnace.getItemBurnTime(this.slots[0]) > 0){ - this.maxBurnTime = TileEntityFurnace.getItemBurnTime(this.slots[0]); - this.currentBurnTime = this.maxBurnTime; + if(this.currentBurnTime <= 0 && this.slots[0] != null && TileEntityFurnace.getItemBurnTime(this.slots[0]) > 0){ + int burnTime = TileEntityFurnace.getItemBurnTime(this.slots[0]); + if(energyProducedPerTick*burnTime <= this.getMaxEnergyStored(ForgeDirection.UNKNOWN)-this.getEnergyStored(ForgeDirection.UNKNOWN)){ + this.maxBurnTime = burnTime; + this.currentBurnTime = burnTime; this.slots[0].stackSize--; if(this.slots[0].stackSize == 0) this.slots[0] = this.slots[0].getItem().getContainerItem(this.slots[0]); } diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCoffeeMachine.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCoffeeMachine.java new file mode 100644 index 000000000..10cd318e3 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCoffeeMachine.java @@ -0,0 +1,169 @@ +package ellpeck.actuallyadditions.tile; + +import cofh.api.energy.EnergyStorage; +import cofh.api.energy.IEnergyReceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.config.values.ConfigIntValues; +import ellpeck.actuallyadditions.items.InitItems; +import ellpeck.actuallyadditions.items.ItemCoffee; +import ellpeck.actuallyadditions.items.metalists.TheMiscItems; +import ellpeck.actuallyadditions.network.gui.IButtonReactor; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityCoffeeMachine extends TileEntityInventoryBase implements IButtonReactor, IEnergyReceiver{ + + public static final int SLOT_COFFEE_BEANS = 0; + public static final int SLOT_INPUT = 1; + public static final int SLOT_OUTPUT = 2; + + public EnergyStorage storage = new EnergyStorage(300000); + + public static int energyUsePerTick = ConfigIntValues.COFFEE_MACHINE_ENERGY_USED.getValue(); + + public final int coffeeCacheMaxAmount = 300; + public final int coffeeCacheAddPerItem = ConfigIntValues.COFFEE_CACHE_ADDED_PER_ITEM.getValue(); + public final int coffeeCacheUsePerItem = ConfigIntValues.COFFEE_CACHE_USED_PER_ITEM.getValue(); + public int coffeeCacheAmount; + + public final int maxBrewTime = ConfigIntValues.COFFEE_MACHINE_TIME_USED.getValue(); + public int brewTime; + + public TileEntityCoffeeMachine(){ + super(11, "coffeeMachine"); + } + + @Override + public void updateEntity(){ + if(!worldObj.isRemote){ + this.storeCoffee(); + + if(this.brewTime > 0 || worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)){ + this.brew(); + } + } + } + + public void storeCoffee(){ + if(this.slots[SLOT_COFFEE_BEANS] != null && this.slots[SLOT_COFFEE_BEANS].getItem() == InitItems.itemCoffeeBean){ + if(this.coffeeCacheAddPerItem <= this.coffeeCacheMaxAmount-this.coffeeCacheAmount){ + this.slots[SLOT_COFFEE_BEANS].stackSize--; + if(this.slots[SLOT_COFFEE_BEANS].stackSize <= 0) this.slots[SLOT_COFFEE_BEANS] = null; + this.coffeeCacheAmount += this.coffeeCacheAddPerItem; + } + } + } + + public void brew(){ + if(!worldObj.isRemote){ + if(this.slots[SLOT_INPUT] != null && this.slots[SLOT_INPUT].getItem() == InitItems.itemMisc && this.slots[SLOT_INPUT].getItemDamage() == TheMiscItems.CUP.ordinal() && this.slots[SLOT_OUTPUT] == null && this.storage.getEnergyStored() >= energyUsePerTick && this.coffeeCacheAmount >= this.coffeeCacheUsePerItem){ + this.brewTime++; + if(this.brewTime >= this.maxBrewTime){ + this.brewTime = 0; + ItemStack output = new ItemStack(InitItems.itemCoffee); + while(getFirstAvailIngredient() > 0){ + int ingr = this.getFirstAvailIngredient(); + ItemCoffee.Ingredient ingredient = ItemCoffee.getIngredientFromStack(this.slots[ingr]); + if(ingredient != null){ + ingredient.effect(output); + } + this.slots[ingr].stackSize--; + if(this.slots[ingr].stackSize <= 0) this.slots[ingr] = this.slots[ingr].getItem().getContainerItem(this.slots[ingr]); + } + this.slots[SLOT_OUTPUT] = output.copy(); + this.slots[SLOT_INPUT].stackSize--; + if(this.slots[SLOT_INPUT].stackSize <= 0) this.slots[SLOT_INPUT] = null; + this.coffeeCacheAmount -= this.coffeeCacheUsePerItem; + } + } + else this.brewTime = 0; + + if(this.brewTime > 0) this.storage.extractEnergy(energyUsePerTick, false); + } + } + + public int getFirstAvailIngredient(){ + for(int i = 3; i < this.slots.length; i++){ + if(this.slots[i] != null && this.slots[i].stackSize == 1 && ItemCoffee.getIngredientFromStack((this.slots[i])) != null){ + return i; + } + } + return 0; + } + + @SideOnly(Side.CLIENT) + public int getCoffeeScaled(int i){ + return this.coffeeCacheAmount * i / this.coffeeCacheMaxAmount; + } + + @SideOnly(Side.CLIENT) + public int getEnergyScaled(int i){ + return this.getEnergyStored(ForgeDirection.UNKNOWN) * i / this.getMaxEnergyStored(ForgeDirection.UNKNOWN); + } + + @SideOnly(Side.CLIENT) + public int getBrewScaled(int i){ + return this.brewTime * i / this.maxBrewTime; + } + + @Override + public void writeToNBT(NBTTagCompound compound){ + super.writeToNBT(compound); + this.storage.writeToNBT(compound); + compound.setInteger("Cache", this.coffeeCacheAmount); + compound.setInteger("Time", this.brewTime); + } + + @Override + public void readFromNBT(NBTTagCompound compound){ + super.readFromNBT(compound); + this.storage.readFromNBT(compound); + this.coffeeCacheAmount = compound.getInteger("Cache"); + this.brewTime = compound.getInteger("Time"); + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack){ + return (i >= 3 && ItemCoffee.getIngredientFromStack(stack) != null && (this.slots[i] == null || this.slots[i].stackSize < 1)) || (i == SLOT_COFFEE_BEANS && stack.getItem() == InitItems.itemCoffeeBean) || (i == SLOT_INPUT && stack.getItem() == InitItems.itemMisc && stack.getItemDamage() == TheMiscItems.CUP.ordinal()); + } + + @Override + public boolean canInsertItem(int slot, ItemStack stack, int side){ + return this.isItemValidForSlot(slot, stack); + } + + @Override + public boolean canExtractItem(int slot, ItemStack stack, int side){ + return slot == SLOT_OUTPUT || (slot >= 3 && ItemCoffee.getIngredientFromStack(stack) == null); + } + + @Override + public void onButtonPressed(int buttonID, EntityPlayer player){ + if(buttonID == 0 && this.brewTime <= 0){ + this.brew(); + } + } + + @Override + public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate){ + return this.storage.receiveEnergy(maxReceive, simulate); + } + + @Override + public int getEnergyStored(ForgeDirection from){ + return this.storage.getEnergyStored(); + } + + @Override + public int getMaxEnergyStored(ForgeDirection from){ + return this.storage.getMaxEnergyStored(); + } + + @Override + public boolean canConnectEnergy(ForgeDirection from){ + return true; + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFermentingBarrel.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFermentingBarrel.java index 18d3315ce..3198d74c1 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFermentingBarrel.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFermentingBarrel.java @@ -101,7 +101,7 @@ public class TileEntityFermentingBarrel extends TileEntityInventoryBase implemen @Override public boolean isItemValidForSlot(int i, ItemStack stack){ - return (i == 0 && FluidContainerRegistry.containsFluid(this.slots[0], new FluidStack(InitBlocks.fluidCanolaOil, FluidContainerRegistry.BUCKET_VOLUME))) || (i == 2 && stack.getItem() == Items.bucket); + return (i == 0 && FluidContainerRegistry.containsFluid(stack, new FluidStack(InitBlocks.fluidCanolaOil, FluidContainerRegistry.BUCKET_VOLUME))) || (i == 2 && stack.getItem() == Items.bucket); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFluidCollector.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFluidCollector.java index 79550c999..9e51d1ce4 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFluidCollector.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFluidCollector.java @@ -49,12 +49,12 @@ public class TileEntityFluidCollector extends TileEntityInventoryBase implements @Override public boolean canFill(ForgeDirection from, Fluid fluid){ - return this.isPlacer && from != ForgeDirection.DOWN; + return this.isPlacer; } @Override public boolean canDrain(ForgeDirection from, Fluid fluid){ - return !this.isPlacer && from != ForgeDirection.UP; + return !this.isPlacer; } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceDouble.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceDouble.java index 05bd9747c..1c30689b2 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceDouble.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceDouble.java @@ -17,7 +17,7 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements public static final int SLOT_INPUT_2 = 2; public static final int SLOT_OUTPUT_2 = 3; - public EnergyStorage storage = new EnergyStorage(30000, energyUsePerTick+30); + public EnergyStorage storage = new EnergyStorage(30000); public static int energyUsePerTick = ConfigIntValues.FURNACE_ENERGY_USED.getValue(); diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceSolar.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceSolar.java index 236cd7dc7..14292535c 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceSolar.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceSolar.java @@ -29,7 +29,7 @@ public class TileEntityFurnaceSolar extends TileEntityBase implements IEnergyPro return from != ForgeDirection.UP; } - public EnergyStorage storage = new EnergyStorage(30000, energyProducedPerTick+50); + public EnergyStorage storage = new EnergyStorage(30000); public static int energyProducedPerTick = ConfigIntValues.FURNACE_SOLAR_ENERGY_PRODUCED.getValue(); diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGrinder.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGrinder.java index a62170ef3..19d4fcf0c 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGrinder.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGrinder.java @@ -14,7 +14,7 @@ import java.util.Random; public class TileEntityGrinder extends TileEntityInventoryBase implements IEnergyReceiver{ - public EnergyStorage storage = new EnergyStorage(60000, energyUsePerTick+20); + public EnergyStorage storage = new EnergyStorage(60000); @Override public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate){ @@ -78,15 +78,6 @@ public class TileEntityGrinder extends TileEntityInventoryBase implements IEnerg @SuppressWarnings("unchecked") public void updateEntity(){ if(!worldObj.isRemote){ - - //TODO Remove after some Updating - if(this.isDouble && this.getClass() != TileEntityGrinderDouble.class){ - ItemStack[] theSlots = this.slots.clone(); - worldObj.removeTileEntity(xCoord, yCoord, zCoord); - worldObj.setTileEntity(xCoord, yCoord, zCoord, new TileEntityGrinderDouble()); - ((TileEntityGrinderDouble)worldObj.getTileEntity(xCoord, yCoord, zCoord)).slots = theSlots.clone(); - } - boolean canCrushOnFirst = this.canCrushOn(SLOT_INPUT_1, SLOT_OUTPUT_1_1, SLOT_OUTPUT_1_2); boolean canCrushOnSecond = false; if(this.isDouble) canCrushOnSecond = this.canCrushOn(SLOT_INPUT_2, SLOT_OUTPUT_2_1, SLOT_OUTPUT_2_2); diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityHeatCollector.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityHeatCollector.java index de73f6523..c383a7837 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityHeatCollector.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityHeatCollector.java @@ -17,7 +17,7 @@ public class TileEntityHeatCollector extends TileEntityBase implements IEnergyPr private int randomChance = ConfigIntValues.HEAT_COLLECTOR_LAVA_CHANCE.getValue(); private int blocksNeeded = ConfigIntValues.HEAT_COLLECTOR_BLOCKS.getValue(); - public EnergyStorage storage = new EnergyStorage(30000, energyProducedPerTick+50); + public EnergyStorage storage = new EnergyStorage(30000); public static int energyProducedPerTick = ConfigIntValues.HEAT_COLLECTOR_ENERGY_PRODUCED.getValue(); diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInputter.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInputter.java index 7cb0f5ff6..7f8e91165 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInputter.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInputter.java @@ -1,25 +1,30 @@ package ellpeck.actuallyadditions.tile; +import ellpeck.actuallyadditions.network.gui.IButtonReactor; import ellpeck.actuallyadditions.util.WorldUtil; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -public class TileEntityInputter extends TileEntityInventoryBase{ +public class TileEntityInputter extends TileEntityInventoryBase implements IButtonReactor{ public static class TileEntityInputterAdvanced extends TileEntityInputter{ public TileEntityInputterAdvanced(){ - super(13, "inputterAdvanced"); + super(25, "inputterAdvanced"); this.isAdvanced = true; } } - public static final int PUT_FILTER_START = 1; - public static final int PULL_FILTER_START = 7; + public static final int PUT_FILTER_START = 13; + public static final int PULL_FILTER_START = 1; + + public static final int WHITELIST_PULL_BUTTON_ID = 87; + public static final int WHITELIST_PUT_BUTTON_ID = 88; public int sideToPut = -1; public int slotToPut = -1; @@ -33,6 +38,9 @@ public class TileEntityInputter extends TileEntityInventoryBase{ public boolean isAdvanced; + public boolean isPullWhitelist = true; + public boolean isPutWhitelist = true; + public TileEntityInputter(int slots, String name){ super(slots, name); } @@ -45,15 +53,6 @@ public class TileEntityInputter extends TileEntityInventoryBase{ @Override public void updateEntity(){ if(!worldObj.isRemote){ - - //TODO Remove after some Updating - if(this.isAdvanced && this.getClass() != TileEntityInputterAdvanced.class){ - ItemStack[] theSlots = this.slots.clone(); - worldObj.removeTileEntity(xCoord, yCoord, zCoord); - worldObj.setTileEntity(xCoord, yCoord, zCoord, new TileEntityInputterAdvanced()); - ((TileEntityInputterAdvanced)worldObj.getTileEntity(xCoord, yCoord, zCoord)).slots = theSlots.clone(); - } - this.initVars(); if(!worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)){ @@ -80,7 +79,7 @@ public class TileEntityInputter extends TileEntityInventoryBase{ if(tempStack.getMaxStackSize() < this.getInventoryStackLimit()) maxSize = tempStack.getMaxStackSize(); else maxSize = this.getInventoryStackLimit(); } - if(tempStack != null && (this.slots[0] == null || (tempStack.isItemEqual(this.slots[0]) && this.slots[0].stackSize < maxSize)) && this.checkFilters(tempStack, true)){ + if(tempStack != null && (this.slots[0] == null || (tempStack.isItemEqual(this.slots[0]) && this.slots[0].stackSize < maxSize)) && this.checkFilters(tempStack, true, isPullWhitelist)){ if(theSided != null){ for(int j = 0; j < 5; j++){ if(theSided.canExtractItem(i, tempStack, j)){ @@ -138,7 +137,7 @@ public class TileEntityInputter extends TileEntityInventoryBase{ if(tempStack.getMaxStackSize() < theInventory.getInventoryStackLimit()) maxSize = tempStack.getMaxStackSize(); else maxSize = theInventory.getInventoryStackLimit(); } - if((tempStack == null || (theInventory.isItemValidForSlot(i, this.slots[0]) && tempStack.isItemEqual(this.slots[0]) && tempStack.stackSize < maxSize)) && this.checkFilters(this.slots[0], false)){ + if((tempStack == null || (theInventory.isItemValidForSlot(i, this.slots[0]) && tempStack.isItemEqual(this.slots[0]) && tempStack.stackSize < maxSize)) && this.checkFilters(this.slots[0], false, isPutWhitelist)){ if(theSided != null){ for(int j = 0; j < 5; j++){ if(theSided.canInsertItem(i, this.slots[0], j)){ @@ -182,16 +181,16 @@ public class TileEntityInputter extends TileEntityInventoryBase{ } } - public boolean checkFilters(ItemStack stack, boolean isPull){ + public boolean checkFilters(ItemStack stack, boolean isPull, boolean isWhitelist){ if(!this.isAdvanced) return true; int slotStart = isPull ? PULL_FILTER_START : PUT_FILTER_START; - int slotStop = slotStart+6; + int slotStop = slotStart+12; for(int i = slotStart; i < slotStop; i++){ - if(this.slots[i] != null && this.slots[i].isItemEqual(stack)) return true; + if(this.slots[i] != null && this.slots[i].isItemEqual(stack)) return isWhitelist; } - return false; + return !isWhitelist; } public void initVars(){ @@ -216,7 +215,17 @@ public class TileEntityInputter extends TileEntityInventoryBase{ } } - public void onButtonPressed(int buttonID){ + @Override + public void onButtonPressed(int buttonID, EntityPlayer player){ + if(buttonID == WHITELIST_PULL_BUTTON_ID){ + this.isPullWhitelist = !this.isPullWhitelist; + return; + } + if(buttonID == WHITELIST_PUT_BUTTON_ID){ + this.isPutWhitelist = !this.isPutWhitelist; + return; + } + if(buttonID == 0) this.sideToPut++; if(buttonID == 1) this.sideToPut--; if(buttonID == 2) this.slotToPut++; @@ -244,6 +253,8 @@ public class TileEntityInputter extends TileEntityInventoryBase{ compound.setInteger("SlotToPut", this.slotToPut); compound.setInteger("SideToPull", this.sideToPull); compound.setInteger("SlotToPull", this.slotToPull); + compound.setBoolean("PullWhitelist", this.isPullWhitelist); + compound.setBoolean("PutWhitelist", this.isPutWhitelist); } @Override @@ -252,6 +263,8 @@ public class TileEntityInputter extends TileEntityInventoryBase{ this.slotToPut = compound.getInteger("SlotToPut"); this.sideToPull = compound.getInteger("SideToPull"); this.slotToPull = compound.getInteger("SlotToPull"); + this.isPullWhitelist = compound.getBoolean("PullWhitelist"); + this.isPutWhitelist = compound.getBoolean("PutWhitelist"); super.readFromNBT(compound); } diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityItemRepairer.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityItemRepairer.java index b51bee937..05dddf589 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityItemRepairer.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityItemRepairer.java @@ -14,7 +14,7 @@ public class TileEntityItemRepairer extends TileEntityInventoryBase implements I public static final int SLOT_INPUT = 0; public static final int SLOT_OUTPUT = 1; - public EnergyStorage storage = new EnergyStorage(300000, energyUsePerTick+100); + public EnergyStorage storage = new EnergyStorage(300000); private final int speedSlowdown = ConfigIntValues.REPAIRER_SPEED_SLOWDOWN.getValue(); diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityLavaFactoryController.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityLavaFactoryController.java index 22bdcab53..339fab3b8 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityLavaFactoryController.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityLavaFactoryController.java @@ -13,7 +13,7 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityLavaFactoryController extends TileEntityBase implements IEnergyReceiver{ - public EnergyStorage storage = new EnergyStorage(3000000, energyNeededToProduceLava*2); + public EnergyStorage storage = new EnergyStorage(3000000); public static int energyNeededToProduceLava = ConfigIntValues.LAVA_FACTORY_ENERGY_USED.getValue(); diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityOilGenerator.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityOilGenerator.java index e69445a7a..a8218c9d3 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityOilGenerator.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityOilGenerator.java @@ -15,7 +15,7 @@ import net.minecraftforge.fluids.*; public class TileEntityOilGenerator extends TileEntityInventoryBase implements IEnergyProvider, IFluidHandler{ - public EnergyStorage storage = new EnergyStorage(30000, energyProducedPerTick+50); + public EnergyStorage storage = new EnergyStorage(30000); public FluidTank tank = new FluidTank(2*FluidContainerRegistry.BUCKET_VOLUME); @@ -40,7 +40,7 @@ public class TileEntityOilGenerator extends TileEntityInventoryBase implements I this.storage.receiveEnergy(energyProducedPerTick, false); } - if(energyProducedPerTick*this.maxBurnTime/2 <= this.getMaxEnergyStored(ForgeDirection.UNKNOWN)-this.getEnergyStored(ForgeDirection.UNKNOWN)){ + if(energyProducedPerTick*this.maxBurnTime <= this.getMaxEnergyStored(ForgeDirection.UNKNOWN)-this.getEnergyStored(ForgeDirection.UNKNOWN)){ if(this.currentBurnTime <= 0 && this.tank.getFluidAmount() >= this.fuelUsedPerBurnup){ this.currentBurnTime = this.maxBurnTime; this.tank.drain(this.fuelUsedPerBurnup, true); @@ -102,7 +102,7 @@ public class TileEntityOilGenerator extends TileEntityInventoryBase implements I @Override public boolean isItemValidForSlot(int i, ItemStack stack){ - return FluidContainerRegistry.containsFluid(this.slots[0], new FluidStack(InitBlocks.fluidOil, FluidContainerRegistry.BUCKET_VOLUME)) && i == 0; + return FluidContainerRegistry.containsFluid(stack, new FluidStack(InitBlocks.fluidOil, FluidContainerRegistry.BUCKET_VOLUME)) && i == 0; } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPhantomBooster.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPhantomBooster.java new file mode 100644 index 000000000..536335006 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPhantomBooster.java @@ -0,0 +1,5 @@ +package ellpeck.actuallyadditions.tile; + +public class TileEntityPhantomBooster extends TileEntityBase{ + +} diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPhantomPlacer.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPhantomPlacer.java index f5ebc4f3b..3f826e385 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPhantomPlacer.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPhantomPlacer.java @@ -29,7 +29,8 @@ public class TileEntityPhantomPlacer extends TileEntityInventoryBase{ public int currentTime; public final int timeNeeded = ConfigIntValues.PHANTOM_PLACER_TIME.getValue(); - public final int range = ConfigIntValues.PHANTOM_PLACER_RANGE.getValue(); + public final int defaultRange = ConfigIntValues.PHANTOM_PLACER_RANGE.getValue(); + public int range; public boolean isBreaker; @@ -45,6 +46,7 @@ public class TileEntityPhantomPlacer extends TileEntityInventoryBase{ @Override public void updateEntity(){ if(!worldObj.isRemote){ + this.range = TileEntityPhantomface.upgradeRange(defaultRange, worldObj, xCoord, yCoord, zCoord); if(!this.hasBoundPosition()){ this.boundPosition = null; @@ -134,6 +136,7 @@ public class TileEntityPhantomPlacer extends TileEntityInventoryBase{ if(x != 0 && y != 0 && z != 0){ this.boundPosition = new ChunkCoordinates(x, y, z); this.boundWorld = DimensionManager.getWorld(compound.getInteger("WorldOfTileStored")); + this.markDirty(); } } diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPhantomface.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPhantomface.java index aea8715ae..e9c031d52 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPhantomface.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPhantomface.java @@ -4,14 +4,17 @@ import cofh.api.energy.IEnergyHandler; import cofh.api.energy.IEnergyProvider; import cofh.api.energy.IEnergyReceiver; import ellpeck.actuallyadditions.blocks.BlockPhantomface; +import ellpeck.actuallyadditions.blocks.InitBlocks; import ellpeck.actuallyadditions.config.values.ConfigIntValues; import ellpeck.actuallyadditions.util.WorldUtil; +import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.util.ForgeDirection; @@ -22,25 +25,43 @@ import net.minecraftforge.fluids.IFluidHandler; public class TileEntityPhantomface extends TileEntityInventoryBase{ - public TileEntity boundTile; + public ChunkCoordinates boundPosition; + public World boundWorld; public int type; - public final int range = ConfigIntValues.PHANTOMFACE_RANGE.getValue(); + public final int defaultRange = ConfigIntValues.PHANTOMFACE_RANGE.getValue(); + public int range; public TileEntityPhantomface(String name){ super(0, name); } - public boolean canConnectTo(TileEntity tile){ - return false; + public static int upgradeRange(int defaultRange, World world, int x, int y, int z){ + int newRange = defaultRange; + for(int i = 0; i < 3; i++){ + Block block = world.getBlock(x, y+1+i, z); + if(block == InitBlocks.blockPhantomBooster) newRange = newRange*2; + else break; + } + return newRange; + } + + public static void updateAround(TileEntity tile){ + tile.getWorldObj().markBlockForUpdate(tile.xCoord+1, tile.yCoord, tile.zCoord); + tile.getWorldObj().markBlockForUpdate(tile.xCoord-1, tile.yCoord, tile.zCoord); + tile.getWorldObj().markBlockForUpdate(tile.xCoord, tile.yCoord+1, tile.zCoord); + tile.getWorldObj().markBlockForUpdate(tile.xCoord, tile.yCoord-1, tile.zCoord); + tile.getWorldObj().markBlockForUpdate(tile.xCoord, tile.yCoord, tile.zCoord+1); + tile.getWorldObj().markBlockForUpdate(tile.xCoord, tile.yCoord, tile.zCoord-1); + tile.markDirty(); } public boolean isBoundTileInRage(){ if(this.hasBoundTile()){ - int xDif = this.boundTile.xCoord-this.xCoord; - int yDif = this.boundTile.yCoord-this.yCoord; - int zDif = this.boundTile.zCoord-this.zCoord; + int xDif = this.boundPosition.posX-this.xCoord; + int yDif = this.boundPosition.posY-this.yCoord; + int zDif = this.boundPosition.posZ-this.zCoord; if(xDif >= -this.range && xDif <= this.range){ if(yDif >= -this.range && yDif <= this.range){ @@ -54,34 +75,23 @@ public class TileEntityPhantomface extends TileEntityInventoryBase{ @Override public void updateEntity(){ if(!worldObj.isRemote){ + this.range = upgradeRange(defaultRange, worldObj, xCoord, yCoord, zCoord); - //TODO Remove after some Updating - if(this.type == BlockPhantomface.FACE && this.getClass() != TileEntityPhantomItemface.class){ - ItemStack[] theSlots = this.slots.clone(); - worldObj.removeTileEntity(xCoord, yCoord, zCoord); - worldObj.setTileEntity(xCoord, yCoord, zCoord, new TileEntityPhantomItemface()); - ((TileEntityPhantomItemface)worldObj.getTileEntity(xCoord, yCoord, zCoord)).slots = theSlots.clone(); - } - - if(!this.hasBoundTile()) this.boundTile = null; - - if(this.tempX > 0 || this.tempY > 0 || this.tempZ > 0){ - this.boundTile = tempWorld.getTileEntity(tempX, tempY, tempZ); - this.tempX = 0; - this.tempY = 0; - this.tempZ = 0; - this.tempWorld = null; + if(!this.hasBoundTile()){ + this.boundPosition = null; + this.boundWorld = null; } } } public boolean hasBoundTile(){ - if(this.boundTile != null){ - if(this.xCoord == this.boundTile.xCoord && this.yCoord == this.boundTile.yCoord && this.zCoord == this.boundTile.zCoord && this.worldObj == this.boundTile.getWorldObj()){ - this.boundTile = null; + if(this.boundPosition != null && this.boundWorld != null){ + if(this.boundWorld.getTileEntity(boundPosition.posX, boundPosition.posY, boundPosition.posZ) instanceof TileEntityPhantomface || (this.xCoord == this.boundPosition.posX && this.yCoord == this.boundPosition.posY && this.zCoord == this.boundPosition.posZ && this.worldObj == this.boundWorld)){ + this.boundPosition = null; + this.boundWorld = null; return false; } - return boundTile.getWorldObj().getTileEntity(boundTile.xCoord, boundTile.yCoord, boundTile.zCoord) == boundTile && boundTile.getWorldObj() == this.worldObj; + return this.boundWorld == this.worldObj; } return false; } @@ -90,25 +100,24 @@ public class TileEntityPhantomface extends TileEntityInventoryBase{ public void writeToNBT(NBTTagCompound compound){ super.writeToNBT(compound); if(this.hasBoundTile()){ - compound.setInteger("XCoordOfTileStored", boundTile.xCoord); - compound.setInteger("YCoordOfTileStored", boundTile.yCoord); - compound.setInteger("ZCoordOfTileStored", boundTile.zCoord); - compound.setInteger("WorldOfTileStored", boundTile.getWorldObj().provider.dimensionId); + compound.setInteger("XCoordOfTileStored", boundPosition.posX); + compound.setInteger("YCoordOfTileStored", boundPosition.posY); + compound.setInteger("ZCoordOfTileStored", boundPosition.posZ); + compound.setInteger("WorldOfTileStored", boundWorld.provider.dimensionId); } } - public int tempX; - public int tempY; - public int tempZ; - public World tempWorld; - @Override public void readFromNBT(NBTTagCompound compound){ super.readFromNBT(compound); - this.tempX = compound.getInteger("XCoordOfTileStored"); - this.tempY = compound.getInteger("YCoordOfTileStored"); - this.tempZ = compound.getInteger("ZCoordOfTileStored"); - this.tempWorld = DimensionManager.getWorld(compound.getInteger("WorldOfTileStored")); + int x = compound.getInteger("XCoordOfTileStored"); + int y = compound.getInteger("YCoordOfTileStored"); + int z = compound.getInteger("ZCoordOfTileStored"); + if(x != 0 && y != 0 && z != 0){ + this.boundPosition = new ChunkCoordinates(x, y, z); + this.boundWorld = DimensionManager.getWorld(compound.getInteger("WorldOfTileStored")); + this.markDirty(); + } } @Override @@ -133,7 +142,7 @@ public class TileEntityPhantomface extends TileEntityInventoryBase{ super.updateEntity(); if(!worldObj.isRemote){ - if(this.isBoundTileInRage() && this.getHandler() != null){ + if(worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord) && this.isBoundTileInRage() && this.getHandler() != null){ this.pushFluid(ForgeDirection.UP); this.pushFluid(ForgeDirection.DOWN); this.pushFluid(ForgeDirection.NORTH); @@ -165,23 +174,18 @@ public class TileEntityPhantomface extends TileEntityInventoryBase{ } @Override - public boolean canConnectTo(TileEntity tile){ - return tile instanceof IFluidHandler; + public boolean isBoundTileInRage(){ + return super.isBoundTileInRage() && this.boundWorld.getTileEntity(boundPosition.posX, boundPosition.posY, boundPosition.posZ) instanceof IFluidHandler; } public IFluidHandler getHandler(){ - TileEntity tile = boundTile.getWorldObj().getTileEntity(boundTile.xCoord, boundTile.yCoord, boundTile.zCoord); - if(tile != null && tile instanceof IFluidHandler){ - return (IFluidHandler)tile; + if(this.boundPosition != null && this.boundWorld != null){ + TileEntity tile = boundWorld.getTileEntity(boundPosition.posX, boundPosition.posY, boundPosition.posZ); + if(tile instanceof IFluidHandler) return (IFluidHandler)tile; } return null; } - @Override - public boolean hasBoundTile(){ - return super.hasBoundTile() && this.boundTile instanceof IFluidHandler; - } - @Override public int fill(ForgeDirection from, FluidStack resource, boolean doFill){ if(this.isBoundTileInRage()) return this.getHandler().fill(from, resource, doFill); @@ -224,6 +228,11 @@ public class TileEntityPhantomface extends TileEntityInventoryBase{ this.type = BlockPhantomface.ENERGYFACE; } + @Override + public boolean isBoundTileInRage(){ + return super.isBoundTileInRage() && (this.boundWorld.getTileEntity(boundPosition.posX, boundPosition.posY, boundPosition.posZ) instanceof IEnergyReceiver || this.boundWorld.getTileEntity(boundPosition.posX, boundPosition.posY, boundPosition.posZ) instanceof IEnergyProvider); + } + @Override public void updateEntity(){ super.updateEntity(); @@ -252,32 +261,22 @@ public class TileEntityPhantomface extends TileEntityInventoryBase{ } } - @Override - public boolean canConnectTo(TileEntity tile){ - return tile instanceof IEnergyProvider || tile instanceof IEnergyReceiver; - } - public IEnergyProvider getProvider(){ - TileEntity tile = boundTile.getWorldObj().getTileEntity(boundTile.xCoord, boundTile.yCoord, boundTile.zCoord); - if(tile != null && tile instanceof IEnergyProvider){ - return (IEnergyProvider)tile; + if(this.boundPosition != null && this.boundWorld != null){ + TileEntity tile = boundWorld.getTileEntity(boundPosition.posX, boundPosition.posY, boundPosition.posZ); + if(tile instanceof IEnergyProvider) return (IEnergyProvider)tile; } return null; } public IEnergyReceiver getReceiver(){ - TileEntity tile = boundTile.getWorldObj().getTileEntity(boundTile.xCoord, boundTile.yCoord, boundTile.zCoord); - if(tile != null && tile instanceof IEnergyReceiver){ - return (IEnergyReceiver)tile; + if(this.boundPosition != null && this.boundWorld != null){ + TileEntity tile = boundWorld.getTileEntity(boundPosition.posX, boundPosition.posY, boundPosition.posZ); + if(tile instanceof IEnergyReceiver) return (IEnergyReceiver)tile; } return null; } - @Override - public boolean hasBoundTile(){ - return super.hasBoundTile() && (this.boundTile instanceof IEnergyReceiver || this.boundTile instanceof IEnergyProvider); - } - @Override public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate){ return this.isBoundTileInRage() && this.getReceiver() != null ? this.getReceiver().receiveEnergy(from, maxReceive, simulate) : 0; @@ -323,24 +322,19 @@ public class TileEntityPhantomface extends TileEntityInventoryBase{ this.type = BlockPhantomface.FACE; } - @Override - public boolean canConnectTo(TileEntity tile){ - return tile instanceof IInventory; - } - - @Override - public boolean hasBoundTile(){ - return super.hasBoundTile() && this.boundTile instanceof IInventory; - } - public IInventory getInventory(){ - TileEntity tile = boundTile.getWorldObj().getTileEntity(boundTile.xCoord, boundTile.yCoord, boundTile.zCoord); - if(tile != null && tile instanceof IInventory){ - return (IInventory)tile; + if(this.boundPosition != null && this.boundWorld != null){ + TileEntity tile = boundWorld.getTileEntity(boundPosition.posX, boundPosition.posY, boundPosition.posZ); + if(tile instanceof IInventory) return (IInventory)tile; } return null; } + @Override + public boolean isBoundTileInRage(){ + return super.isBoundTileInRage() && this.boundWorld.getTileEntity(boundPosition.posX, boundPosition.posY, boundPosition.posZ) instanceof IInventory; + } + public ISidedInventory getSided(){ return this.getInventory() instanceof ISidedInventory ? (ISidedInventory)this.getInventory() : null; } diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityXPSolidifier.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityXPSolidifier.java new file mode 100644 index 000000000..6cceea975 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityXPSolidifier.java @@ -0,0 +1,67 @@ +package ellpeck.actuallyadditions.tile; + +import ellpeck.actuallyadditions.items.InitItems; +import ellpeck.actuallyadditions.items.ItemSpecialDrop; +import ellpeck.actuallyadditions.items.metalists.TheSpecialDrops; +import ellpeck.actuallyadditions.network.gui.IButtonReactor; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class TileEntityXPSolidifier extends TileEntityInventoryBase implements IButtonReactor{ + + public TileEntityXPSolidifier(){ + super(12, "xpSolidifier"); + } + + public int getFirstSlot(int itemsNeeded){ + for(int i = 0; i < this.slots.length; i++){ + if(this.slots[i] == null || this.slots[i].stackSize <= this.slots[i].getMaxStackSize()-itemsNeeded){ + return i; + } + } + return -1; + } + + @Override + public boolean canUpdate(){ + return false; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack){ + return false; + } + + @Override + public boolean canInsertItem(int slot, ItemStack stack, int side){ + return this.isItemValidForSlot(slot, stack); + } + + @Override + public boolean canExtractItem(int slot, ItemStack stack, int side){ + return true; + } + + @Override + public void onButtonPressed(int buttonID, EntityPlayer player){ + if(!player.worldObj.isRemote){ + if(buttonID == 0 && player.experienceTotal >= ItemSpecialDrop.SOLID_XP_AMOUNT){ + int slot = this.getFirstSlot(1); + if(slot >= 0){ + if(this.slots[slot] != null){ + this.slots[slot].stackSize++; + } + else this.slots[slot] = new ItemStack(InitItems.itemSpecialDrop, 1, TheSpecialDrops.SOLIDIFIED_EXPERIENCE.ordinal()); + player.addExperience(ItemSpecialDrop.SOLID_XP_AMOUNT); + } + } + else if(buttonID == 1 && player.experienceTotal >= 64*ItemSpecialDrop.SOLID_XP_AMOUNT){ + int slot = this.getFirstSlot(64); + if(slot >= 0){ + this.slots[slot] = new ItemStack(InitItems.itemSpecialDrop, 64, TheSpecialDrops.SOLIDIFIED_EXPERIENCE.ordinal()); + player.addExperience(64*ItemSpecialDrop.SOLID_XP_AMOUNT); + } + } + } + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/util/ModUtil.java b/src/main/java/ellpeck/actuallyadditions/util/ModUtil.java index f0580000b..77b97f7b0 100644 --- a/src/main/java/ellpeck/actuallyadditions/util/ModUtil.java +++ b/src/main/java/ellpeck/actuallyadditions/util/ModUtil.java @@ -5,7 +5,7 @@ import org.apache.logging.log4j.Logger; public class ModUtil{ - public static final String VERSION = "1.7.10-0.0.5.3"; + public static final String VERSION = "1.7.10-0.0.5.4"; public static final String MOD_ID = "ActuallyAdditions"; public static final String NAME = "Actually Additions"; diff --git a/src/main/java/ellpeck/actuallyadditions/waila/WailaDataProvider.java b/src/main/java/ellpeck/actuallyadditions/waila/WailaDataProvider.java index 0b6e54cff..880ac2225 100644 --- a/src/main/java/ellpeck/actuallyadditions/waila/WailaDataProvider.java +++ b/src/main/java/ellpeck/actuallyadditions/waila/WailaDataProvider.java @@ -8,6 +8,7 @@ import mcp.mobius.waila.api.IWailaDataAccessor; import mcp.mobius.waila.api.IWailaDataProvider; import mcp.mobius.waila.api.IWailaRegistrar; import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -47,7 +48,7 @@ public class WailaDataProvider implements IWailaDataProvider{ } @Override - public NBTTagCompound getNBTData(TileEntity te, NBTTagCompound tag, World world, int x, int y, int z){ + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, int x, int y, int z){ return tag; } diff --git a/src/main/resources/assets/actuallyadditions/lang/en_US.lang b/src/main/resources/assets/actuallyadditions/lang/en_US.lang index 62f45993b..12c6a1558 100644 --- a/src/main/resources/assets/actuallyadditions/lang/en_US.lang +++ b/src/main/resources/assets/actuallyadditions/lang/en_US.lang @@ -61,10 +61,9 @@ tooltip.actuallyadditions.blockPhantomEnergyface.desc.2=Put RF through me! tile.actuallyadditions.blockPhantomLiquiface.name=Phantom Liquiface tooltip.actuallyadditions.blockPhantomLiquiface.desc.1=Like a Pipe, only Wireless! Connect me with a Phantom Connector! -tooltip.actuallyadditions.blockPhantomLiquiface.desc.2=Put Fluids through me! Auto-Outputs too! -tooltip.actuallyadditions.blockPhantomLiquiface.desc.3=Important: When having a linked Fluid Container that can input and output -tooltip.actuallyadditions.blockPhantomLiquiface.desc.4=the same Fluid, set possible Pipes to Input/Output Only Mode, -tooltip.actuallyadditions.blockPhantomLiquiface.desc.5=otherwise fluids will flow back and forward indefinitely! +tooltip.actuallyadditions.blockPhantomLiquiface.desc.2=Put Fluids through me! Apply Redstone Power to Auto-Output! +tooltip.actuallyadditions.blockPhantomLiquiface.desc.3=Important: Watch out when setting the Liquiface to Auto-Output! Doing that +tooltip.actuallyadditions.blockPhantomLiquiface.desc.4=could produce Fluids flowing back and forward indefinitely in some cases! tile.actuallyadditions.blockPhantomPlacer.name=Phantom Placer tooltip.actuallyadditions.blockPhantomPlacer.desc.1=Places Blocks from a distance! Connect me with a Phantom Connector! @@ -85,13 +84,42 @@ tooltip.actuallyadditions.blockMiscLavaFactoryCase.desc=Helps the Lava Factory C tile.actuallyadditions.blockFluidPlacer.name=Fluid Placer tooltip.actuallyadditions.blockFluidPlacer.desc=Places Fluids stored inside it +tooltip.actuallyadditions.paxel.desc=It's an Axe, Shovel, Sword, Hoe and Pickaxe! Combined! +item.actuallyadditions.woodenPaxel.name=Wooden Paxel +item.actuallyadditions.stonePaxel.name=Stone Paxel +item.actuallyadditions.ironPaxel.name=Iron Paxel +item.actuallyadditions.goldPaxel.name=Golden Paxel +item.actuallyadditions.diamondPaxel.name=Diamond Paxel +item.actuallyadditions.emeraldPaxel.name=Emerald Paxel +item.actuallyadditions.obsidianPaxel.name=Obsidian Paxel + tile.actuallyadditions.blockFluidCollector.name=Fluid Collector tooltip.actuallyadditions.blockFluidCollector.desc=Stores Fluids in front of it inside it +tile.actuallyadditions.blockPhantomBooster.name=Phantom Booster +tooltip.actuallyadditions.blockPhantomBooster.desc.1=When placed above a Phantom Machine, it doubles its Range +tooltip.actuallyadditions.blockPhantomBooster.desc.2=(Max Amount above one Phantom Machine: 3) + item.actuallyadditions.itemPhantomConnector.name=Phantom Connector tooltip.actuallyadditions.itemPhantomConnector.desc.1=Connects a Phantom Face to any Inventory Block! tooltip.actuallyadditions.itemPhantomConnector.desc.2=Hold ALT to clear the stored TileEntity +item.actuallyadditions.itemMiscCup.name=Empty Cup +tooltip.actuallyadditions.itemMiscCup.desc=Used to make Coffee in a Coffee Machine! + +item.actuallyadditions.itemCoffee.name=Cup with Coffee +tooltip.actuallyadditions.itemCoffee.desc.1=Brewed in a Coffee Machine! See Effects below! +tooltip.actuallyadditions.itemCoffee.desc.2=You can drink me %s times! + +item.actuallyadditions.itemCoffeeSeed.name=Coffee Seeds +tooltip.actuallyadditions.itemCoffeeSeed.desc=Grows Coffee on Grass Blocks + +tile.actuallyadditions.blockCoffee.name=Coffee Plant +tooltip.actuallyadditions.blockCoffee.desc=Grows Coffee! Noms! + +item.actuallyadditions.itemCoffeeBeans.name=Coffee Beans +tooltip.actuallyadditions.itemCoffeeBeans.desc=Used in a Coffee Machine... delicious! + item.actuallyadditions.itemCanolaSeed.name=Canola Seeds tooltip.actuallyadditions.itemCanolaSeed.desc=Grows on Grass! item.actuallyadditions.itemMiscCanola.name=Canola @@ -141,14 +169,16 @@ tile.actuallyadditions.blockInputter.add.13.name=Efficient Sucking Dilettant tile.actuallyadditions.blockInputter.add.14.name=Extreme Sand Digger tile.actuallyadditions.blockInputter.add.15.name=MISSINGNO +tile.actuallyadditions.blockMiscEnderCasing.name=Ender Casing +tooltip.actuallyadditions.blockMiscEnderCasing.desc=Extremely sturdy casing, used for crafting + tooltip.actuallyadditions.phantom.connected.desc= tooltip.actuallyadditions.phantom.stored.desc= -tooltip.actuallyadditions.phantom.noBound.desc=The Connector has no Information stored! -tooltip.actuallyadditions.phantom.notInventory.desc=The stored Block is not the right type of Inventory! +tooltip.actuallyadditions.phantom.unbound.desc=The Connection was cleared! tooltip.actuallyadditions.phantom.inWorld.desc=In World tooltip.actuallyadditions.phantom.boundTo.desc=Bound to tooltip.actuallyadditions.phantom.connectedBlock.desc=Connected to Block at %s, %s, %s -tooltip.actuallyadditions.phantom.connectedNoRange.desc=Connected to Block at %s, %s, %s but it is not in Range! +tooltip.actuallyadditions.phantom.connectedNoRange.desc=Connected to Block at %s, %s, %s but it is not in Range, not loaded or not the right type of Inventory! tooltip.actuallyadditions.phantom.notConnected.desc=This isn't connected to anything! tooltip.actuallyadditions.factory.notPart.desc=The Controller isn't part of the right Multi-Block! Look at the Controller's Description! @@ -218,6 +248,13 @@ item.actuallyadditions.itemSpecialHeartPart.name=Part of a Heart item.actuallyadditions.itemSpecialPearlShard.name=Ender Pearl Shard item.actuallyadditions.itemSpecialEmeraldShard.name=Emerald Shard +tile.actuallyadditions.blockCoffeeMachine.name=Coffee Machine +tooltip.actuallyadditions.blockCoffeeMachine.desc.1=Makes endless different Coffee Combinations! +tooltip.actuallyadditions.blockCoffeeMachine.desc.2=Just add Coffee Beans and a Cup and the Ingredients: +tooltip.actuallyadditions.blockCoffeeMachine.desc.3=There's a lot of ingredients that add different Effects +tooltip.actuallyadditions.blockCoffeeMachine.desc.4=to the Coffee! Just put them into the slots on the right +tooltip.actuallyadditions.blockCoffeeMachine.desc.5=in the desired Order! It'll be your CUSTOM COFFEE! + item.actuallyadditions.itemDustIron.name=Crushed Iron item.actuallyadditions.itemDustGold.name=Crushed Gold item.actuallyadditions.itemDustDiamond.name=Crushed Diamond @@ -284,6 +321,11 @@ tooltip.actuallyadditions.blockHeatCollector.desc.2=Needs a bunch of Lava around tooltip.actuallyadditions.blockHeatCollector.desc.3=Occasionally steals the Lava. Watch out! tooltip.actuallyadditions.blockItemRepairer.desc=Repairs Tools and Armor automatically +tile.actuallyadditions.blockFlax.name=Flax Plant +tooltip.actuallyadditions.blockFlax.desc=Gives you String when grown! Yay! +item.actuallyadditions.itemFlaxSeed.name=Flax Seeds +tooltip.actuallyadditions.itemFlaxSeed.desc=Grows Plants that give you String! + tooltip.actuallyadditions.blockBreaker.desc=Breaks Blocks and stores them in its internal Inventory tooltip.actuallyadditions.blockPlacer.desc=Places Blocks stored in its internal Inventory tooltip.actuallyadditions.blockDropper.desc=Drops Items automatically (Without spewing them all over the Place!) @@ -304,8 +346,6 @@ tooltip.actuallyadditions.blockCrafter.desc=Automatically crafts Items without n tooltip.actuallyadditions.itemPotionRing.desc.1=Gives Potion Effect of Level 1 tooltip.actuallyadditions.itemPotionRing.desc.2=Needs to be held in Hand -tooltip.actuallyadditions.itemPotionRing.desc.off.1=Crafting Recipe of this particular Potion Effect is turned OFF by default -tooltip.actuallyadditions.itemPotionRing.desc.off.2=as it is extremely overpowered! Turn it on in the Config File if needed. tooltip.actuallyadditions.itemMiscCoil.desc=Lower Tier Coil, used for Crafting tooltip.actuallyadditions.itemMiscCoilAdvanced.desc=Higher Tier Coil, used for Crafting @@ -348,7 +388,8 @@ tooltip.actuallyadditions.itemFoodPumpkinStew.desc=Like Mushroom Stew or Rabbit tooltip.actuallyadditions.itemFoodCheese.desc=Cheese. tooltip.actuallyadditions.itemSpecialUnknownSubstance.desc=Dropped by Skeletons. BETA INFO: Useless as of yet. -tooltip.actuallyadditions.itemSpecialSolidifiedExperience.desc=Dropped by everyone. Right-Click to get XP. +tooltip.actuallyadditions.itemSpecialSolidifiedExperience.desc.1=Dropped by everyone. Right-Click to get XP. +tooltip.actuallyadditions.itemSpecialSolidifiedExperience.desc.2=Sneak-Right-Click to consume the whole Stack. tooltip.actuallyadditions.itemSpecialBloodFragment.desc=Dropped by everyone. BETA INFO: Useless as of yet. tooltip.actuallyadditions.itemSpecialHeartPart.desc=Dropped by everyone. BETA INFO: Useless as of yet. tooltip.actuallyadditions.itemSpecialPearlShard.desc=Dropped by Endermen. 3x3 Crafting to an Ender Pearl @@ -378,22 +419,13 @@ info.actuallyadditions.gui.all=All info.actuallyadditions.gui.slot=Slot info.actuallyadditions.gui.put=Put info.actuallyadditions.gui.pull=Pull +info.actuallyadditions.gui.whitelist=Whitelist +info.actuallyadditions.gui.blacklist=Blacklist +info.actuallyadditions.gui.coffee=Coffee tooltip.actuallyadditions.uses.desc=Uses tooltip.actuallyadditions.produces.desc=Produces -effect.actuallyadditions.speed.name=Speed -effect.actuallyadditions.haste.name=Haste -effect.actuallyadditions.strength.name=Strength -effect.actuallyadditions.jumpBoost.name=Jump Boost -effect.actuallyadditions.regen.name=Regeneration -effect.actuallyadditions.resistance.name=Resistance -effect.actuallyadditions.fireResistance.name=Fire Resistance -effect.actuallyadditions.waterBreathing.name=Water Breathing -effect.actuallyadditions.invisibility.name=Invisibility -effect.actuallyadditions.nightVision.name=Night Vision -effect.actuallyadditions.saturation.name=Saturation - container.actuallyadditions.inputter.name=ESD container.actuallyadditions.inputterAdvanced.name=Advanced ESD container.actuallyadditions.grinder.name=Crusher @@ -417,10 +449,15 @@ container.actuallyadditions.liquiface.name=Liquiface container.actuallyadditions.energyface.name=Energyface container.actuallyadditions.fluidPlacer.name=Fluid Placer container.actuallyadditions.fluidCollector.name=Fluid Collector +container.actuallyadditions.coffeeMachine.name=Coffee Machine -container.actuallyadditions.nei.crushing.name=Crusher -container.actuallyadditions.nei.ballOfHair.name=Ball Of Hair Usage -container.actuallyadditions.nei.compost.name=Compost +container.nei.actuallyadditions.crushing.name=Crusher +container.nei.actuallyadditions.ballOfHair.name=Ball Of Hair Usage +container.nei.actuallyadditions.compost.name=Compost + +container.nei.actuallyadditions.coffee.name=Coffee Machine +container.nei.actuallyadditions.coffee.special=Special Feature: +container.nei.actuallyadditions.coffee.extra.milk=+02:30, -1 Level info.actuallyadditions.update.generic.desc=[{"text":"There is an "},{"text":"Update ","bold":"true"},{"text":"for ","bold":"false"},{"text":"Actually Additions ","color":"dark_green","bold":"true"},{"text":"available!","color":"none","bold":"false"}] info.actuallyadditions.update.versionComp.desc=[{"text":"You have Version "},{"text":"%s","color":"dark_red","italic":"false"},{"text":", the newest one is ","color":"none","italic":"false"},{"text":"%s","color":"dark_green","underlined":"false"},{"text":"!","color":"none","underlined":"false"}] diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage1.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage1.png new file mode 100644 index 000000000..6e893add6 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage1.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage2.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage2.png new file mode 100644 index 000000000..8a5e090dd Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage2.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage3.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage3.png new file mode 100644 index 000000000..61bc39cc0 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage3.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage4.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage4.png new file mode 100644 index 000000000..b456db29d Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage4.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage5.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage5.png new file mode 100644 index 000000000..e2cbbc929 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage5.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage6.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage6.png new file mode 100644 index 000000000..01a879841 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockCoffeeStage6.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage1.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage1.png new file mode 100644 index 000000000..2cf284b95 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage1.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage2.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage2.png new file mode 100644 index 000000000..cea1ba434 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage2.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage3.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage3.png new file mode 100644 index 000000000..892529aa2 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage3.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage4.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage4.png new file mode 100644 index 000000000..56e5e111b Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage4.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage5.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage5.png new file mode 100644 index 000000000..df74ddd41 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage5.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage6.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage6.png new file mode 100644 index 000000000..65f70d259 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockFlaxStage6.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockMiscEnderCasing.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockMiscEnderCasing.png new file mode 100644 index 000000000..9b6ca8cd3 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockMiscEnderCasing.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/models/modelCoffeeMachine.png b/src/main/resources/assets/actuallyadditions/textures/blocks/models/modelCoffeeMachine.png new file mode 100644 index 000000000..99aac9c19 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/models/modelCoffeeMachine.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/models/modelPhantomBooster.png b/src/main/resources/assets/actuallyadditions/textures/blocks/models/modelPhantomBooster.png new file mode 100644 index 000000000..cd01ff0ab Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/models/modelPhantomBooster.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/models/special/modelLordi.png b/src/main/resources/assets/actuallyadditions/textures/blocks/models/special/modelLordi.png new file mode 100644 index 000000000..05cdffccf Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/models/special/modelLordi.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/gui/guiCoffeeMachine.png b/src/main/resources/assets/actuallyadditions/textures/gui/guiCoffeeMachine.png new file mode 100644 index 000000000..9a2081ca2 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/gui/guiCoffeeMachine.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/gui/guiInputterAdvanced.png b/src/main/resources/assets/actuallyadditions/textures/gui/guiInputterAdvanced.png index 673ce121b..ff204cabc 100644 Binary files a/src/main/resources/assets/actuallyadditions/textures/gui/guiInputterAdvanced.png and b/src/main/resources/assets/actuallyadditions/textures/gui/guiInputterAdvanced.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/gui/guiNEICoffeeMachine.png b/src/main/resources/assets/actuallyadditions/textures/gui/guiNEICoffeeMachine.png new file mode 100644 index 000000000..9316922ce Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/gui/guiNEICoffeeMachine.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/diamondPaxel.png b/src/main/resources/assets/actuallyadditions/textures/items/diamondPaxel.png new file mode 100644 index 000000000..a4732da14 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/diamondPaxel.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/emeraldPaxel.png b/src/main/resources/assets/actuallyadditions/textures/items/emeraldPaxel.png new file mode 100644 index 000000000..ffd4c58c5 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/emeraldPaxel.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/goldPaxel.png b/src/main/resources/assets/actuallyadditions/textures/items/goldPaxel.png new file mode 100644 index 000000000..6fd40009d Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/goldPaxel.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/ironPaxel.png b/src/main/resources/assets/actuallyadditions/textures/items/ironPaxel.png new file mode 100644 index 000000000..c3729110c Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/ironPaxel.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemCoffee.png b/src/main/resources/assets/actuallyadditions/textures/items/itemCoffee.png new file mode 100644 index 000000000..63cefb7fa Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/itemCoffee.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemCoffeeBeans.png b/src/main/resources/assets/actuallyadditions/textures/items/itemCoffeeBeans.png new file mode 100644 index 000000000..0eacb492f Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/itemCoffeeBeans.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemCoffeeSeed.png b/src/main/resources/assets/actuallyadditions/textures/items/itemCoffeeSeed.png new file mode 100644 index 000000000..8afdc027c Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/itemCoffeeSeed.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemFlaxSeed.png b/src/main/resources/assets/actuallyadditions/textures/items/itemFlaxSeed.png new file mode 100644 index 000000000..f0feb7fa0 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/itemFlaxSeed.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemMiscCup.png b/src/main/resources/assets/actuallyadditions/textures/items/itemMiscCup.png new file mode 100644 index 000000000..7fc88085d Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/itemMiscCup.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/obsidianPaxel.png b/src/main/resources/assets/actuallyadditions/textures/items/obsidianPaxel.png new file mode 100644 index 000000000..f063951aa Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/obsidianPaxel.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/stonePaxel.png b/src/main/resources/assets/actuallyadditions/textures/items/stonePaxel.png new file mode 100644 index 000000000..cbe99d046 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/stonePaxel.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/woodenPaxel.png b/src/main/resources/assets/actuallyadditions/textures/items/woodenPaxel.png new file mode 100644 index 000000000..9fbf1f372 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/woodenPaxel.png differ diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 729f0ffdf..29582c687 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,14 +3,14 @@ "modid": "ActuallyAdditions", "name": "Actually Additions", "description": "Actually Additions is a Mod that offers a bunch of things from Machines for Automation and tons of food to advanced Hopper Mechanisms and Effect Rings!", - "version": "0.0.5.3", + "version": "0.0.5.4", "mcversion": "1.7.10", "url": "https://github.com/Ellpeck/ActuallyAdditions", "updateUrl": "", "authorList": [ "Ellpeck" ], - "credits": "xdqmhose, GlenthorLP, Paktosan, Lordhallo", + "credits": "xdqmhose, GlenthorLP, Lordhallo, canitzp", "logoFile": "assets/actuallyadditions/textures/logo.png", "screenshots": [ ],