diff --git a/build.gradle b/build.gradle index b848ebb1a..421f07bbd 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { apply plugin: 'forge' -version = "1.7.10-0.0.1.3" +version = "1.7.10-0.0.1.4" group = "ellpeck.actuallyadditions" archivesBaseName = "ActuallyAdditions" diff --git a/src/main/java/ellpeck/actuallyadditions/ActuallyAdditions.java b/src/main/java/ellpeck/actuallyadditions/ActuallyAdditions.java index 08b1e3324..e5ad5e275 100644 --- a/src/main/java/ellpeck/actuallyadditions/ActuallyAdditions.java +++ b/src/main/java/ellpeck/actuallyadditions/ActuallyAdditions.java @@ -10,6 +10,7 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import ellpeck.actuallyadditions.achievement.InitAchievements; import ellpeck.actuallyadditions.blocks.InitBlocks; import ellpeck.actuallyadditions.config.ConfigurationHandler; +import ellpeck.actuallyadditions.crafting.GrinderCrafting; import ellpeck.actuallyadditions.crafting.InitCrafting; import ellpeck.actuallyadditions.event.InitEvents; import ellpeck.actuallyadditions.gen.OreGen; @@ -67,6 +68,7 @@ public class ActuallyAdditions{ public void postInit(FMLPostInitializationEvent event){ Util.logInfo("Starting PostInitialization Phase..."); + GrinderCrafting.init(); proxy.postInit(); Util.logInfo("PostInitialization Finished."); diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/BlockInputter.java b/src/main/java/ellpeck/actuallyadditions/blocks/BlockInputter.java new file mode 100644 index 000000000..9940358ca --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/blocks/BlockInputter.java @@ -0,0 +1,171 @@ +package ellpeck.actuallyadditions.blocks; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.ActuallyAdditions; +import ellpeck.actuallyadditions.creative.CreativeTab; +import ellpeck.actuallyadditions.inventory.GuiHandler; +import ellpeck.actuallyadditions.tile.TileEntityInputter; +import ellpeck.actuallyadditions.util.IName; +import ellpeck.actuallyadditions.util.Util; +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.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.util.StatCollector; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import java.util.List; +import java.util.Random; + +public class BlockInputter extends BlockContainerBase implements IName{ + + public static final int NAME_FLAVOUR_AMOUNTS = 12; + + private long lastSysTime; + private int toPick; + + public BlockInputter(){ + super(Material.rock); + this.setHarvestLevel("pickaxe", 0); + this.setHardness(1.0F); + this.setStepSound(soundTypeStone); + this.setTickRandomly(true); + this.setCreativeTab(CreativeTab.instance); + } + + @Override + public void onBlockAdded(World world, int x, int y, int z){ + super.onBlockAdded(world, x, y, z); + + if (!world.isRemote){ + Block block1 = world.getBlock(x, y, z-1); + Block block2 = world.getBlock(x, y, z+1); + Block block3 = world.getBlock(x-1, y, z); + Block block4 = world.getBlock(x+1, y, z); + + int metaToSet = 1; + if (block1.func_149730_j() && !block2.func_149730_j()) metaToSet = 0; + if (block2.func_149730_j() && !block1.func_149730_j()) metaToSet = 1; + if (block3.func_149730_j() && !block4.func_149730_j()) metaToSet = 2; + if (block4.func_149730_j() && !block3.func_149730_j()) metaToSet = 3; + + world.setBlockMetadataWithNotify(x, y, z, metaToSet, 2); + } + } + + @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, 0, 2); + if (rotation == 1) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if (rotation == 2) world.setBlockMetadataWithNotify(x, y, z, 1, 2); + if (rotation == 3) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + } + + @Override + public String getUnlocalizedName(){ + String norm = "tile." + Util.MOD_ID_LOWER + "." + this.getName(); + + Random rand = new Random(); + long sysTime = System.currentTimeMillis(); + + if(this.lastSysTime+5000 < sysTime){ + this.lastSysTime = sysTime; + this.toPick = rand.nextInt(NAME_FLAVOUR_AMOUNTS+1); + } + + return norm + "." + this.toPick; + } + + @Override + public TileEntity createNewTileEntity(World world, int par2){ + return new TileEntityInputter(); + } + + @Override + public int getLightValue(IBlockAccess world, int x, int y, int z){ + return world.getBlockMetadata(x, y, z) > 3 ? 12 : 0; + } + + @Override + public IIcon getIcon(int side, int meta){ + return this.blockIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconReg){ + this.blockIcon = iconReg.registerIcon(Util.MOD_ID_LOWER + ":" + this.getName()); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9){ + if(!world.isRemote){ + TileEntityInputter furnace = (TileEntityInputter)world.getTileEntity(x, y, z); + if (furnace != null) player.openGui(ActuallyAdditions.instance, GuiHandler.INPUTTER_ID, world, x, y, z); + return true; + } + return true; + } + + @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 "blockInputter"; + } + + 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) { + if(Util.isShiftPressed()){ + list.add(StatCollector.translateToLocalFormatted("tooltip." + Util.MOD_ID_LOWER + "." + ((IName)theBlock).getName() + ".desc." + 1, Util.OBFUSCATED, Util.LIGHT_GRAY)); + for(int i = 1; i < 5; i++){ + list.add(StatCollector.translateToLocal("tooltip." + Util.MOD_ID_LOWER + "." + ((IName)theBlock).getName() + ".desc." + (i + 1))); + } + } + else list.add(Util.shiftForInfo()); + } + + @Override + public int getMetadata(int damage){ + return damage; + } + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/BlockMisc.java b/src/main/java/ellpeck/actuallyadditions/blocks/BlockMisc.java index 157baf1b2..9634b74a3 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/BlockMisc.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/BlockMisc.java @@ -26,6 +26,8 @@ public class BlockMisc extends Block implements IName{ public BlockMisc(){ super(Material.rock); + this.setHarvestLevel("pickaxe", 0); + this.setHardness(1.0F); } @SuppressWarnings("all") diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java b/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java index 29a583a57..a8d4e73e4 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java @@ -1,5 +1,7 @@ package ellpeck.actuallyadditions.blocks; +import cpw.mods.fml.common.registry.GameRegistry; +import ellpeck.actuallyadditions.util.IName; import ellpeck.actuallyadditions.util.Util; import net.minecraft.block.Block; @@ -13,6 +15,7 @@ public class InitBlocks{ public static Block blockGrinder; public static Block blockGrinderDouble; public static Block blockFurnaceDouble; + public static Block blockInputter; public static void init(){ Util.logInfo("Initializing Blocks..."); @@ -37,5 +40,8 @@ public class InitBlocks{ blockFurnaceDouble = new BlockFurnaceDouble(); Util.register(blockFurnaceDouble, BlockFurnaceDouble.TheItemBlock.class); + + blockInputter = new BlockInputter(); + GameRegistry.registerBlock(blockInputter, BlockInputter.TheItemBlock.class, ((IName)blockInputter).getName()); } } \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/config/ConfigValues.java b/src/main/java/ellpeck/actuallyadditions/config/ConfigValues.java index 11a156d98..7d87fd0a1 100644 --- a/src/main/java/ellpeck/actuallyadditions/config/ConfigValues.java +++ b/src/main/java/ellpeck/actuallyadditions/config/ConfigValues.java @@ -74,7 +74,6 @@ public class ConfigValues{ blackQuartzMinHeight = config.getInt("Black Quartz Min Height", ConfigurationHandler.CATEGORY_WORLD_GEN, 0, 0, 256, "How high the Black Quartz starts to generate"); blackQuartzMaxHeight = config.getInt("Black Quartz Max Height", ConfigurationHandler.CATEGORY_WORLD_GEN, 25, 0, 256, "How high the Black Quartz stops to generate at"); - //TODO CHANGE TO BE TRUE BY DEFAULT enableExperienceDrop = config.getBoolean("Solidified Experience", ConfigurationHandler.CATEGORY_MOB_DROPS, false, "If the Solidified Experience drops from Mobs"); enableBloodDrop = config.getBoolean("Blood Fragments", ConfigurationHandler.CATEGORY_MOB_DROPS, false, "If the Blood Fragments drop from Mobs"); enableHeartDrop = config.getBoolean("Heart Parts", ConfigurationHandler.CATEGORY_MOB_DROPS, false, "If the Heart Parts drop from Mobs"); diff --git a/src/main/java/ellpeck/actuallyadditions/crafting/GrinderCrafting.java b/src/main/java/ellpeck/actuallyadditions/crafting/GrinderCrafting.java index f302d54a2..c4eee3c8f 100644 --- a/src/main/java/ellpeck/actuallyadditions/crafting/GrinderCrafting.java +++ b/src/main/java/ellpeck/actuallyadditions/crafting/GrinderCrafting.java @@ -15,6 +15,7 @@ import java.util.ArrayList; public class GrinderCrafting{ public static void init(){ + Util.logInfo("Initializing Grinder Recipes..."); GrinderRecipes.instance().registerRecipe(new ItemStack(Blocks.iron_ore), new ItemStack(InitItems.itemDust, 2, TheDusts.IRON.ordinal()), new ItemStack(InitItems.itemDust, 1, TheDusts.GOLD.ordinal()), 10); GrinderRecipes.instance().registerRecipe(new ItemStack(Blocks.redstone_ore), new ItemStack(Items.redstone, 10), null, 0); @@ -26,24 +27,43 @@ public class GrinderCrafting{ public static void registerFinally(){ String[] names = OreDictionary.getOreNames(); for(String name : names){ - if(name.contains("ore")){ - String nameOfOre = name.substring(3); - ArrayList allDusts; - if(nameOfOre.contains("Nether")) allDusts = OreDictionary.getOres("dust" + nameOfOre.substring(6)); - else allDusts = OreDictionary.getOres("dust" + nameOfOre); + int resultAmount = 1; + String nameOfOre = null; + + if(name.length() > 3 && name.substring(0, 3).equals("ore")){ + nameOfOre = name.substring(3); + resultAmount = 2; + } + if(name.length() > 9 && name.substring(0, 9).equals("oreNether")){ + nameOfOre = name.substring(9); + resultAmount = 2; + } + if(name.length() > 8 && name.substring(0, 8).equals("denseore")){ + nameOfOre = name.substring(8); + resultAmount = 6; + } + if(name.length() > 3 && name.substring(0, 3).equals("gem")) nameOfOre = name.substring(3); + if(name.length() > 5 && name.substring(0, 5).equals("ingot")) nameOfOre = name.substring(5); + + if(nameOfOre != null){ + ArrayList allDusts; + String nameToGetFrom = "dust" + nameOfOre; + + allDusts = OreDictionary.getOres(nameToGetFrom); if(allDusts != null && allDusts.size() > 0){ ArrayList allOresOfName = OreDictionary.getOres(name); if(allOresOfName != null && allOresOfName.size() > 0){ for(ItemStack output : allDusts){ - output.stackSize = 2; + output.stackSize = resultAmount; for(ItemStack input : allOresOfName){ if(GrinderRecipes.instance().getOutput(input, false) == null){ - //Special Second Outputs - if(name.equals("oreNickel")) - GrinderRecipes.instance().registerRecipe(input, output, OreDictionary.getOres("dustPlatinum").get(0), 10); + if(name.equals("oreNickel")){ + ArrayList specialStacks = OreDictionary.getOres("dustPlatinum"); + for(ItemStack theSpecial : specialStacks) GrinderRecipes.instance().registerRecipe(input, output, theSpecial, 10); + } else GrinderRecipes.instance().registerRecipe(input, output, null, 0); } @@ -52,9 +72,8 @@ public class GrinderCrafting{ } else Util.AA_LOGGER.log(Level.ERROR, "Couldn't register Crusher Recipe! Didn't find Items registered as '" + name + "'! This shouldn't happen as there is something registered as '" + name + "' that doesn't exist!"); } - else Util.AA_LOGGER.log(Level.WARN, "Couldn't register Crusher Recipe! An Item with OreDictionary Registry 'dust" + nameOfOre + "' doesn't exist! It should correspond to '" + name + "'! This is not an Error, just a bit sad :("); + else if(!name.equals("ingotBrick") && !name.equals("ingotBrickNether")) Util.AA_LOGGER.log(Level.WARN, "Couldn't register Crusher Recipe! An Item with OreDictionary Registry '" + nameToGetFrom + "' doesn't exist! It should correspond to '" + name + "'! This is not an Error, just a bit sad :("); } - } } } diff --git a/src/main/java/ellpeck/actuallyadditions/crafting/InitCrafting.java b/src/main/java/ellpeck/actuallyadditions/crafting/InitCrafting.java index 0ceaa24da..e52c97ae2 100644 --- a/src/main/java/ellpeck/actuallyadditions/crafting/InitCrafting.java +++ b/src/main/java/ellpeck/actuallyadditions/crafting/InitCrafting.java @@ -12,7 +12,6 @@ public class InitCrafting { MiscCrafting.init(); FoodCrafting.init(); ToolCrafting.init(); - GrinderCrafting.init(); } diff --git a/src/main/java/ellpeck/actuallyadditions/crafting/MiscCrafting.java b/src/main/java/ellpeck/actuallyadditions/crafting/MiscCrafting.java index 686a53ea8..e044852d8 100644 --- a/src/main/java/ellpeck/actuallyadditions/crafting/MiscCrafting.java +++ b/src/main/java/ellpeck/actuallyadditions/crafting/MiscCrafting.java @@ -30,9 +30,10 @@ public class MiscCrafting{ //Knife Blade if(ConfigValues.enabledMiscRecipes[TheMiscItems.KNIFE_BLADE.ordinal()]) - GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_BLADE.ordinal()), - new ItemStack(Items.iron_ingot), - new ItemStack(Items.flint)); + GameRegistry.addRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_BLADE.ordinal()), + "KF", + 'K', new ItemStack(Items.iron_ingot), + 'F', new ItemStack(Items.flint)); } diff --git a/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java b/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java index 73f59316c..119ed1c18 100644 --- a/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java +++ b/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java @@ -26,6 +26,7 @@ public class CreativeTab extends CreativeTabs{ public void displayAllReleventItems(List list){ this.list = list; + this.addBlock(InitBlocks.blockInputter); this.addBlock(InitBlocks.blockGrinder); this.addBlock(InitBlocks.blockGrinderDouble); this.addBlock(InitBlocks.blockFurnaceDouble); @@ -58,7 +59,7 @@ public class CreativeTab extends CreativeTabs{ @Override public Item getTabIconItem(){ - return Item.getItemFromBlock(InitBlocks.blockGrinderDouble); + return Item.getItemFromBlock(InitBlocks.blockInputter); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/ContainerGiantChest.java b/src/main/java/ellpeck/actuallyadditions/inventory/ContainerGiantChest.java index 9708534ff..6ddf263dd 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/ContainerGiantChest.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/ContainerGiantChest.java @@ -15,7 +15,7 @@ public class ContainerGiantChest extends Container{ public ContainerGiantChest(InventoryPlayer inventory, TileEntityBase tile){ this.tileChest = (TileEntityGiantChest)tile; - for (int i = 0; i < 13; i++){ + for (int i = 0; i < 9; i++){ for (int j = 0; j < 13; j++){ this.addSlotToContainer(new Slot(this.tileChest, j + (i*13), 5 + j * 18, 5 + i * 18)); } @@ -23,11 +23,11 @@ public class ContainerGiantChest extends Container{ for (int i = 0; i < 3; i++){ for (int j = 0; j < 9; j++){ - this.addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 33 + 8 + j * 18, 244 + 4 + i * 18)); + this.addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 33 + 8 + j * 18, 172 + 4 + i * 18)); } } for (int i = 0; i < 9; i++){ - this.addSlotToContainer(new Slot(inventory, i, 33 + 8 + i * 18, 244 + 62)); + this.addSlotToContainer(new Slot(inventory, i, 33 + 8 + i * 18, 172 + 62)); } } diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/ContainerInputter.java b/src/main/java/ellpeck/actuallyadditions/inventory/ContainerInputter.java new file mode 100644 index 000000000..cd969c79a --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/inventory/ContainerInputter.java @@ -0,0 +1,92 @@ +package ellpeck.actuallyadditions.inventory; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.tile.TileEntityBase; +import ellpeck.actuallyadditions.tile.TileEntityInputter; +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; + +public class ContainerInputter extends Container{ + + private TileEntityInputter tileInputter; + + private int lastSideToPut; + private int lastSlotToPut; + private int lastSideToPull; + private int lastSlotToPull; + private int lastPlaceToPutSlotAmount; + private int lastPlaceToPullSlotAmount; + + public ContainerInputter(InventoryPlayer inventory, TileEntityBase tile){ + this.tileInputter = (TileEntityInputter)tile; + + this.addSlotToContainer(new Slot(this.tileInputter, 0, 80, 21)); + + 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.tileInputter.sideToPut); + iCraft.sendProgressBarUpdate(this, 1, this.tileInputter.slotToPut); + iCraft.sendProgressBarUpdate(this, 2, this.tileInputter.sideToPull); + iCraft.sendProgressBarUpdate(this, 3, this.tileInputter.slotToPull); + iCraft.sendProgressBarUpdate(this, 4, this.tileInputter.placeToPullSlotAmount); + iCraft.sendProgressBarUpdate(this, 5, this.tileInputter.placeToPutSlotAmount); + } + + @Override + public void detectAndSendChanges(){ + super.detectAndSendChanges(); + for(Object crafter : this.crafters){ + ICrafting iCraft = (ICrafting)crafter; + if(this.lastSideToPut != this.tileInputter.sideToPut) iCraft.sendProgressBarUpdate(this, 0, this.tileInputter.sideToPut); + if(this.lastSlotToPut != this.tileInputter.slotToPut) iCraft.sendProgressBarUpdate(this, 1, this.tileInputter.slotToPut); + if(this.lastSideToPull != this.tileInputter.sideToPull) iCraft.sendProgressBarUpdate(this, 2, this.tileInputter.sideToPull); + 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); + } + 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; + + } + + @Override + @SideOnly(Side.CLIENT) + public void updateProgressBar(int par1, int par2){ + if(par1 == 0) this.tileInputter.sideToPut = par2; + if(par1 == 1) this.tileInputter.slotToPut = par2; + if(par1 == 2) this.tileInputter.sideToPull = par2; + if(par1 == 3) this.tileInputter.slotToPull = par2; + if(par1 == 4) this.tileInputter.placeToPullSlotAmount = par2; + if(par1 == 5) this.tileInputter.placeToPutSlotAmount = par2; + } + + @Override + public boolean canInteractWith(EntityPlayer player){ + return this.tileInputter.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slot){ + return null; + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFeeder.java b/src/main/java/ellpeck/actuallyadditions/inventory/GuiFeeder.java index b3a66dda1..827a3ab6f 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFeeder.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiFeeder.java @@ -58,7 +58,7 @@ public class GuiFeeder extends GuiContainer{ public void drawScreen(int x, int y, float f){ super.drawScreen(x, y, f); if(x >= guiLeft+69 && y >= guiTop+30 && x <= guiLeft+69+10 && y <= guiTop+30+10){ - String[] array = new String[]{(this.tileFeeder.currentAnimalAmount + " " + StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".feeder.animals.desc")), ((this.tileFeeder.currentAnimalAmount >= 2 && this.tileFeeder.currentAnimalAmount < this.tileFeeder.animalThreshold) ? StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".feeder.enoughToBreed.desc") : (this.tileFeeder.currentAnimalAmount >= this.tileFeeder.animalThreshold ? StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".feeder.tooMany.desc") : StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".feeder.notEnough.desc")))}; + String[] array = new String[]{(this.tileFeeder.currentAnimalAmount + " " + StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.animals")), ((this.tileFeeder.currentAnimalAmount >= 2 && this.tileFeeder.currentAnimalAmount < this.tileFeeder.animalThreshold) ? StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.enoughToBreed") : (this.tileFeeder.currentAnimalAmount >= this.tileFeeder.animalThreshold ? StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.tooMany") : StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.notEnough")))}; this.func_146283_a(Arrays.asList(array), x, y); } } diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiGiantChest.java b/src/main/java/ellpeck/actuallyadditions/inventory/GuiGiantChest.java index d7d2d7681..7ebdd1543 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiGiantChest.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiGiantChest.java @@ -18,15 +18,15 @@ public class GuiGiantChest extends GuiContainer{ super(new ContainerGiantChest(inventory, tile)); this.xSize = 242; - this.ySize = 244+86; + this.ySize = 172+86; } @Override public void drawGuiContainerBackgroundLayer(float f, int x, int y){ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(resLoc); - this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, 242, 244); + this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, 242, 190); this.mc.getTextureManager().bindTexture(Util.GUI_INVENTORY_LOCATION); - this.drawTexturedModalRect(this.guiLeft+33, this.guiTop+244, 0, 0, 176, 86); + this.drawTexturedModalRect(this.guiLeft+33, this.guiTop+172, 0, 0, 176, 86); } } \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiHandler.java b/src/main/java/ellpeck/actuallyadditions/inventory/GuiHandler.java index b073452c2..676aee8d0 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiHandler.java @@ -31,6 +31,9 @@ public class GuiHandler implements IGuiHandler{ case FURNACE_DOUBLE_ID: TileEntityBase tileFurnace = (TileEntityBase)world.getTileEntity(x, y, z); return new ContainerFurnaceDouble(entityPlayer.inventory, tileFurnace); + case INPUTTER_ID: + TileEntityBase tileInputter = (TileEntityBase)world.getTileEntity(x, y, z); + return new ContainerInputter(entityPlayer.inventory, tileInputter); default: return null; } @@ -56,6 +59,9 @@ public class GuiHandler implements IGuiHandler{ case FURNACE_DOUBLE_ID: TileEntityBase tileFurnace = (TileEntityBase)world.getTileEntity(x, y, z); return new GuiFurnaceDouble(entityPlayer.inventory, tileFurnace); + case INPUTTER_ID: + TileEntityBase tileInputter = (TileEntityBase)world.getTileEntity(x, y, z); + return new GuiInputter(entityPlayer.inventory, tileInputter, x, y, z, world); default: return null; } @@ -67,6 +73,7 @@ public class GuiHandler implements IGuiHandler{ public static final int GRINDER_ID = 3; public static final int GRINDER_DOUBLE_ID = 4; public static final int FURNACE_DOUBLE_ID = 5; + public static final int INPUTTER_ID = 6; public static void init(){ Util.logInfo("Initializing GuiHandler..."); diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiInputter.java b/src/main/java/ellpeck/actuallyadditions/inventory/GuiInputter.java new file mode 100644 index 000000000..8d99ee171 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiInputter.java @@ -0,0 +1,150 @@ +package ellpeck.actuallyadditions.inventory; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.network.PacketHandler; +import ellpeck.actuallyadditions.network.PacketInputterButton; +import ellpeck.actuallyadditions.tile.TileEntityBase; +import ellpeck.actuallyadditions.tile.TileEntityInputter; +import ellpeck.actuallyadditions.util.Util; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class GuiInputter extends GuiContainer{ + + private static final ResourceLocation resLoc = Util.getGuiLocation("guiInputter"); + private TileEntityInputter tileInputter; + + private int x; + private int y; + private int z; + private World world; + + private SmallerButton buttonSlotPutP; + private SmallerButton buttonSlotPullP; + private SmallerButton buttonSlotPutM; + private SmallerButton buttonSlotPullM; + + public static final String[] sideString = new String[]{ + StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.disabled"), + StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.up"), + StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.down"), + StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.north"), + StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.east"), + StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.south"), + StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.west")}; + + public GuiInputter(InventoryPlayer inventory, TileEntityBase tile, int x, int y, int z, World world){ + super(new ContainerInputter(inventory, tile)); + this.tileInputter = (TileEntityInputter)tile; + this.x = x; + this.y = y; + this.z = z; + this.world = world; + this.xSize = 176; + this.ySize = 93+86; + } + + @SuppressWarnings("unchecked") + @Override + public void initGui(){ + super.initGui(); + + SmallerButton buttonSidePutP = new SmallerButton(0, guiLeft + 70, guiTop + 43, ">"); + SmallerButton buttonSidePutM = new SmallerButton(1, guiLeft + 5, guiTop + 43, "<"); + buttonSlotPutP = new SmallerButton(2, guiLeft + 70, guiTop + 64, "+"); + buttonSlotPutM = new SmallerButton(3, guiLeft + 5, guiTop + 64, "-"); + + SmallerButton buttonSidePullP = new SmallerButton(4, guiLeft + 155, guiTop + 43, ">"); + SmallerButton buttonSidePullM = new SmallerButton(5, guiLeft + 90, guiTop + 43, "<"); + buttonSlotPullP = new SmallerButton(6, guiLeft+ 155, guiTop + 64, "+"); + buttonSlotPullM = new SmallerButton(7, guiLeft + 90, guiTop + 64, "-"); + + this.buttonList.add(buttonSidePutP); + this.buttonList.add(buttonSlotPutP); + this.buttonList.add(buttonSidePullP); + this.buttonList.add(buttonSlotPullP); + this.buttonList.add(buttonSidePutM); + this.buttonList.add(buttonSlotPutM); + this.buttonList.add(buttonSidePullM); + this.buttonList.add(buttonSlotPullM); + } + + @Override + public void drawGuiContainerBackgroundLayer(float f, int x, int y){ + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + this.mc.getTextureManager().bindTexture(Util.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); + + this.fontRendererObj.drawString(StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.put"), guiLeft + 22 + 3, guiTop + 32, 4210752); + this.fontRendererObj.drawString(StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.pull"), guiLeft + 107 + 3, guiTop + 32, 4210752); + + this.fontRendererObj.drawString(sideString[tileInputter.sideToPut+1], guiLeft + 24 + 3, guiTop + 45 + 1, 4210752); + this.fontRendererObj.drawString(StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.slot") + " " + (tileInputter.slotToPut == -1 ? StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.all") : tileInputter.slotToPut).toString(), guiLeft + 24, guiTop + 66 + 1, 4210752); + + this.fontRendererObj.drawString(sideString[tileInputter.sideToPull+1], guiLeft + 109 + 3, guiTop + 45 + 1, 4210752); + this.fontRendererObj.drawString(StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.slot") + " " + (tileInputter.slotToPull == -1 ? StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".gui.all") : tileInputter.slotToPull).toString(), guiLeft + 109, guiTop + 66 + 1, 4210752); + } + + @Override + public void drawScreen(int x, int y, float f){ + super.drawScreen(x, y, f); + + this.buttonSlotPullP.enabled = this.tileInputter.placeToPullSlotAmount > 0; + this.buttonSlotPullM.enabled = this.tileInputter.placeToPullSlotAmount > 0; + + this.buttonSlotPutP.enabled = this.tileInputter.placeToPutSlotAmount > 0; + this.buttonSlotPutM.enabled = this.tileInputter.placeToPutSlotAmount > 0; + } + + @Override + public void actionPerformed(GuiButton button){ + PacketHandler.theNetwork.sendToServer(new PacketInputterButton(x, y, z, world, button.id)); + } + + public class SmallerButton extends GuiButton{ + + private final ResourceLocation resLoc = Util.getGuiLocation("guiInputter"); + + public SmallerButton(int id, int x, int y, String display){ + super(id, x, y, 16, 16, display); + } + + @Override + public void drawButton(Minecraft mc, int x, int y){ + if (this.visible){ + FontRenderer renderer = mc.fontRenderer; + mc.getTextureManager().bindTexture(resLoc); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.field_146123_n = x >= this.xPosition && y >= this.yPosition && x < this.xPosition + this.width && y < this.yPosition + this.height; + int k = this.getHoverState(this.field_146123_n); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + this.drawTexturedModalRect(this.xPosition, this.yPosition, 176, k*16, 16, 16); + this.mouseDragged(mc, x, y); + + int color = 14737632; + if (packedFGColour != 0) color = packedFGColour; + else if (!this.enabled) color = 10526880; + else if (this.field_146123_n) color = 16777120; + + this.drawCenteredString(renderer, this.displayString, this.xPosition + this.width / 2, this.yPosition + (this.height-3) / 2, color); + } + } + } + +} \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/items/InitItems.java b/src/main/java/ellpeck/actuallyadditions/items/InitItems.java index badfbb8f6..4f9b98407 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/InitItems.java +++ b/src/main/java/ellpeck/actuallyadditions/items/InitItems.java @@ -3,8 +3,11 @@ package ellpeck.actuallyadditions.items; import ellpeck.actuallyadditions.items.tools.*; import ellpeck.actuallyadditions.material.InitItemMaterials; import ellpeck.actuallyadditions.util.Util; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; public class InitItems{ @@ -52,18 +55,18 @@ public class InitItems{ itemSpecialDrop = new ItemSpecialDrop(); Util.register(itemSpecialDrop); - itemPickaxeEmerald = new ItemPickaxeAA(InitItemMaterials.toolMaterialEmerald, "itemPickaxeEmerald", EnumRarity.rare); - itemAxeEmerald = new ItemAxeAA(InitItemMaterials.toolMaterialEmerald, "itemAxeEmerald", EnumRarity.rare); - itemShovelEmerald = new ItemShovelAA(InitItemMaterials.toolMaterialEmerald, "itemShovelEmerald", EnumRarity.rare); - itemSwordEmerald = new ItemSwordAA(InitItemMaterials.toolMaterialEmerald, "itemSwordEmerald", EnumRarity.rare); - itemHoeEmerald = new ItemHoeAA(InitItemMaterials.toolMaterialEmerald, "itemHoeEmerald", EnumRarity.rare); + 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); + itemSwordEmerald = new ItemSwordAA(InitItemMaterials.toolMaterialEmerald, new ItemStack(Items.emerald), "itemSwordEmerald", EnumRarity.rare); + itemHoeEmerald = new ItemHoeAA(InitItemMaterials.toolMaterialEmerald, new ItemStack(Items.emerald), "itemHoeEmerald", EnumRarity.rare); Util.registerItems(new Item[]{itemPickaxeEmerald, itemAxeEmerald, itemShovelEmerald, itemSwordEmerald, itemHoeEmerald}); - itemPickaxeObsidian = new ItemPickaxeAA(InitItemMaterials.toolMaterialObsidian, "itemPickaxeObsidian", EnumRarity.uncommon); - itemAxeObsidian = new ItemAxeAA(InitItemMaterials.toolMaterialObsidian, "itemAxeObsidian", EnumRarity.uncommon); - itemShovelObsidian = new ItemShovelAA(InitItemMaterials.toolMaterialObsidian, "itemShovelObsidian", EnumRarity.uncommon); - itemSwordObsidian = new ItemSwordAA(InitItemMaterials.toolMaterialObsidian, "itemSwordObsidian", EnumRarity.uncommon); - itemHoeObsidian = new ItemHoeAA(InitItemMaterials.toolMaterialObsidian, "itemHoeObsidian", EnumRarity.uncommon); + itemPickaxeObsidian = new ItemPickaxeAA(InitItemMaterials.toolMaterialObsidian, new ItemStack(Blocks.obsidian), "itemPickaxeObsidian", EnumRarity.uncommon); + itemAxeObsidian = new ItemAxeAA(InitItemMaterials.toolMaterialObsidian, new ItemStack(Blocks.obsidian), "itemAxeObsidian", EnumRarity.uncommon); + itemShovelObsidian = new ItemShovelAA(InitItemMaterials.toolMaterialObsidian, new ItemStack(Blocks.obsidian), "itemShovelObsidian", EnumRarity.uncommon); + itemSwordObsidian = new ItemSwordAA(InitItemMaterials.toolMaterialObsidian, new ItemStack(Blocks.obsidian), "itemSwordObsidian", EnumRarity.uncommon); + itemHoeObsidian = new ItemHoeAA(InitItemMaterials.toolMaterialObsidian, new ItemStack(Blocks.obsidian), "itemHoeObsidian", EnumRarity.uncommon); Util.registerItems(new Item[]{itemPickaxeObsidian, itemAxeObsidian, itemShovelObsidian, itemSwordObsidian, itemHoeObsidian}); } diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemKnife.java b/src/main/java/ellpeck/actuallyadditions/items/ItemKnife.java index cb8c61903..3671b01c6 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/ItemKnife.java +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemKnife.java @@ -30,6 +30,11 @@ public class ItemKnife extends Item implements IName{ return theStack; } + @Override + public boolean doesContainerItemLeaveCraftingGrid(ItemStack stack){ + return false; + } + @Override public EnumRarity getRarity(ItemStack stack){ return EnumRarity.epic; diff --git a/src/main/java/ellpeck/actuallyadditions/items/tools/ItemAxeAA.java b/src/main/java/ellpeck/actuallyadditions/items/tools/ItemAxeAA.java index 6b8a93b97..723d3bb78 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/tools/ItemAxeAA.java +++ b/src/main/java/ellpeck/actuallyadditions/items/tools/ItemAxeAA.java @@ -18,11 +18,13 @@ public class ItemAxeAA extends ItemAxe implements IName{ private String name; private EnumRarity rarity; + private ItemStack repairItem; - public ItemAxeAA(ToolMaterial toolMat, String unlocalizedName, EnumRarity rarity){ + public ItemAxeAA(ToolMaterial toolMat, ItemStack repairItem, String unlocalizedName, EnumRarity rarity){ super(toolMat); this.name = unlocalizedName; this.rarity = rarity; + this.repairItem = repairItem; this.setUnlocalizedName(Util.setUnlocalizedName(this)); } @@ -36,6 +38,11 @@ public class ItemAxeAA extends ItemAxe implements IName{ } } + @Override + public boolean getIsRepairable(ItemStack itemToRepair, ItemStack stack){ + return stack.getItem() == repairItem.getItem(); + } + @Override public IIcon getIcon(ItemStack stack, int pass){ return this.itemIcon; diff --git a/src/main/java/ellpeck/actuallyadditions/items/tools/ItemHoeAA.java b/src/main/java/ellpeck/actuallyadditions/items/tools/ItemHoeAA.java index 34a77e2c0..e49b6719c 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/tools/ItemHoeAA.java +++ b/src/main/java/ellpeck/actuallyadditions/items/tools/ItemHoeAA.java @@ -18,11 +18,13 @@ public class ItemHoeAA extends ItemHoe implements IName{ private String name; private EnumRarity rarity; + private ItemStack repairItem; - public ItemHoeAA(ToolMaterial toolMat, String unlocalizedName, EnumRarity rarity){ + public ItemHoeAA(ToolMaterial toolMat, ItemStack repairItem, String unlocalizedName, EnumRarity rarity){ super(toolMat); this.name = unlocalizedName; this.rarity = rarity; + this.repairItem = repairItem; this.setUnlocalizedName(Util.setUnlocalizedName(this)); } @@ -36,6 +38,11 @@ public class ItemHoeAA extends ItemHoe implements IName{ } } + @Override + public boolean getIsRepairable(ItemStack itemToRepair, ItemStack stack){ + return stack.getItem() == repairItem.getItem(); + } + @Override public EnumRarity getRarity(ItemStack stack){ return this.rarity; diff --git a/src/main/java/ellpeck/actuallyadditions/items/tools/ItemPickaxeAA.java b/src/main/java/ellpeck/actuallyadditions/items/tools/ItemPickaxeAA.java index e7851b6ea..899db2e77 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/tools/ItemPickaxeAA.java +++ b/src/main/java/ellpeck/actuallyadditions/items/tools/ItemPickaxeAA.java @@ -18,11 +18,13 @@ public class ItemPickaxeAA extends ItemPickaxe implements IName{ private String name; private EnumRarity rarity; + private ItemStack repairItem; - public ItemPickaxeAA(ToolMaterial toolMat, String unlocalizedName, EnumRarity rarity){ + public ItemPickaxeAA(ToolMaterial toolMat, ItemStack repairItem, String unlocalizedName, EnumRarity rarity){ super(toolMat); this.name = unlocalizedName; this.rarity = rarity; + this.repairItem = repairItem; this.setUnlocalizedName(Util.setUnlocalizedName(this)); } @@ -36,6 +38,11 @@ public class ItemPickaxeAA extends ItemPickaxe implements IName{ } } + @Override + public boolean getIsRepairable(ItemStack itemToRepair, ItemStack stack){ + return stack.getItem() == repairItem.getItem(); + } + @Override public IIcon getIcon(ItemStack stack, int pass){ return this.itemIcon; diff --git a/src/main/java/ellpeck/actuallyadditions/items/tools/ItemShovelAA.java b/src/main/java/ellpeck/actuallyadditions/items/tools/ItemShovelAA.java index 6eada4854..e5baf54dc 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/tools/ItemShovelAA.java +++ b/src/main/java/ellpeck/actuallyadditions/items/tools/ItemShovelAA.java @@ -18,11 +18,13 @@ public class ItemShovelAA extends ItemSpade implements IName{ private String name; private EnumRarity rarity; + private ItemStack repairItem; - public ItemShovelAA(ToolMaterial toolMat, String unlocalizedName, EnumRarity rarity){ + public ItemShovelAA(ToolMaterial toolMat, ItemStack repairItem, String unlocalizedName, EnumRarity rarity){ super(toolMat); this.name = unlocalizedName; this.rarity = rarity; + this.repairItem = repairItem; this.setUnlocalizedName(Util.setUnlocalizedName(this)); } @@ -36,6 +38,11 @@ public class ItemShovelAA extends ItemSpade implements IName{ } } + @Override + public boolean getIsRepairable(ItemStack itemToRepair, ItemStack stack){ + return stack.getItem() == repairItem.getItem(); + } + @Override public EnumRarity getRarity(ItemStack stack){ return this.rarity; diff --git a/src/main/java/ellpeck/actuallyadditions/items/tools/ItemSwordAA.java b/src/main/java/ellpeck/actuallyadditions/items/tools/ItemSwordAA.java index 45e73a38c..5def8bdd2 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/tools/ItemSwordAA.java +++ b/src/main/java/ellpeck/actuallyadditions/items/tools/ItemSwordAA.java @@ -18,11 +18,13 @@ public class ItemSwordAA extends ItemSword implements IName{ private String name; private EnumRarity rarity; + private ItemStack repairItem; - public ItemSwordAA(ToolMaterial toolMat, String unlocalizedName, EnumRarity rarity){ + public ItemSwordAA(ToolMaterial toolMat, ItemStack repairItem, String unlocalizedName, EnumRarity rarity){ super(toolMat); this.name = unlocalizedName; this.rarity = rarity; + this.repairItem = repairItem; this.setUnlocalizedName(Util.setUnlocalizedName(this)); } @@ -36,6 +38,11 @@ public class ItemSwordAA extends ItemSword implements IName{ } } + @Override + public boolean getIsRepairable(ItemStack itemToRepair, ItemStack stack){ + return stack.getItem() == repairItem.getItem(); + } + @Override public EnumRarity getRarity(ItemStack stack){ return this.rarity; diff --git a/src/main/java/ellpeck/actuallyadditions/network/PacketHandler.java b/src/main/java/ellpeck/actuallyadditions/network/PacketHandler.java index 1ad92b988..1a0990e3f 100644 --- a/src/main/java/ellpeck/actuallyadditions/network/PacketHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/network/PacketHandler.java @@ -13,6 +13,6 @@ public class PacketHandler{ theNetwork = NetworkRegistry.INSTANCE.newSimpleChannel(Util.MOD_ID + "Channel"); theNetwork.registerMessage(PacketTileEntityFeeder.Handler.class, PacketTileEntityFeeder.class, 0, Side.CLIENT); + theNetwork.registerMessage(PacketInputterButton.Handler.class, PacketInputterButton.class, 1, Side.SERVER); } - } diff --git a/src/main/java/ellpeck/actuallyadditions/network/PacketInputterButton.java b/src/main/java/ellpeck/actuallyadditions/network/PacketInputterButton.java new file mode 100644 index 000000000..231201764 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/network/PacketInputterButton.java @@ -0,0 +1,66 @@ +package ellpeck.actuallyadditions.network; + +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.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.DimensionManager; + +public class PacketInputterButton implements IMessage{ + + private int tileX; + private int tileY; + private int tileZ; + private int worldID; + private int buttonID; + + @SuppressWarnings("unused") + public PacketInputterButton(){ + + } + + public PacketInputterButton(int x, int y, int z, World world, int buttonID){ + this.tileX = x; + this.tileY = y; + this.tileZ = z; + this.worldID = world.provider.dimensionId; + this.buttonID = buttonID; + } + + @Override + public void fromBytes(ByteBuf buf){ + this.tileX = buf.readInt(); + this.tileY = buf.readInt(); + this.tileZ = buf.readInt(); + this.worldID = buf.readInt(); + this.buttonID = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf){ + buf.writeInt(this.tileX); + buf.writeInt(this.tileY); + buf.writeInt(this.tileZ); + buf.writeInt(this.worldID); + buf.writeInt(this.buttonID); + } + + public static class Handler implements IMessageHandler{ + + @Override + public IMessage onMessage(PacketInputterButton 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); + } + + return null; + } + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/network/PacketTileEntityFeeder.java b/src/main/java/ellpeck/actuallyadditions/network/PacketTileEntityFeeder.java index bc0940995..5f172baca 100644 --- a/src/main/java/ellpeck/actuallyadditions/network/PacketTileEntityFeeder.java +++ b/src/main/java/ellpeck/actuallyadditions/network/PacketTileEntityFeeder.java @@ -4,6 +4,8 @@ import cpw.mods.fml.client.FMLClientHandler; 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 cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import ellpeck.actuallyadditions.inventory.GuiFeeder; import ellpeck.actuallyadditions.tile.TileEntityFeeder; import io.netty.buffer.ByteBuf; @@ -50,6 +52,7 @@ public class PacketTileEntityFeeder implements IMessage{ public static class Handler implements IMessageHandler{ @Override + @SideOnly(Side.CLIENT) public IMessage onMessage(PacketTileEntityFeeder message, MessageContext ctx){ World world = FMLClientHandler.instance().getClient().theWorld; TileEntity tile = world.getTileEntity(message.tileX, message.tileY, message.tileZ); diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java index d32b7bf8b..8e1e356a0 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java @@ -33,7 +33,7 @@ public class TileEntityBase extends TileEntity{ GameRegistry.registerTileEntity(TileEntityGiantChest.class, Util.MOD_ID_LOWER + ":tileEntityGiantChest"); GameRegistry.registerTileEntity(TileEntityGrinder.class, Util.MOD_ID_LOWER + ":tileEntityGrinder"); GameRegistry.registerTileEntity(TileEntityFurnaceDouble.class, Util.MOD_ID_LOWER + ":tileEntityFurnaceDouble"); - GameRegistry.registerTileEntity(TileEntityPackager.class, Util.MOD_ID_LOWER + ":tileEntityPackager"); + GameRegistry.registerTileEntity(TileEntityInputter.class, Util.MOD_ID_LOWER + ":tileEntityInputter"); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCompost.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCompost.java index 03feb9cbe..121249555 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCompost.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCompost.java @@ -22,6 +22,7 @@ public class TileEntityCompost extends TileEntityInventoryBase{ @Override public void updateEntity(){ if(!worldObj.isRemote){ + boolean theFlag = this.conversionTime > 0; if(this.slots[0] != null && !(this.slots[0].getItem() instanceof ItemFertilizer) && this.slots[0].stackSize >= this.amountNeededToConvert){ this.conversionTime++; if(this.conversionTime >= this.conversionTimeNeeded){ @@ -29,6 +30,9 @@ public class TileEntityCompost extends TileEntityInventoryBase{ this.conversionTime = 0; } } + if(theFlag != this.conversionTime > 0){ + this.markDirty(); + } } } diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFeeder.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFeeder.java index 1f7e14cc4..d584157d0 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFeeder.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFeeder.java @@ -31,21 +31,25 @@ public class TileEntityFeeder extends TileEntityInventoryBase{ @SuppressWarnings("unchecked") public void updateEntity(){ if(!worldObj.isRemote){ + boolean theFlag = this.currentTimer > 0; List animals = worldObj.getEntitiesWithinAABB(EntityAnimal.class, AxisAlignedBB.getBoundingBox(this.xCoord - reach, this.yCoord - reach, this.zCoord - reach, this.xCoord + reach, this.yCoord + reach, this.zCoord + reach)); if(animals != null){ this.currentAnimalAmount = animals.size(); if(this.currentAnimalAmount >= 2){ if(this.currentAnimalAmount < this.animalThreshold){ - if(this.currentTimer >= this.timerGoal && this.slots[0] != null){ + if(this.currentTimer >= this.timerGoal){ this.currentTimer = 0; - EntityAnimal randomAnimal = animals.get(new Random().nextInt(this.currentAnimalAmount)); - if(!randomAnimal.isInLove() && randomAnimal.getGrowingAge() == 0 && randomAnimal.isBreedingItem(this.slots[0])){ + if(this.slots[0] != null){ + EntityAnimal randomAnimal = animals.get(new Random().nextInt(this.currentAnimalAmount)); + if(!randomAnimal.isInLove() && randomAnimal.getGrowingAge() == 0 && randomAnimal.isBreedingItem(this.slots[0])){ - PacketHandler.theNetwork.sendToAllAround(new PacketTileEntityFeeder(this, randomAnimal.getEntityId()), new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, this.xCoord, this.yCoord, this.zCoord, 80)); - this.feedAnimal(randomAnimal); + PacketHandler.theNetwork.sendToAllAround(new PacketTileEntityFeeder(this, randomAnimal.getEntityId()), new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, this.xCoord, this.yCoord, this.zCoord, 80)); + this.feedAnimal(randomAnimal); - this.slots[0].stackSize--; - if(this.slots[0].stackSize == 0) this.slots[0] = this.slots[0].getItem().getContainerItem(this.slots[0]); + this.slots[0].stackSize--; + if(this.slots[0].stackSize == 0) + this.slots[0] = this.slots[0].getItem().getContainerItem(this.slots[0]); + } } } else this.currentTimer++; @@ -54,6 +58,10 @@ public class TileEntityFeeder extends TileEntityInventoryBase{ } else this.currentTimer = 0; } + + if(theFlag != this.currentTimer > 0){ + this.markDirty(); + } } } diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceDouble.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceDouble.java index 3b019dfae..27e233207 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceDouble.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceDouble.java @@ -3,6 +3,7 @@ package ellpeck.actuallyadditions.tile; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import ellpeck.actuallyadditions.config.ConfigValues; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; @@ -76,6 +77,7 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase{ if(theFlag != this.coalTimeLeft > 0){ int metaBefore = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, (this.coalTimeLeft > 0 ? metaBefore+4 : metaBefore-4), 2); + this.markDirty(); } } @@ -149,6 +151,6 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase{ @Override public boolean canExtractItem(int slot, ItemStack stack, int side){ - return slot == SLOT_OUTPUT_1 || slot == SLOT_OUTPUT_2; + return slot == SLOT_OUTPUT_1 || slot == SLOT_OUTPUT_2 || (slot == SLOT_COAL && stack.getItem() == Items.bucket); } } diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGiantChest.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGiantChest.java index 730c81ec5..821035a55 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGiantChest.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGiantChest.java @@ -8,7 +8,7 @@ import net.minecraft.nbt.NBTTagList; public class TileEntityGiantChest extends TileEntityInventoryBase{ public TileEntityGiantChest(){ - super(169, "tileEntityGiantChest"); + super(9*13, "tileEntityGiantChest"); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGrinder.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGrinder.java index 953601e15..c7614f0b4 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGrinder.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGrinder.java @@ -4,6 +4,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import ellpeck.actuallyadditions.config.ConfigValues; import ellpeck.actuallyadditions.recipe.GrinderRecipes; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntityFurnace; @@ -90,6 +91,7 @@ public class TileEntityGrinder extends TileEntityInventoryBase{ if(theFlag != this.coalTimeLeft > 0){ worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, (this.coalTimeLeft > 0 ? 1 : 0), 2); + this.markDirty(); } } } @@ -181,6 +183,6 @@ public class TileEntityGrinder extends TileEntityInventoryBase{ @Override public boolean canExtractItem(int slot, ItemStack stack, int side){ - return slot == SLOT_OUTPUT_1_1 || slot == SLOT_OUTPUT_1_2 || slot == SLOT_OUTPUT_2_1 || slot == SLOT_OUTPUT_2_2; + return slot == SLOT_OUTPUT_1_1 || slot == SLOT_OUTPUT_1_2 || slot == SLOT_OUTPUT_2_1 || slot == SLOT_OUTPUT_2_2 || (slot == SLOT_COAL && stack.getItem() == Items.bucket); } } diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInputter.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInputter.java new file mode 100644 index 000000000..848ec16db --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInputter.java @@ -0,0 +1,198 @@ +package ellpeck.actuallyadditions.tile; + +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; + +public class TileEntityInputter extends TileEntityInventoryBase{ + + public int sideToPut = -1; + public int slotToPut = -1; + public int placeToPutSlotAmount; + public TileEntity placeToPut; + + public int sideToPull = -1; + public int slotToPull = -1; + public int placeToPullSlotAmount; + public TileEntity placeToPull; + + public TileEntityInputter(){ + super(1, "tileEntityInputter"); + } + + @Override + public void updateEntity(){ + if(!worldObj.isRemote){ + this.initVars(); + + if(!(this.sideToPull == this.sideToPut && this.slotToPull == this.slotToPut)){ + if(sideToPull != -1) this.pull(); + if(sideToPut != -1) this.put(); + } + } + } + + public void pull(){ + if(this.placeToPullSlotAmount > 0){ + IInventory theInventory = (IInventory)placeToPull; + int theSlotToPull = this.slotToPull; + + ItemStack theStack = null; + if(theSlotToPull != -1) theStack = theInventory.getStackInSlot(theSlotToPull); + else{ + for(int i = 0; i < this.placeToPullSlotAmount; i++){ + ItemStack tempStack = theInventory.getStackInSlot(i); + if(tempStack != null && (this.slots[0] == null || (tempStack.isItemEqual(this.slots[0]) && this.slots[0].stackSize < this.getInventoryStackLimit()))){ + theStack = tempStack; + theSlotToPull = i; + break; + } + } + } + if(theSlotToPull != -1 && theStack != null){ + if(this.slots[0] != null){ + if(theStack.isItemEqual(this.slots[0])){ + if(theStack.stackSize <= this.getInventoryStackLimit() - this.slots[0].stackSize){ + this.slots[0].stackSize += theStack.stackSize; + theInventory.setInventorySlotContents(theSlotToPull, null); + } + else if(theStack.stackSize > this.getInventoryStackLimit() - this.slots[0].stackSize){ + theStack.stackSize -= (this.getInventoryStackLimit() - this.slots[0].stackSize); + this.slots[0].stackSize = this.getInventoryStackLimit(); + } + } + } + else{ + this.setInventorySlotContents(0, theStack.copy()); + theInventory.setInventorySlotContents(theSlotToPull, null); + } + } + } + } + + public void put(){ + if(this.placeToPutSlotAmount > 0){ + IInventory theInventory = (IInventory)placeToPut; + int theSlotToPut = this.slotToPut; + + if(this.slots[0] != null){ + ItemStack theStack = null; + if(theSlotToPut != -1) theStack = theInventory.getStackInSlot(theSlotToPut); + else{ + for(int i = 0; i < this.placeToPutSlotAmount; i++){ + ItemStack tempStack = theInventory.getStackInSlot(i); + if(tempStack == null || (theInventory.isItemValidForSlot(i, this.slots[0]) && tempStack.isItemEqual(this.slots[0]) && tempStack.stackSize < theInventory.getInventoryStackLimit())){ + theStack = tempStack; + theSlotToPut = i; + break; + } + } + } + if(theSlotToPut != -1 && theInventory.isItemValidForSlot(theSlotToPut, this.slots[0])){ + if(theStack != null){ + if(theStack.isItemEqual(this.slots[0])){ + if(this.slots[0].stackSize <= theInventory.getInventoryStackLimit() - theStack.stackSize){ + theStack.stackSize += this.slots[0].stackSize; + this.slots[0] = null; + } + else if(this.slots[0].stackSize > theInventory.getInventoryStackLimit() - theStack.stackSize){ + this.slots[0].stackSize -= (theInventory.getInventoryStackLimit() - theStack.stackSize); + theStack.stackSize = theInventory.getInventoryStackLimit(); + } + } + } + else{ + theInventory.setInventorySlotContents(theSlotToPut, this.slots[0].copy()); + this.slots[0] = null; + } + } + } + } + } + + public void initVars(){ + this.placeToPull = this.getTileEntityFromSide(this.sideToPull); + this.placeToPut = this.getTileEntityFromSide(this.sideToPut); + + if(this.placeToPull != null && this.placeToPull instanceof IInventory){ + this.placeToPullSlotAmount = ((IInventory)this.placeToPull).getSizeInventory(); + } + else{ + this.placeToPullSlotAmount = 0; + this.slotToPull = -1; + } + + if(this.placeToPut != null && this.placeToPut instanceof IInventory){ + this.placeToPutSlotAmount = ((IInventory)this.placeToPut).getSizeInventory(); + } + else{ + this.placeToPutSlotAmount = 0; + this.slotToPut = -1; + } + } + + public TileEntity getTileEntityFromSide(int side){ + if(side == 0) return worldObj.getTileEntity(xCoord, yCoord+1, zCoord); + if(side == 1) return worldObj.getTileEntity(xCoord, yCoord-1, zCoord); + if(side == 2) return worldObj.getTileEntity(xCoord, yCoord, zCoord-1); + if(side == 3) return worldObj.getTileEntity(xCoord-1, yCoord, zCoord); + if(side == 4) return worldObj.getTileEntity(xCoord, yCoord, zCoord+1); + if(side == 5) return worldObj.getTileEntity(xCoord+1, yCoord, zCoord); + else return null; + } + + public void onButtonPressed(int buttonID){ + if(buttonID == 0) this.sideToPut++; + if(buttonID == 1) this.sideToPut--; + if(buttonID == 2) this.slotToPut++; + if(buttonID == 3) this.slotToPut--; + + if(buttonID == 4) this.sideToPull++; + if(buttonID == 5) this.sideToPull--; + if(buttonID == 6) this.slotToPull++; + if(buttonID == 7) this.slotToPull--; + + if(this.sideToPut >= 6) this.sideToPut = -1; + else if(this.sideToPut < -1) this.sideToPut = 5; + else if(this.sideToPull >= 6) this.sideToPull = -1; + else if(this.sideToPull < -1) this.sideToPull = 5; + else if(this.slotToPut >= this.placeToPutSlotAmount) this.slotToPut = -1; + else if(this.slotToPut < -1) this.slotToPut = this.placeToPutSlotAmount-1; + else if(this.slotToPull >= this.placeToPullSlotAmount) this.slotToPull = -1; + else if(this.slotToPull < -1) this.slotToPull = this.placeToPullSlotAmount-1; + } + + @Override + public void writeToNBT(NBTTagCompound compound){ + super.writeToNBT(compound); + compound.setInteger("SideToPut", this.sideToPut); + compound.setInteger("SlotToPut", this.slotToPut); + compound.setInteger("SideToPull", this.sideToPull); + compound.setInteger("SlotToPull", this.slotToPull); + } + + @Override + public void readFromNBT(NBTTagCompound compound){ + super.readFromNBT(compound); + this.sideToPut = compound.getInteger("SideToPut"); + this.slotToPut = compound.getInteger("SlotToPut"); + this.sideToPull = compound.getInteger("SideToPull"); + this.slotToPull = compound.getInteger("SlotToPull"); + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack){ + return true; + } + + @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; + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPackager.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPackager.java deleted file mode 100644 index 6aebf4821..000000000 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityPackager.java +++ /dev/null @@ -1,115 +0,0 @@ -package ellpeck.actuallyadditions.tile; - -import net.minecraft.inventory.Container; -import net.minecraft.inventory.InventoryCrafting; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.CraftingManager; -import net.minecraft.nbt.NBTTagCompound; - -public class TileEntityPackager extends TileEntityInventoryBase{ - - public static final int SLOT_INPUT = 0; - public static final int SLOT_OUTPUT = 1; - - public int currentWaitTime; - public final int waitTime = 30; - - public boolean isTwoByTwo = false; - - public TileEntityPackager(){ - super(2, "tileEntityPackager"); - } - - @Override - @SuppressWarnings("unchecked") - public void updateEntity(){ - if(!worldObj.isRemote){ - if(this.canBeConverted(this.slots[SLOT_INPUT])){ - - ItemStack output = findMatchingRecipe(this.slots[SLOT_INPUT]); - if(this.slots[SLOT_OUTPUT] == null || (this.slots[SLOT_OUTPUT].isItemEqual(output) && this.slots[SLOT_OUTPUT].stackSize <= this.slots[SLOT_OUTPUT].getMaxStackSize()-output.stackSize)){ - - if(this.currentWaitTime >= this.waitTime){ - this.currentWaitTime = 0; - - if (this.slots[SLOT_OUTPUT] == null) this.slots[SLOT_OUTPUT] = output.copy(); - else if(this.slots[SLOT_OUTPUT].getItem() == output.getItem()) this.slots[SLOT_OUTPUT].stackSize += output.stackSize; - - this.slots[SLOT_INPUT].stackSize--; - if (this.slots[SLOT_INPUT].stackSize <= 0) this.slots[SLOT_INPUT] = null; - } - else this.currentWaitTime++; - } - } - } - } - - public boolean canBeConverted(ItemStack stack){ - return findMatchingRecipe(stack) != null; - } - - public ItemStack findMatchingRecipe(ItemStack stack){ - int k = this.isTwoByTwo ? 2 : 3; - - TheInventoryCrafting craftMatrix = new TheInventoryCrafting(null, k, k); - for(int i = 0; i < craftMatrix.getSizeInventory(); i++){ - craftMatrix.setInventorySlotContents(i, stack.copy()); - } - return CraftingManager.getInstance().findMatchingRecipe(craftMatrix, this.worldObj); - } - - @Override - public void writeToNBT(NBTTagCompound compound){ - super.writeToNBT(compound); - compound.setInteger("CurrentWaitTime", this.currentWaitTime); - compound.setBoolean("EnabledSlots", this.isTwoByTwo); - - } - - @Override - public void readFromNBT(NBTTagCompound compound){ - super.readFromNBT(compound); - this.currentWaitTime = compound.getInteger("CurrentWaitTime"); - this.isTwoByTwo = compound.getBoolean("EnabledSlots"); - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack stack){ - return i == SLOT_INPUT; - } - - @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; - } - - public static class TheInventoryCrafting extends InventoryCrafting{ - - private ItemStack[] stackList; - - public TheInventoryCrafting(Container container, int x, int y){ - super(container, x, y); - this.stackList = new ItemStack[x*y]; - } - - @Override - public void setInventorySlotContents(int index, ItemStack stack){ - this.stackList[index] = stack; - } - - @Override - public ItemStack getStackInSlot(int position){ - return this.stackList[position]; - } - - @Override - public int getSizeInventory(){ - return this.stackList.length; - } - } -} diff --git a/src/main/java/ellpeck/actuallyadditions/util/Util.java b/src/main/java/ellpeck/actuallyadditions/util/Util.java index c6df06b6e..4f7dde362 100644 --- a/src/main/java/ellpeck/actuallyadditions/util/Util.java +++ b/src/main/java/ellpeck/actuallyadditions/util/Util.java @@ -18,7 +18,7 @@ import org.lwjgl.input.Keyboard; @SuppressWarnings("unused") public class Util{ - public static final String VERSION = "1.7.10-0.0.1.3"; + public static final String VERSION = "1.7.10-0.0.1.4"; public static final String MOD_ID = "ActuallyAdditions"; public static final String NAME = "Actually Additions"; @@ -48,6 +48,8 @@ public class Util{ public static final String BOLD = (char)167 + "l"; public static final String UNDERLINE = (char)167 + "n"; public static final String ITALIC = (char)167 + "o"; + public static final String OBFUSCATED = (char) 167 + "k"; + public static final String RESET = (char) 167 + "r"; public static final String[] ROMAN_NUMERALS = new String[]{"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"}; diff --git a/src/main/resources/assets/actuallyadditions/lang/de_DE.lang b/src/main/resources/assets/actuallyadditions/lang/de_DE.lang index d2dd44e53..2c27b0217 100644 --- a/src/main/resources/assets/actuallyadditions/lang/de_DE.lang +++ b/src/main/resources/assets/actuallyadditions/lang/de_DE.lang @@ -9,7 +9,7 @@ tile.actuallyadditions.blockMiscBlackQuartzPillar.name=Schwarzquartzsäule tile.actuallyadditions.blockFeeder.name=Fütterungsanlage tile.actuallyadditions.blockGiantChest.name=Riesenkiste tile.actuallyadditions.blockGrinder.name=Zerkleinerer -tile.actuallyadditions.blockGrinderDouble.name=Zerkleinerte Mk2 +tile.actuallyadditions.blockGrinderDouble.name=Zerkleinerer Mk2 tile.actuallyadditions.blockFurnaceDouble.name=Ofen Mk2 item.actuallyadditions.itemMiscMashedFood.name=Brei @@ -168,6 +168,6 @@ achievement.actuallyadditions.craftKnife=Noch schärfer? Definitiv Phillips! achievement.actuallyadditions.craftKnife.desc=Baue ein Messer. info.actuallyadditions.feeder.animals.desc=Tiere -info.actuallyadditions.feeder.enoughToBreed.desc=Nicht genug zur Züchtung! +info.actuallyadditions.feeder.enoughToBreed.desc=Genug zur Züchtung! info.actuallyadditions.feeder.tooMany.desc=Zu viele zur Züchtung! info.actuallyadditions.feeder.notEnough.desc=Nicht genug zur Züchtung! diff --git a/src/main/resources/assets/actuallyadditions/lang/en_US.lang b/src/main/resources/assets/actuallyadditions/lang/en_US.lang index 47b40ba5e..8230b2dfb 100644 --- a/src/main/resources/assets/actuallyadditions/lang/en_US.lang +++ b/src/main/resources/assets/actuallyadditions/lang/en_US.lang @@ -12,6 +12,20 @@ tile.actuallyadditions.blockGrinder.name=Crusher tile.actuallyadditions.blockGrinderDouble.name=Double Crusher tile.actuallyadditions.blockFurnaceDouble.name=Double Furnace +tile.actuallyadditions.blockInputter.0.name=ESD (Ellpeck's Slot Device) +tile.actuallyadditions.blockInputter.1.name=ESD (Energetic Solo Dancer) +tile.actuallyadditions.blockInputter.2.name=ESD (Ethereal System Dude) +tile.actuallyadditions.blockInputter.3.name=ESD (Energy Stuff Distributor) +tile.actuallyadditions.blockInputter.4.name=ESD (Existing Stuff Donator) +tile.actuallyadditions.blockInputter.5.name=ESD (ExtraUtils Stealing Device) +tile.actuallyadditions.blockInputter.6.name=ESD (Experienced Sauce Deriver) +tile.actuallyadditions.blockInputter.7.name=ESD (Excellent Spaghetti Dessert) +tile.actuallyadditions.blockInputter.8.name=ESD (Extraordinary Sample Deliverer) +tile.actuallyadditions.blockInputter.9.name=ESD (Express Sending Doughnut) +tile.actuallyadditions.blockInputter.10.name=ESD (Expelling Sugar Dagger) +tile.actuallyadditions.blockInputter.11.name=ESD (Extra-Long Solidifying Dissociation) +tile.actuallyadditions.blockInputter.12.name=ESD (Extravagant Supreme Dirt) + item.actuallyadditions.itemMiscMashedFood.name=Mashed Food item.actuallyadditions.itemFertilizer.name=Fertilizer item.actuallyadditions.itemMiscDough.name=Dough @@ -86,7 +100,11 @@ tooltip.actuallyadditions.blockGrinder.desc.4=build the Double Crusher! tooltip.actuallyadditions.blockGrinderDouble.desc.1=Crushes Ores into Dusts! tooltip.actuallyadditions.blockGrinderDouble.desc.2=You get two Dusts per Ore and Extras! tooltip.actuallyadditions.blockGrinderDouble.desc.3=Can crush two Ores simultaneously! -tooltip.actuallyadditions.blockFurnaceDouble.desc=Smelts two Things simultaneously! +tooltip.actuallyadditions.blockInputter.desc.1=Its real name is %sObfuscated%s! +tooltip.actuallyadditions.blockInputter.desc.2=Acts like a more advanced Hopper +tooltip.actuallyadditions.blockInputter.desc.3=Configurable: +tooltip.actuallyadditions.blockInputter.desc.4=-Side to Output to and Input from +tooltip.actuallyadditions.blockInputter.desc.5=-Slot in the other Inventory to Output to and Input from tooltip.actuallyadditions.itemMiscMashedFood.desc=Used to make Fertilizer tooltip.actuallyadditions.itemFertilizer.desc=Om nom nom. Don't eat it. Made in a Compost. @@ -167,7 +185,18 @@ achievement.actuallyadditions.craftKnifeBlade.desc=Craft a Knife Blade achievement.actuallyadditions.craftKnife=Sharper! Even sharper! achievement.actuallyadditions.craftKnife.desc=Craft a Knife -info.actuallyadditions.feeder.animals.desc=Animals -info.actuallyadditions.feeder.enoughToBreed.desc=Enough to breed! -info.actuallyadditions.feeder.tooMany.desc=Too many to breed! -info.actuallyadditions.feeder.notEnough.desc=Not enough to breed! \ No newline at end of file +info.actuallyadditions.gui.animals=Animals +info.actuallyadditions.gui.enoughToBreed=Enough to breed! +info.actuallyadditions.gui.tooMany=Too many to breed! +info.actuallyadditions.gui.notEnough=Not enough to breed! +info.actuallyadditions.gui.disabled=Disabled +info.actuallyadditions.gui.up=Up +info.actuallyadditions.gui.down=Down +info.actuallyadditions.gui.north=North +info.actuallyadditions.gui.east=East +info.actuallyadditions.gui.south=South +info.actuallyadditions.gui.west=West +info.actuallyadditions.gui.all=All +info.actuallyadditions.gui.slot=Slot +info.actuallyadditions.gui.put=Put +info.actuallyadditions.gui.pull=Pull \ No newline at end of file diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockInputter.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockInputter.png new file mode 100644 index 000000000..d96783c2a Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockInputter.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/gui/guiFurnaceDouble.png b/src/main/resources/assets/actuallyadditions/textures/gui/guiFurnaceDouble.png index 8b5c2ce8c..407b5b952 100644 Binary files a/src/main/resources/assets/actuallyadditions/textures/gui/guiFurnaceDouble.png and b/src/main/resources/assets/actuallyadditions/textures/gui/guiFurnaceDouble.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/gui/guiGiantChest.png b/src/main/resources/assets/actuallyadditions/textures/gui/guiGiantChest.png index eafc35dac..7352d7f52 100644 Binary files a/src/main/resources/assets/actuallyadditions/textures/gui/guiGiantChest.png and b/src/main/resources/assets/actuallyadditions/textures/gui/guiGiantChest.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/gui/guiInputter.png b/src/main/resources/assets/actuallyadditions/textures/gui/guiInputter.png new file mode 100644 index 000000000..11b8583ad Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/gui/guiInputter.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/ItemSpecialPearlShard.png b/src/main/resources/assets/actuallyadditions/textures/items/ItemSpecialPearlShard.png new file mode 100644 index 000000000..b726e96d8 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/ItemSpecialPearlShard.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/ItemSpecialSolidifiedExperience.png b/src/main/resources/assets/actuallyadditions/textures/items/ItemSpecialSolidifiedExperience.png new file mode 100644 index 000000000..481bee9f9 Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/ItemSpecialSolidifiedExperience.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemFoodHamburger.png b/src/main/resources/assets/actuallyadditions/textures/items/itemFoodHamburger.png index cb5cbe6e1..092e0702b 100644 Binary files a/src/main/resources/assets/actuallyadditions/textures/items/itemFoodHamburger.png and b/src/main/resources/assets/actuallyadditions/textures/items/itemFoodHamburger.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemFoodToast.png b/src/main/resources/assets/actuallyadditions/textures/items/itemFoodToast.png index 9324a5354..7b896b290 100644 Binary files a/src/main/resources/assets/actuallyadditions/textures/items/itemFoodToast.png and b/src/main/resources/assets/actuallyadditions/textures/items/itemFoodToast.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemSpecialBloodFragment.png b/src/main/resources/assets/actuallyadditions/textures/items/itemSpecialBloodFragment.png new file mode 100644 index 000000000..b4fbe1cbc Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/itemSpecialBloodFragment.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemSpecialEmeraldShard.png b/src/main/resources/assets/actuallyadditions/textures/items/itemSpecialEmeraldShard.png new file mode 100644 index 000000000..07e36e15b Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/itemSpecialEmeraldShard.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemSpecialHeartPart.png b/src/main/resources/assets/actuallyadditions/textures/items/itemSpecialHeartPart.png new file mode 100644 index 000000000..fd2ba353d Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/itemSpecialHeartPart.png differ diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemSpecialUnknownSubstance.png b/src/main/resources/assets/actuallyadditions/textures/items/itemSpecialUnknownSubstance.png new file mode 100644 index 000000000..b58d8cfeb Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/items/itemSpecialUnknownSubstance.png differ diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 767960498..43eb6a5c1 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "ActuallyAdditions", "name": "Actually Additions", "description": "A bunch of random stuff added to your Game to make it even more fun, exciting and add some more variety!", - "version": "0.0.1.3", + "version": "0.0.1.4", "mcversion": "1.7.10", "url": "https://github.com/Ellpeck/ActuallyAdditions", "updateUrl": "",