From 4f93fa3d294611ce6885bf89da6b2a824e665315 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sun, 19 Apr 2015 00:50:02 +0100 Subject: [PATCH] Lots of stuff, Breakers and Placers! --- .../ellpeck/actuallyadditions/PLANNED.txt | 9 +- .../achievement/AchievementAA.java | 15 -- .../achievement/InitAchievements.java | 53 +++---- .../achievement/TheAchievements.java | 41 ++++++ .../blocks/BlockBreaker.java | 126 +++++++++++++++++ .../blocks/BlockFurnaceDouble.java | 20 --- .../blocks/BlockGreenhouseGlass.java | 115 ++++++++++++++++ .../actuallyadditions/blocks/InitBlocks.java | 12 ++ .../config/ConfigValues.java | 4 + .../creative/CreativeTab.java | 5 +- .../actuallyadditions/event/CraftEvent.java | 45 +++--- .../actuallyadditions/event/InitEvents.java | 1 + .../actuallyadditions/event/PickupEvent.java | 14 ++ .../actuallyadditions/event/SmeltEvent.java | 5 +- .../gen/JamVillagerTradeHandler.java | 2 +- .../inventory/ContainerBreaker.java | 76 +++++++++++ .../inventory/ContainerInputter.java | 2 +- .../inventory/GuiBreaker.java | 47 +++++++ .../inventory/GuiCrafter.java | 7 + .../inventory/GuiFeeder.java | 5 + .../inventory/GuiFurnaceDouble.java | 5 + .../inventory/GuiGiantChest.java | 9 ++ .../inventory/GuiGrinder.java | 5 + .../inventory/GuiHandler.java | 7 + .../inventory/GuiInputter.java | 5 + .../inventory/GuiRepairer.java | 5 + .../actuallyadditions/items/ItemJams.java | 13 +- .../items/metalists/TheJams.java | 11 +- .../tile/TileEntityBase.java | 2 + .../tile/TileEntityBreaker.java | 129 ++++++++++++++++++ .../tile/TileEntityCompost.java | 2 +- .../tile/TileEntityFeeder.java | 2 +- .../tile/TileEntityFurnaceDouble.java | 2 +- .../tile/TileEntityFurnaceSolar.java | 3 +- .../tile/TileEntityGiantChest.java | 2 +- .../tile/TileEntityGreenhouseGlass.java | 58 ++++++++ .../tile/TileEntityGrinder.java | 2 +- .../tile/TileEntityHeatCollector.java | 27 +--- .../tile/TileEntityInputter.java | 18 +-- .../tile/TileEntityInventoryBase.java | 3 +- .../tile/TileEntityItemRepairer.java | 2 +- .../actuallyadditions/util/AssetUtil.java | 8 ++ .../actuallyadditions/util/StringUtil.java | 1 + .../actuallyadditions/util/WorldUtil.java | 45 ++++++ .../assets/actuallyadditions/lang/en_US.lang | 63 +++++---- .../textures/blocks/blockBreaker.png | Bin 0 -> 521 bytes .../textures/blocks/blockBreakerFront.png | Bin 0 -> 793 bytes .../textures/blocks/blockBreakerTop.png | Bin 0 -> 575 bytes .../textures/blocks/blockGiantChestBottom.png | Bin 0 -> 730 bytes .../textures/blocks/blockGreenhouseGlass.png | Bin 0 -> 502 bytes .../textures/blocks/blockInputterAdvanced.png | Bin 0 -> 424 bytes .../textures/blocks/blockMiscStoneCasing.png | Bin 0 -> 821 bytes .../textures/blocks/blockMiscWoodCasing.png | Bin 0 -> 652 bytes .../textures/blocks/blockPlacer.png | Bin 0 -> 518 bytes .../textures/blocks/blockPlacerFront.png | Bin 0 -> 815 bytes .../textures/blocks/blockPlacerTop.png | Bin 0 -> 575 bytes .../textures/entity/villager/jamVillager.png | Bin 0 -> 2214 bytes .../textures/gui/guiBreaker.png | Bin 0 -> 1794 bytes .../textures/gui/guiInputterAdvanced.png | Bin 0 -> 3020 bytes .../textures/items/itemJam.png | Bin 0 -> 368 bytes .../textures/items/itemJamOverlay.png | Bin 0 -> 317 bytes .../textures/items/itemMiscCoil.png | Bin 0 -> 555 bytes .../textures/items/itemMiscCoilAdvanced.png | Bin 0 -> 519 bytes 63 files changed, 842 insertions(+), 191 deletions(-) delete mode 100644 src/main/java/ellpeck/actuallyadditions/achievement/AchievementAA.java create mode 100644 src/main/java/ellpeck/actuallyadditions/achievement/TheAchievements.java create mode 100644 src/main/java/ellpeck/actuallyadditions/blocks/BlockBreaker.java create mode 100644 src/main/java/ellpeck/actuallyadditions/blocks/BlockGreenhouseGlass.java create mode 100644 src/main/java/ellpeck/actuallyadditions/event/PickupEvent.java create mode 100644 src/main/java/ellpeck/actuallyadditions/inventory/ContainerBreaker.java create mode 100644 src/main/java/ellpeck/actuallyadditions/inventory/GuiBreaker.java create mode 100644 src/main/java/ellpeck/actuallyadditions/tile/TileEntityBreaker.java create mode 100644 src/main/java/ellpeck/actuallyadditions/tile/TileEntityGreenhouseGlass.java create mode 100644 src/main/java/ellpeck/actuallyadditions/util/WorldUtil.java create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockBreaker.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockBreakerFront.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockBreakerTop.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockGiantChestBottom.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockGreenhouseGlass.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockInputterAdvanced.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockMiscStoneCasing.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockMiscWoodCasing.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockPlacer.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockPlacerFront.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockPlacerTop.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/entity/villager/jamVillager.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/gui/guiBreaker.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/gui/guiInputterAdvanced.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/items/itemJam.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/items/itemJamOverlay.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/items/itemMiscCoil.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/items/itemMiscCoilAdvanced.png diff --git a/src/main/java/ellpeck/actuallyadditions/PLANNED.txt b/src/main/java/ellpeck/actuallyadditions/PLANNED.txt index e9bba6d6c..88ded5070 100644 --- a/src/main/java/ellpeck/actuallyadditions/PLANNED.txt +++ b/src/main/java/ellpeck/actuallyadditions/PLANNED.txt @@ -49,5 +49,10 @@ -Decorative Lead -Can be placed between two Fences for Decoration --Greenhouse Glass - -Gives Plants below more Growth Ticks \ No newline at end of file +-Crafting Table Minecart +-Anvil Minecart +-Dropper Minecart +-Super Speed Track + +-File Jukebox + -Plays Sound Files put into your Minecraft Folder \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/achievement/AchievementAA.java b/src/main/java/ellpeck/actuallyadditions/achievement/AchievementAA.java deleted file mode 100644 index 07642d0c4..000000000 --- a/src/main/java/ellpeck/actuallyadditions/achievement/AchievementAA.java +++ /dev/null @@ -1,15 +0,0 @@ -package ellpeck.actuallyadditions.achievement; - -import ellpeck.actuallyadditions.util.ModUtil; -import net.minecraft.item.ItemStack; -import net.minecraft.stats.Achievement; - -public class AchievementAA extends Achievement{ - - public AchievementAA(String name, int x, int y, ItemStack displayStack, Achievement hasToHaveBefore){ - super("achievement." + ModUtil.MOD_ID_LOWER + "." + name, ModUtil.MOD_ID_LOWER + "." + name, x, y, displayStack, hasToHaveBefore); - /*InitAchievements.achievementList.add(this); - if(hasToHaveBefore == null) this.initIndependentStat(); - this.registerStat();*/ - } -} \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/achievement/InitAchievements.java b/src/main/java/ellpeck/actuallyadditions/achievement/InitAchievements.java index 41fa1f9d6..0e1ef4c02 100644 --- a/src/main/java/ellpeck/actuallyadditions/achievement/InitAchievements.java +++ b/src/main/java/ellpeck/actuallyadditions/achievement/InitAchievements.java @@ -1,48 +1,31 @@ package ellpeck.actuallyadditions.achievement; +import ellpeck.actuallyadditions.util.ModUtil; +import ellpeck.actuallyadditions.util.Util; +import net.minecraft.stats.Achievement; +import net.minecraft.util.StatCollector; +import net.minecraftforge.common.AchievementPage; + +import java.util.ArrayList; + public class InitAchievements{ - /*public static AchievementPage theAchievementPage; + public static final int CRAFTING_ACH = 0; + public static final int SMELTING_ACH = 1; + public static final int PICKUP_ACH = 2; + + public static AchievementPage theAchievementPage; public static ArrayList achievementList = new ArrayList(); - public static Achievement achievementCraftKnifeBlade; - public static Achievement achievementCraftKnife; - - public static Achievement achievementCraftDough; - public static Achievement achievementSmeltBaguette; - public static Achievement achievementCraftSubSandwich; - - public static Achievement achievementCraftMashedFood; - public static Achievement achievementCraftCompost; - public static Achievement achievementCraftFertilizer; - - public static Achievement achievementCraftPaperCone; - public static Achievement achievementCraftFrenchFry; - public static Achievement achievementCraftFrenchFries; - public static Achievement achievementCraftFishNChips;*/ - public static void init(){ - /*Util.logInfo("Initializing Achievements..."); - - achievementCraftKnifeBlade = new AchievementAA("craftKnifeBlade", -2, 0, new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_BLADE.ordinal()), null); - achievementCraftKnife = new AchievementAA("craftKnife", 0, 0, new ItemStack(InitItems.itemKnife), achievementCraftKnifeBlade); - - achievementCraftDough = new AchievementAA("craftDough", 0, -3, new ItemStack(InitItems.itemMisc, 1, TheMiscItems.DOUGH.ordinal()), achievementCraftKnife); - achievementSmeltBaguette = new AchievementAA("smeltBaguette", 2, -3, new ItemStack(InitItems.itemFoods, 1, TheFoods.BAGUETTE.ordinal()), achievementCraftDough); - achievementCraftSubSandwich = new AchievementAA("craftSubSandwich", 4, -3, new ItemStack(InitItems.itemFoods, 1, TheFoods.SUBMARINE_SANDWICH.ordinal()), achievementSmeltBaguette); - - achievementCraftMashedFood = new AchievementAA("craftMashedFood", 3, 0, new ItemStack(InitItems.itemMisc, 1, TheMiscItems.MASHED_FOOD.ordinal()), achievementCraftKnife); - achievementCraftCompost = new AchievementAA("craftCompost", 5, 0, new ItemStack(InitBlocks.blockCompost), achievementCraftMashedFood); - achievementCraftFertilizer = new AchievementAA("craftFertilizer", 7, 0, new ItemStack(InitItems.itemFertilizer), achievementCraftCompost); - - achievementCraftPaperCone = new AchievementAA("craftPaperCone", 0, 3, new ItemStack(InitItems.itemMisc, 1, TheMiscItems.PAPER_CONE.ordinal()), achievementCraftKnife); - achievementCraftFrenchFry = new AchievementAA("craftFrenchFry", 2, 3, new ItemStack(InitItems.itemFoods, 1, TheFoods.FRENCH_FRY.ordinal()), achievementCraftPaperCone); - achievementCraftFrenchFries = new AchievementAA("craftFrenchFries", 4, 4, new ItemStack(InitItems.itemFoods, 1, TheFoods.FRENCH_FRIES.ordinal()), achievementCraftFrenchFry); - achievementCraftFishNChips = new AchievementAA("craftFishNChips", 4, 2, new ItemStack(InitItems.itemFoods, 1, TheFoods.FISH_N_CHIPS.ordinal()), achievementCraftFrenchFry); + Util.logInfo("Initializing Achievements..."); + for(int i = 0; i < TheAchievements.values().length; i++){ + achievementList.add(TheAchievements.values()[i].ach); + } theAchievementPage = new AchievementPage(StatCollector.translateToLocal("achievement.page." + ModUtil.MOD_ID_LOWER), achievementList.toArray(new Achievement[achievementList.size()])); - AchievementPage.registerAchievementPage(theAchievementPage);*/ + AchievementPage.registerAchievementPage(theAchievementPage); } } diff --git a/src/main/java/ellpeck/actuallyadditions/achievement/TheAchievements.java b/src/main/java/ellpeck/actuallyadditions/achievement/TheAchievements.java new file mode 100644 index 000000000..d2e577f6d --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/achievement/TheAchievements.java @@ -0,0 +1,41 @@ +package ellpeck.actuallyadditions.achievement; + +import ellpeck.actuallyadditions.blocks.InitBlocks; +import ellpeck.actuallyadditions.blocks.metalists.TheMiscBlocks; +import ellpeck.actuallyadditions.items.InitItems; +import ellpeck.actuallyadditions.items.metalists.TheMiscItems; +import ellpeck.actuallyadditions.items.metalists.TheSpecialDrops; +import ellpeck.actuallyadditions.util.ModUtil; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.Achievement; + +public enum TheAchievements{ + + //Special Stuff Path + PICK_UP_XP("pickUpSolidXP", 0, 0, new ItemStack(InitItems.itemSpecialDrop, 1, TheSpecialDrops.SOLIDIFIED_EXPERIENCE.ordinal()), null, InitAchievements.PICKUP_ACH), + + //Food & Fertilizer Path + CRAFT_KNIFE_BLADE("craftKnifeBlade", 0, 2, new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_BLADE.ordinal()), null), + CRAFT_KNIFE("craftKnife", 2, 2, new ItemStack(InitItems.itemKnife), CRAFT_KNIFE_BLADE.ach), + CRAFT_MASHED_FOOD("craftMashedFood", 4, 2, new ItemStack(InitItems.itemMisc, 1, TheMiscItems.MASHED_FOOD.ordinal()), CRAFT_KNIFE.ach), + + //Machine Path + CRAFT_WOODEN_CASE("craftWoodenCasing", 0, -3, new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.WOOD_CASING.ordinal()), null), + CRAFT_STONE_CASE("craftStoneCasing", 2, -4, new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.STONE_CASING.ordinal()), CRAFT_WOODEN_CASE.ach), + CRAFT_COIL("craftBasicCoil", 2, -2, new ItemStack(InitItems.itemMisc, 1, TheMiscItems.COIL.ordinal()), CRAFT_WOODEN_CASE.ach), + CRAFT_ADVANCED_COIL("craftAdvancedCoil", 4, -2, new ItemStack(InitItems.itemMisc, 1, TheMiscItems.COIL_ADVANCED.ordinal()), CRAFT_COIL.ach); + + public final Achievement ach; + public final int type; + + TheAchievements(String name, int x, int y, ItemStack displayStack, Achievement hasToHaveBefore, int type){ + this.ach = new Achievement("achievement." + ModUtil.MOD_ID_LOWER + "." + name, ModUtil.MOD_ID_LOWER + "." + name, x, y, displayStack, hasToHaveBefore); + if(hasToHaveBefore == null) this.ach.initIndependentStat(); + this.ach.registerStat(); + this.type = type; + } + + TheAchievements(String name, int x, int y, ItemStack displayStack, Achievement hasToHaveBefore){ + this(name, x, y, displayStack, hasToHaveBefore, InitAchievements.CRAFTING_ACH); + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/BlockBreaker.java b/src/main/java/ellpeck/actuallyadditions/blocks/BlockBreaker.java new file mode 100644 index 000000000..7ae082b95 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/blocks/BlockBreaker.java @@ -0,0 +1,126 @@ +package ellpeck.actuallyadditions.blocks; + +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.TileEntityBreaker; +import ellpeck.actuallyadditions.util.BlockUtil; +import ellpeck.actuallyadditions.util.INameableItem; +import ellpeck.actuallyadditions.util.ModUtil; +import net.minecraft.block.Block; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.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.world.World; + +import java.util.List; + +public class BlockBreaker extends BlockContainerBase implements INameableItem{ + + private IIcon frontIcon; + private IIcon topIcon; + + private boolean isPlacer; + + public BlockBreaker(boolean isPlacer){ + super(Material.rock); + this.isPlacer = isPlacer; + this.setHarvestLevel("pickaxe", 0); + this.setHardness(1.0F); + this.setStepSound(soundTypeStone); + } + + @Override + public String getOredictName(){ + return this.getName(); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack){ + int rotation = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, rotation, 2); + } + + @Override + public TileEntity createNewTileEntity(World world, int par2){ + return new TileEntityBreaker(this.isPlacer); + } + + @Override + public IIcon getIcon(int side, int meta){ + if(side != meta && (side == 0 || side == 1)) return this.topIcon; + if(side == meta) return this.frontIcon; + return this.blockIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconReg){ + this.blockIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER + ":" + this.getName()); + this.frontIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER + ":" + this.getName() + "Front"); + this.topIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER + ":" + this.getName() + "Top"); + } + + @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){ + TileEntityBreaker breaker = (TileEntityBreaker)world.getTileEntity(x, y, z); + if (breaker != null) player.openGui(ActuallyAdditions.instance, GuiHandler.BREAKER_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 this.isPlacer ? "blockPlacer" : "blockBreaker"; + } + + 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, 1, ""); + } + + @Override + public int getMetadata(int damage){ + return damage; + } + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/BlockFurnaceDouble.java b/src/main/java/ellpeck/actuallyadditions/blocks/BlockFurnaceDouble.java index 0e98ffb15..5a0abd48c 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/BlockFurnaceDouble.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/BlockFurnaceDouble.java @@ -44,26 +44,6 @@ public class BlockFurnaceDouble extends BlockContainerBase implements INameableI return this.getName(); } - @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; diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/BlockGreenhouseGlass.java b/src/main/java/ellpeck/actuallyadditions/blocks/BlockGreenhouseGlass.java new file mode 100644 index 000000000..60f0291cf --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/blocks/BlockGreenhouseGlass.java @@ -0,0 +1,115 @@ +package ellpeck.actuallyadditions.blocks; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.tile.TileEntityGreenhouseGlass; +import ellpeck.actuallyadditions.util.BlockUtil; +import ellpeck.actuallyadditions.util.INameableItem; +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.item.EnumRarity; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Facing; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import java.util.List; + +public class BlockGreenhouseGlass extends BlockContainerBase implements INameableItem{ + + public BlockGreenhouseGlass(){ + super(Material.rock); + this.setHarvestLevel("pickaxe", 0); + this.setHardness(1.0F); + this.setStepSound(soundTypeStone); + } + + @Override + public String getOredictName(){ + return this.getName(); + } + + @Override + public boolean isOpaqueCube(){ + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass(){ + return 0; + } + + @Override + public boolean renderAsNormalBlock(){ + return false; + } + + @Override + public TileEntity createNewTileEntity(World world, int par2){ + return new TileEntityGreenhouseGlass(); + } + + @Override + public IIcon getIcon(int side, int metadata){ + return this.blockIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconReg){ + this.blockIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER + ":" + this.getName()); + } + + @Override + public String getName(){ + return "blockGreenhouseGlass"; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int meta){ + return world.getBlockMetadata(x, y, z) != world.getBlockMetadata(x-Facing.offsetsXForSide[meta], y-Facing.offsetsYForSide[meta], z-Facing.offsetsZForSide[meta]) || (world.getBlock(x, y, z) != this && super.shouldSideBeRendered(world, x, y, z, meta)); + + } + + 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, 1, ""); + } + + @Override + public int getMetadata(int damage){ + return damage; + } + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java b/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java index cca5866f2..ffb8d416a 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java @@ -20,6 +20,9 @@ public class InitBlocks{ public static Block blockFurnaceSolar; public static Block blockHeatCollector; public static Block blockItemRepairer; + public static Block blockGreenhouseGlass; + public static Block blockBreaker; + public static Block blockPlacer; public static void init(){ Util.logInfo("Initializing Blocks..."); @@ -62,5 +65,14 @@ public class InitBlocks{ blockItemRepairer = new BlockItemRepairer(); BlockUtil.register(blockItemRepairer, BlockItemRepairer.TheItemBlock.class); + + blockGreenhouseGlass = new BlockGreenhouseGlass(); + BlockUtil.register(blockGreenhouseGlass, BlockGreenhouseGlass.TheItemBlock.class); + + blockBreaker = new BlockBreaker(false); + BlockUtil.register(blockBreaker, BlockBreaker.TheItemBlock.class); + + blockPlacer = new BlockBreaker(true); + BlockUtil.register(blockPlacer, BlockBreaker.TheItemBlock.class); } } \ 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 bc45c35c0..bff46792b 100644 --- a/src/main/java/ellpeck/actuallyadditions/config/ConfigValues.java +++ b/src/main/java/ellpeck/actuallyadditions/config/ConfigValues.java @@ -75,6 +75,8 @@ public class ConfigValues{ public static int jamVillagerID; public static boolean jamVillagerExists; + public static int greenhouseGlassTimeNeeded; + public static void defineConfigValues(Configuration config){ for(int i = 0; i < enabledFoodRecipes.length; i++){ @@ -159,5 +161,7 @@ public class ConfigValues{ repairerSpeedSlowdown = config.getInt("Item Repairer: Speed Slowdown", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 2, 1, 100, "How much slower the Item Repairer repairs"); heatCollectorBlocksNeeded = config.getInt("Heat Collector: Blocks Needed", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 4, 1, 5, "How many Blocks are needed for the Heat Collector to power Machines above it"); heatCollectorRandomChance = config.getInt("Heat Collector: Random Chance", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 10000, 10, 100000, "The Chance of the Heat Collector destroying a Lava Block around (Default Value 2000 meaning a 1/2000 Chance!)"); + + greenhouseGlassTimeNeeded = config.getInt("Greenhouse Glass: Time Needed", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 1000, 10, 1000000, "The Time Needed for the Greenhouse Glass to grow a Plant below it"); } } diff --git a/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java b/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java index 4ae2c787b..62e5708d7 100644 --- a/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java +++ b/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java @@ -28,13 +28,16 @@ public class CreativeTab extends CreativeTabs{ this.addBlock(InitBlocks.blockInputter); this.addBlock(InitBlocks.blockInputterAdvanced); + this.addBlock(InitBlocks.blockGreenhouseGlass); this.addBlock(InitBlocks.blockGrinder); this.addBlock(InitBlocks.blockGrinderDouble); this.addBlock(InitBlocks.blockFurnaceDouble); this.addBlock(InitBlocks.blockFurnaceSolar); - this.addBlock(InitBlocks.blockFishingNet); this.addBlock(InitBlocks.blockHeatCollector); this.addBlock(InitBlocks.blockItemRepairer); + this.addBlock(InitBlocks.blockFishingNet); + this.addBlock(InitBlocks.blockBreaker); + this.addBlock(InitBlocks.blockPlacer); this.addBlock(InitBlocks.blockMisc); this.addBlock(InitBlocks.blockFeeder); diff --git a/src/main/java/ellpeck/actuallyadditions/event/CraftEvent.java b/src/main/java/ellpeck/actuallyadditions/event/CraftEvent.java index 32026b10e..12f44f3a9 100644 --- a/src/main/java/ellpeck/actuallyadditions/event/CraftEvent.java +++ b/src/main/java/ellpeck/actuallyadditions/event/CraftEvent.java @@ -2,40 +2,27 @@ package ellpeck.actuallyadditions.event; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; +import ellpeck.actuallyadditions.achievement.InitAchievements; +import ellpeck.actuallyadditions.achievement.TheAchievements; +import net.minecraft.item.ItemStack; public class CraftEvent{ @SubscribeEvent public void onCraftedEvent(PlayerEvent.ItemCraftedEvent event){ - /*if(event.crafting.getItem() == InitItems.itemMisc && event.crafting.getItemDamage() == TheMiscItems.DOUGH.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftDough, 1); + checkAchievements(event.crafting, event, InitAchievements.CRAFTING_ACH); + } + + public static void checkAchievements(ItemStack gotten, PlayerEvent event, int type){ + for(int i = 0; i < TheAchievements.values().length; i++){ + TheAchievements ach = TheAchievements.values()[i]; + if(ach.type == type){ + if(gotten.getItem() == ach.ach.theItemStack.getItem()){ + if(gotten.getItemDamage() == ach.ach.theItemStack.getItemDamage()){ + event.player.addStat(ach.ach, 1); + } + } + } } - if(event.crafting.getItem() == InitItems.itemMisc && event.crafting.getItemDamage() == TheMiscItems.MASHED_FOOD.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftMashedFood, 1); - } - if(event.crafting.getItem() == InitItems.itemMisc && event.crafting.getItemDamage() == TheMiscItems.KNIFE_BLADE.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftKnifeBlade, 1); - } - if(event.crafting.getItem() == InitItems.itemKnife){ - event.player.addStat(InitAchievements.achievementCraftKnife, 1); - } - if(event.crafting.getItem() == InitItems.itemFoods && event.crafting.getItemDamage() == TheFoods.SUBMARINE_SANDWICH.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftSubSandwich, 1); - } - if(event.crafting.getItem() == InitItems.itemMisc && event.crafting.getItemDamage() == TheMiscItems.PAPER_CONE.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftPaperCone, 1); - } - if(event.crafting.getItem() == InitItems.itemFoods && event.crafting.getItemDamage() == TheFoods.FRENCH_FRY.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftFrenchFry, 1); - } - if(event.crafting.getItem() == InitItems.itemFoods && event.crafting.getItemDamage() == TheFoods.FRENCH_FRIES.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftFrenchFries, 1); - } - if(event.crafting.getItem() == InitItems.itemFoods && event.crafting.getItemDamage() == TheFoods.FISH_N_CHIPS.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftFishNChips, 1); - } - if(event.crafting.getItem()== Item.getItemFromBlock(InitBlocks.blockCompost)){ - event.player.addStat(InitAchievements.achievementCraftCompost, 1); - }*/ } } diff --git a/src/main/java/ellpeck/actuallyadditions/event/InitEvents.java b/src/main/java/ellpeck/actuallyadditions/event/InitEvents.java index f746dc286..2dd7d230e 100644 --- a/src/main/java/ellpeck/actuallyadditions/event/InitEvents.java +++ b/src/main/java/ellpeck/actuallyadditions/event/InitEvents.java @@ -10,6 +10,7 @@ public class InitEvents{ Util.registerEvent(new SmeltEvent()); Util.registerEvent(new CraftEvent()); Util.registerEvent(new KilledEvent()); + Util.registerEvent(new PickupEvent()); } } diff --git a/src/main/java/ellpeck/actuallyadditions/event/PickupEvent.java b/src/main/java/ellpeck/actuallyadditions/event/PickupEvent.java new file mode 100644 index 000000000..1eea58cf6 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/event/PickupEvent.java @@ -0,0 +1,14 @@ +package ellpeck.actuallyadditions.event; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.PlayerEvent; +import ellpeck.actuallyadditions.achievement.InitAchievements; + +public class PickupEvent{ + + @SubscribeEvent + public void onCraftedEvent(PlayerEvent.ItemPickupEvent event){ + CraftEvent.checkAchievements(event.pickedUp.getEntityItem(), event, InitAchievements.PICKUP_ACH); + } + +} diff --git a/src/main/java/ellpeck/actuallyadditions/event/SmeltEvent.java b/src/main/java/ellpeck/actuallyadditions/event/SmeltEvent.java index a88ba7606..c23398842 100644 --- a/src/main/java/ellpeck/actuallyadditions/event/SmeltEvent.java +++ b/src/main/java/ellpeck/actuallyadditions/event/SmeltEvent.java @@ -2,13 +2,12 @@ package ellpeck.actuallyadditions.event; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; +import ellpeck.actuallyadditions.achievement.InitAchievements; public class SmeltEvent{ @SubscribeEvent public void onSmeltedEvent(PlayerEvent.ItemSmeltedEvent event){ - /*if(event.smelting.getItem() == InitItems.itemFoods && event.smelting.getItemDamage() == TheFoods.BAGUETTE.ordinal()){ - event.player.addStat(InitAchievements.achievementSmeltBaguette, 1); - }*/ + CraftEvent.checkAchievements(event.smelting, event, InitAchievements.SMELTING_ACH); } } diff --git a/src/main/java/ellpeck/actuallyadditions/gen/JamVillagerTradeHandler.java b/src/main/java/ellpeck/actuallyadditions/gen/JamVillagerTradeHandler.java index aa4a3a2cf..7e5c1f900 100644 --- a/src/main/java/ellpeck/actuallyadditions/gen/JamVillagerTradeHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/gen/JamVillagerTradeHandler.java @@ -37,7 +37,7 @@ public class JamVillagerTradeHandler implements VillagerRegistry.IVillageTradeHa ItemStack wantsOne = villagerWants.get(i); wantsOne.stackSize = rand.nextInt(10)+10; if(wantsOne.stackSize > wantsOne.getMaxStackSize()) wantsOne.stackSize = wantsOne.getMaxStackSize(); - if(rand.nextInt(10) == 0){ + if(rand.nextInt(5) == 0){ wantsTwo = villagerWants.get(rand.nextInt(villagerWants.size())); wantsTwo.stackSize = rand.nextInt(10)+1; if(wantsTwo.stackSize > wantsTwo.getMaxStackSize()) wantsTwo.stackSize = wantsTwo.getMaxStackSize(); diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/ContainerBreaker.java b/src/main/java/ellpeck/actuallyadditions/inventory/ContainerBreaker.java new file mode 100644 index 000000000..bdcc63144 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/inventory/ContainerBreaker.java @@ -0,0 +1,76 @@ +package ellpeck.actuallyadditions.inventory; + +import ellpeck.actuallyadditions.tile.TileEntityBase; +import ellpeck.actuallyadditions.tile.TileEntityBreaker; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerBreaker extends Container{ + + private TileEntityBreaker breaker; + + public ContainerBreaker(InventoryPlayer inventory, TileEntityBase tile){ + this.breaker = (TileEntityBreaker)tile; + + for (int i = 0; i < 3; i++){ + for (int j = 0; j < 3; j++){ + this.addSlotToContainer(new Slot(this.breaker, j+i*3, 62+j*18, 21+i*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)); + } + } + for (int i = 0; i < 9; i++){ + this.addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 155)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player){ + return this.breaker.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slot){ + final int inventoryStart = 9; + 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(slot <= hotbarEnd && slot >= inventoryStart){ + this.mergeItemStack(newStack, 0, 9+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 4529ab5ff..847814ae4 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/ContainerInputter.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/ContainerInputter.java @@ -35,7 +35,7 @@ public class ContainerInputter extends Container{ 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*85, 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)); diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiBreaker.java b/src/main/java/ellpeck/actuallyadditions/inventory/GuiBreaker.java new file mode 100644 index 000000000..9975882b7 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiBreaker.java @@ -0,0 +1,47 @@ +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.TileEntityBreaker; +import ellpeck.actuallyadditions.util.AssetUtil; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class GuiBreaker extends GuiContainer{ + + private TileEntityBreaker breaker; + + private static final ResourceLocation resLoc = AssetUtil.getGuiLocation("guiBreaker"); + + public GuiBreaker(InventoryPlayer inventory, TileEntityBase tile){ + super(new ContainerBreaker(inventory, tile)); + this.breaker = (TileEntityBreaker)tile; + this.xSize = 176; + this.ySize = 93+86; + } + + @Override + public void drawGuiContainerForegroundLayer(int x, int y){ + AssetUtil.displayNameAndInventoryString(this.fontRendererObj, xSize, 93-5, -10, this.breaker.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); + } + + @Override + public void drawScreen(int x, int y, float f){ + super.drawScreen(x, y, f); + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiCrafter.java b/src/main/java/ellpeck/actuallyadditions/inventory/GuiCrafter.java index a9f94cc28..6a3357f93 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiCrafter.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiCrafter.java @@ -2,6 +2,8 @@ package ellpeck.actuallyadditions.inventory; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.util.AssetUtil; +import ellpeck.actuallyadditions.util.ModUtil; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; @@ -19,6 +21,11 @@ public class GuiCrafter extends GuiContainer{ this.ySize = 166; } + @Override + public void drawGuiContainerForegroundLayer(int x, int y){ + AssetUtil.displayNameAndInventoryString(this.fontRendererObj, xSize, 74, -10, "container." + ModUtil.MOD_ID_LOWER + ".crafting"); + } + @Override public void drawGuiContainerBackgroundLayer(float f, int x, int y){ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFeeder.java b/src/main/java/ellpeck/actuallyadditions/inventory/GuiFeeder.java index e9e65625e..288a1a8b2 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFeeder.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiFeeder.java @@ -29,6 +29,11 @@ public class GuiFeeder extends GuiContainer{ this.ySize = 70+86; } + @Override + public void drawGuiContainerForegroundLayer(int x, int y){ + AssetUtil.displayNameAndInventoryString(this.fontRendererObj, xSize, 70-5, -10, this.tileFeeder.getInventoryName()); + } + @Override public void drawGuiContainerBackgroundLayer(float f, int x, int y){ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFurnaceDouble.java b/src/main/java/ellpeck/actuallyadditions/inventory/GuiFurnaceDouble.java index 4dc51d6d5..3afe84460 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiFurnaceDouble.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiFurnaceDouble.java @@ -23,6 +23,11 @@ public class GuiFurnaceDouble extends GuiContainer{ this.ySize = 93+86; } + @Override + public void drawGuiContainerForegroundLayer(int x, int y){ + AssetUtil.displayNameAndInventoryString(this.fontRendererObj, xSize, 93-5, -10, this.tileFurnace.getInventoryName()); + } + @Override public void drawGuiContainerBackgroundLayer(float f, int x, int y){ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiGiantChest.java b/src/main/java/ellpeck/actuallyadditions/inventory/GuiGiantChest.java index a5d8cd670..9d85dc943 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiGiantChest.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiGiantChest.java @@ -3,6 +3,7 @@ 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.TileEntityGiantChest; import ellpeck.actuallyadditions.util.AssetUtil; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; @@ -14,13 +15,21 @@ public class GuiGiantChest extends GuiContainer{ private static final ResourceLocation resLoc = AssetUtil.getGuiLocation("guiGiantChest"); + TileEntityGiantChest chest; + public GuiGiantChest(InventoryPlayer inventory, TileEntityBase tile){ super(new ContainerGiantChest(inventory, tile)); + this.chest = (TileEntityGiantChest)tile; this.xSize = 242; this.ySize = 172+86; } + @Override + public void drawGuiContainerForegroundLayer(int x, int y){ + AssetUtil.displayNameAndInventoryString(this.fontRendererObj, xSize, 172-5, -10, this.chest.getInventoryName()); + } + @Override public void drawGuiContainerBackgroundLayer(float f, int x, int y){ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiGrinder.java b/src/main/java/ellpeck/actuallyadditions/inventory/GuiGrinder.java index 76e16a332..b9f723df7 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiGrinder.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiGrinder.java @@ -26,6 +26,11 @@ public class GuiGrinder extends GuiContainer{ this.ySize = 93+86; } + @Override + public void drawGuiContainerForegroundLayer(int x, int y){ + AssetUtil.displayNameAndInventoryString(this.fontRendererObj, xSize, 93-5, -10, this.tileGrinder.getInventoryName()); + } + @Override public void drawGuiContainerBackgroundLayer(float f, int x, int y){ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiHandler.java b/src/main/java/ellpeck/actuallyadditions/inventory/GuiHandler.java index a4ef75c5c..57b74302c 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiHandler.java @@ -40,6 +40,9 @@ public class GuiHandler implements IGuiHandler{ case REPAIRER_ID: TileEntityBase tileRepairer = (TileEntityBase)world.getTileEntity(x, y, z); return new ContainerRepairer(entityPlayer.inventory, tileRepairer); + case BREAKER_ID: + TileEntityBase tileBreaker = (TileEntityBase)world.getTileEntity(x, y, z); + return new ContainerBreaker(entityPlayer.inventory, tileBreaker); default: return null; } @@ -74,6 +77,9 @@ public class GuiHandler implements IGuiHandler{ case REPAIRER_ID: TileEntityBase tileRepairer = (TileEntityBase)world.getTileEntity(x, y, z); return new GuiRepairer(entityPlayer.inventory, tileRepairer); + case BREAKER_ID: + TileEntityBase tileBreaker = (TileEntityBase)world.getTileEntity(x, y, z); + return new GuiBreaker(entityPlayer.inventory, tileBreaker); default: return null; } @@ -88,6 +94,7 @@ public class GuiHandler implements IGuiHandler{ public static final int INPUTTER_ID = 6; public static final int REPAIRER_ID = 7; public static final int INPUTTER_ADVANCED_ID = 8; + public static final int BREAKER_ID = 9; 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 index 10e1cd684..4b036a739 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiInputter.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiInputter.java @@ -60,6 +60,11 @@ public class GuiInputter extends GuiContainer{ this.isAdvanced = isAdvanced; } + @Override + public void drawGuiContainerForegroundLayer(int x, int y){ + AssetUtil.displayNameAndInventoryString(this.fontRendererObj, xSize, this.isAdvanced ? 105-5 : 93-5, -10, this.tileInputter.getInventoryName()); + } + @SuppressWarnings("unchecked") @Override public void initGui(){ diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/GuiRepairer.java b/src/main/java/ellpeck/actuallyadditions/inventory/GuiRepairer.java index 7d403e042..81151158b 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/GuiRepairer.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/GuiRepairer.java @@ -23,6 +23,11 @@ public class GuiRepairer extends GuiContainer{ this.ySize = 93+86; } + @Override + public void drawGuiContainerForegroundLayer(int x, int y){ + AssetUtil.displayNameAndInventoryString(this.fontRendererObj, xSize, 93-5, -10, this.tileRepairer.getInventoryName()); + } + @Override public void drawGuiContainerBackgroundLayer(float f, int x, int y){ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemJams.java b/src/main/java/ellpeck/actuallyadditions/items/ItemJams.java index 1f57ab62a..e8b4631a8 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/ItemJams.java +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemJams.java @@ -83,14 +83,11 @@ public class ItemJams extends ItemFood implements INameableItem{ ItemStack stackToReturn = super.onEaten(stack, world, player); if(!world.isRemote){ - if(allJams[stack.getItemDamage()].firstEffectToGet != 0){ - PotionEffect firstEffectToGet = new PotionEffect(allJams[stack.getItemDamage()].firstEffectToGet, 200); - player.addPotionEffect(firstEffectToGet); - } - if(allJams[stack.getItemDamage()].secondEffectToGet != 0){ - PotionEffect secondEffectToGet = new PotionEffect(allJams[stack.getItemDamage()].secondEffectToGet, 600); - player.addPotionEffect(secondEffectToGet); - } + PotionEffect firstEffectToGet = new PotionEffect(allJams[stack.getItemDamage()].firstEffectToGet, 200); + player.addPotionEffect(firstEffectToGet); + + PotionEffect secondEffectToGet = new PotionEffect(allJams[stack.getItemDamage()].secondEffectToGet, 600); + player.addPotionEffect(secondEffectToGet); ItemStack returnItem = new ItemStack(Items.glass_bottle); if(!player.inventory.addItemStackToInventory(returnItem.copy())){ diff --git a/src/main/java/ellpeck/actuallyadditions/items/metalists/TheJams.java b/src/main/java/ellpeck/actuallyadditions/items/metalists/TheJams.java index db7df8ac5..fc770f571 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/metalists/TheJams.java +++ b/src/main/java/ellpeck/actuallyadditions/items/metalists/TheJams.java @@ -5,11 +5,12 @@ import net.minecraft.item.EnumRarity; public enum TheJams implements INameableItem{ - CU_BA_RA("CuBaRa", 5, 2F, EnumRarity.common, "jamCuBaRa", 5, 12, 12595273), - GRA_KI_BA("GraKiBa", 5, 2F, EnumRarity.common, "jamGraKiBa", 16, 13, 5492820), - PL_AP_LE("PlApLe", 5, 2F, EnumRarity.common, "jamPlApLe", 15, 3, 13226009), - CH_AP_CI("ChApCi", 5, 2F, EnumRarity.common, "jamChApCi", 10, 1, 13189222), - HO_ME_KI("HoMeKi", 5, 2F, EnumRarity.common, "jamHoMeKi", 10, 14, 2031360); + CU_BA_RA("CuBaRa", 20, 5F, EnumRarity.rare, "jamCuBaRa", 5, 12, 12595273), + GRA_KI_BA("GraKiBa", 20, 5F, EnumRarity.rare, "jamGraKiBa", 16, 13, 5492820), + PL_AP_LE("PlApLe", 20, 5F, EnumRarity.rare, "jamPlApLe", 15, 3, 13226009), + CH_AP_CI("ChApCi", 20, 5F, EnumRarity.rare, "jamChApCi", 10, 1, 13189222), + HO_ME_KI("HoMeKi", 20, 5F, EnumRarity.rare, "jamHoMeKi", 10, 14, 2031360), + PI_CO("PiCo", 20, 5F, EnumRarity.rare, "jamPiCo", 9, 1, 16056203); public final String name; public final String oredictName; diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java index 47bdcbbc8..d676a87f0 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java @@ -39,6 +39,8 @@ public class TileEntityBase extends TileEntity{ GameRegistry.registerTileEntity(TileEntityFurnaceSolar.class, ModUtil.MOD_ID_LOWER + ":tileEntityFurnaceSolar"); GameRegistry.registerTileEntity(TileEntityHeatCollector.class, ModUtil.MOD_ID_LOWER + ":tileEntityHeatCollector"); GameRegistry.registerTileEntity(TileEntityItemRepairer.class, ModUtil.MOD_ID_LOWER + ":tileEntityRepairer"); + GameRegistry.registerTileEntity(TileEntityGreenhouseGlass.class, ModUtil.MOD_ID_LOWER + ":tileEntityGreenhouseGlass"); + GameRegistry.registerTileEntity(TileEntityBreaker.class, ModUtil.MOD_ID_LOWER + ":tileEntityBreaker"); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBreaker.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBreaker.java new file mode 100644 index 000000000..6a2a1b291 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBreaker.java @@ -0,0 +1,129 @@ +package ellpeck.actuallyadditions.tile; + +import ellpeck.actuallyadditions.util.WorldUtil; +import net.minecraft.block.Block; +import net.minecraft.block.BlockAir; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChunkCoordinates; + +import java.util.ArrayList; + +public class TileEntityBreaker extends TileEntityInventoryBase{ + + private boolean isPlacer; + + @SuppressWarnings("unused") + public TileEntityBreaker(){ + super(9, ""); + } + + public TileEntityBreaker(boolean isPlacer){ + super(9, isPlacer ? "placer" : "breaker"); + this.isPlacer = isPlacer; + } + + @Override + @SuppressWarnings("unchecked") + public void updateEntity(){ + if(!worldObj.isRemote){ + if(!worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)){ + int sideToBreak = -1; + + int metaOfCurrentBlock = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); + if(metaOfCurrentBlock == 0) sideToBreak = 1; + else if(metaOfCurrentBlock == 1) sideToBreak = 0; + else if(metaOfCurrentBlock == 2) sideToBreak = 2; + else if(metaOfCurrentBlock == 3) sideToBreak = 4; + else if(metaOfCurrentBlock == 4) sideToBreak = 5; + else if(metaOfCurrentBlock == 5) sideToBreak = 3; + + ChunkCoordinates coordsOfBlockToBreak = WorldUtil.getCoordsFromSide(sideToBreak, xCoord, yCoord, zCoord); + if(coordsOfBlockToBreak != null){ + Block blockToBreak = worldObj.getBlock(coordsOfBlockToBreak.posX, coordsOfBlockToBreak.posY, coordsOfBlockToBreak.posZ); + if(!this.isPlacer && blockToBreak != null && blockToBreak.getBlockHardness(worldObj, coordsOfBlockToBreak.posX, coordsOfBlockToBreak.posY, coordsOfBlockToBreak.posZ) > -1.0F){ + ArrayList drops = new ArrayList(); + int meta = worldObj.getBlockMetadata(coordsOfBlockToBreak.posX, coordsOfBlockToBreak.posY, coordsOfBlockToBreak.posZ); + drops.addAll(blockToBreak.getDrops(worldObj, coordsOfBlockToBreak.posX, coordsOfBlockToBreak.posY, coordsOfBlockToBreak.posZ, meta, 0)); + + if(this.addToInventory(drops, false)){ + worldObj.playAuxSFX(2001, coordsOfBlockToBreak.posX, coordsOfBlockToBreak.posY, coordsOfBlockToBreak.posZ, Block.getIdFromBlock(blockToBreak) + (meta << 12)); + WorldUtil.breakBlockAtSide(sideToBreak, worldObj, xCoord, yCoord, zCoord); + this.addToInventory(drops, true); + this.markDirty(); + } + } + else if(this.isPlacer && (worldObj.getBlock(coordsOfBlockToBreak.posX, coordsOfBlockToBreak.posY, coordsOfBlockToBreak.posZ).isReplaceable(worldObj, coordsOfBlockToBreak.posX, coordsOfBlockToBreak.posY, coordsOfBlockToBreak.posZ))){ + ItemStack removeFalse = this.removeFromInventory(false); + if(removeFalse != null && Block.getBlockFromItem(removeFalse.getItem()) != blockToBreak && Block.getBlockFromItem(removeFalse.getItem()).canPlaceBlockAt(worldObj, coordsOfBlockToBreak.posX, coordsOfBlockToBreak.posY, coordsOfBlockToBreak.posZ)){ + ItemStack stack = this.removeFromInventory(true); + //TODO insert sound effect + WorldUtil.placeBlockAtSide(sideToBreak, worldObj, xCoord, yCoord, zCoord, stack); + } + } + } + } + } + } + + @Override + public void writeToNBT(NBTTagCompound compound){ + super.writeToNBT(compound); + compound.setBoolean("IsPlacer", this.isPlacer); + compound.setString("Name", this.name); + } + + @Override + public void readFromNBT(NBTTagCompound compound){ + super.readFromNBT(compound); + this.isPlacer = compound.getBoolean("IsPlacer"); + this.name = compound.getString("Name"); + } + + public boolean addToInventory(ArrayList stacks, boolean actuallyDo){ + int working = 0; + for(ItemStack stack : stacks){ + for(int i = 0; i < this.slots.length; i++){ + if(this.slots[i] == null || (this.slots[i].isItemEqual(stack) && this.slots[i].stackSize <= stack.getMaxStackSize()-stack.stackSize)){ + working++; + if(actuallyDo){ + if(this.slots[i] == null) this.slots[i] = stack.copy(); + else this.slots[i].stackSize += stack.stackSize; + } + break; + } + } + } + return working >= stacks.size(); + } + + public ItemStack removeFromInventory(boolean actuallyDo){ + for(int i = 0; i < this.slots.length; i++){ + if(this.slots[i] != null && !(Block.getBlockFromItem(this.slots[i].getItem()) instanceof BlockAir)){ + ItemStack slot = this.slots[i].copy(); + if(actuallyDo){ + this.slots[i].stackSize--; + if(this.slots[i].stackSize <= 0) this.slots[i] = null; + } + return slot; + } + } + return null; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack){ + return this.isPlacer; + } + + @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/TileEntityCompost.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCompost.java index fa080ce8b..b6b2797ba 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCompost.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityCompost.java @@ -16,7 +16,7 @@ public class TileEntityCompost extends TileEntityInventoryBase{ public int conversionTime; public TileEntityCompost(){ - super(1, "tileEntityCompost"); + super(1, "compost"); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFeeder.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFeeder.java index 62f282445..d4ef447ed 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFeeder.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFeeder.java @@ -24,7 +24,7 @@ public class TileEntityFeeder extends TileEntityInventoryBase{ public int currentAnimalAmount; public TileEntityFeeder(){ - super(1, "tileEntityFeeder"); + super(1, "feeder"); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceDouble.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceDouble.java index 0723921e7..4061dea70 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceDouble.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceDouble.java @@ -26,7 +26,7 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements public int secondSmeltTime; public TileEntityFurnaceDouble(){ - super(5, "tileEntityFurnaceDouble"); + super(5, "furnaceDouble"); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceSolar.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceSolar.java index c17758a26..219a17dd3 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceSolar.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceSolar.java @@ -1,5 +1,6 @@ package ellpeck.actuallyadditions.tile; +import ellpeck.actuallyadditions.util.WorldUtil; import net.minecraft.block.BlockFurnace; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; @@ -10,7 +11,7 @@ public class TileEntityFurnaceSolar extends TileEntityBase{ public void updateEntity(){ if(!worldObj.isRemote){ if(worldObj.canBlockSeeTheSky(xCoord, yCoord, zCoord) && worldObj.isDaytime()){ - TileEntity tileBelow = TileEntityInputter.getTileEntityFromSide(1, worldObj, xCoord, yCoord, zCoord); + TileEntity tileBelow = WorldUtil.getTileEntityFromSide(1, worldObj, xCoord, yCoord, zCoord); givePowerTo(tileBelow); } diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGiantChest.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGiantChest.java index 821035a55..7d9c0dd33 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(9*13, "tileEntityGiantChest"); + super(9*13, "giantChest"); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGreenhouseGlass.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGreenhouseGlass.java new file mode 100644 index 000000000..925bb0f34 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGreenhouseGlass.java @@ -0,0 +1,58 @@ +package ellpeck.actuallyadditions.tile; + +import ellpeck.actuallyadditions.config.ConfigValues; +import net.minecraft.block.Block; +import net.minecraft.block.BlockAir; +import net.minecraft.block.BlockGrass; +import net.minecraft.block.IGrowable; +import net.minecraft.init.Items; +import net.minecraft.item.ItemDye; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.world.WorldServer; +import net.minecraftforge.common.util.FakePlayerFactory; + +import java.util.Random; + +public class TileEntityGreenhouseGlass extends TileEntityBase{ + + private int timeUntilNextFertToSet = ConfigValues.greenhouseGlassTimeNeeded; + + private int timeUntilNextFert; + + @Override + public void updateEntity(){ + if(!worldObj.isRemote){ + if(worldObj.canBlockSeeTheSky(xCoord, yCoord, zCoord) && worldObj.isDaytime()){ + ChunkCoordinates blockToFert = this.blockToFertilize(); + if(blockToFert != null){ + Random rand = new Random(); + if(this.timeUntilNextFert > 0){ + this.timeUntilNextFert--; + if(timeUntilNextFert <= 0){ + this.applyBonemealEffect(blockToFert); + } + } + else this.timeUntilNextFert = this.timeUntilNextFertToSet + rand.nextInt(this.timeUntilNextFertToSet/2); + } + } + } + } + + public ChunkCoordinates blockToFertilize(){ + for(int i = yCoord-1; i > 0; i--){ + Block block = worldObj.getBlock(xCoord, i, zCoord); + if(block != null && !(block instanceof BlockAir)){ + if(block instanceof IGrowable && !(block instanceof BlockGrass)){ + return new ChunkCoordinates(xCoord, i, zCoord); + } + else return null; + } + } + return null; + } + + public boolean applyBonemealEffect(ChunkCoordinates coords){ + return ItemDye.applyBonemeal(new ItemStack(Items.dye, 1, 15), worldObj, coords.posX, coords.posY, coords.posZ, FakePlayerFactory.getMinecraft((WorldServer)worldObj)); + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGrinder.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGrinder.java index 4ed87a743..b6ded0b57 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGrinder.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityGrinder.java @@ -36,7 +36,7 @@ public class TileEntityGrinder extends TileEntityInventoryBase implements IPower } public TileEntityGrinder(boolean isDouble){ - super(isDouble ? 7 : 4, isDouble ? "tileEntityGrinderDouble" : "tileEntityGrinder"); + super(isDouble ? 7 : 4, isDouble ? "grinderDouble" : "grinder"); this.maxCrushTime = isDouble ? ConfigValues.grinderDoubleCrushTime : ConfigValues.grinderCrushTime; this.isDouble = isDouble; } diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityHeatCollector.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityHeatCollector.java index f1b5c3e98..da76a4578 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityHeatCollector.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityHeatCollector.java @@ -1,11 +1,11 @@ package ellpeck.actuallyadditions.tile; import ellpeck.actuallyadditions.config.ConfigValues; +import ellpeck.actuallyadditions.util.WorldUtil; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChunkCoordinates; -import net.minecraft.world.World; import java.util.ArrayList; import java.util.Random; @@ -21,7 +21,7 @@ public class TileEntityHeatCollector extends TileEntityBase{ ArrayList blocksAround = new ArrayList(); for(int i = 1; i <= 5; i++){ - ChunkCoordinates coords = getBlockFromSide(i, xCoord, yCoord, zCoord); + ChunkCoordinates coords = WorldUtil.getCoordsFromSide(i, xCoord, yCoord, zCoord); if(coords != null){ Block block = worldObj.getBlock(coords.posX, coords.posY, coords.posZ); if(block != null && block.getMaterial() == Material.lava && worldObj.getBlockMetadata(coords.posX, coords.posY, coords.posZ) == 0){ @@ -31,35 +31,16 @@ public class TileEntityHeatCollector extends TileEntityBase{ } if(blocksAround.size() >= blocksNeeded){ - TileEntity tileAbove = TileEntityInputter.getTileEntityFromSide(0, worldObj, xCoord, yCoord, zCoord); + TileEntity tileAbove = WorldUtil.getTileEntityFromSide(0, worldObj, xCoord, yCoord, zCoord); TileEntityFurnaceSolar.givePowerTo(tileAbove); Random rand = new Random(); if(rand.nextInt(randomChance) == 0){ int randomSide = blocksAround.get(rand.nextInt(blocksAround.size())); - breakBlockAtSide(randomSide, worldObj, xCoord, yCoord, zCoord); + WorldUtil.breakBlockAtSide(randomSide, worldObj, xCoord, yCoord, zCoord); } } } } - - public static ChunkCoordinates getBlockFromSide(int side, int x, int y, int z){ - if(side == 0) return new ChunkCoordinates(x, y + 1, z); - if(side == 1) return new ChunkCoordinates(x, y - 1, z); - if(side == 2) return new ChunkCoordinates(x, y, z - 1); - if(side == 3) return new ChunkCoordinates(x - 1, y, z); - if(side == 4) return new ChunkCoordinates(x, y, z + 1); - if(side == 5) return new ChunkCoordinates(x + 1, y, z); - else return null; - } - - public static void breakBlockAtSide(int side, World world, int x, int y, int z){ - if(side == 0) world.setBlockToAir(x, y + 1, z); - if(side == 1) world.setBlockToAir(x, y - 1, z); - if(side == 2) world.setBlockToAir(x, y, z - 1); - if(side == 3) world.setBlockToAir(x - 1, y, z); - if(side == 4) world.setBlockToAir(x, y, z + 1); - if(side == 5) world.setBlockToAir(x + 1, y, z); - } } diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInputter.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInputter.java index f739b83b7..037c61d80 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInputter.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInputter.java @@ -1,11 +1,11 @@ package ellpeck.actuallyadditions.tile; +import ellpeck.actuallyadditions.util.WorldUtil; 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.world.World; public class TileEntityInputter extends TileEntityInventoryBase{ @@ -29,7 +29,7 @@ public class TileEntityInputter extends TileEntityInventoryBase{ } public TileEntityInputter(boolean isAdvanced){ - super(isAdvanced ? 13 : 1, isAdvanced ? "tilEntityInputterAdvanced" : "tileEntityInputter"); + super(isAdvanced ? 13 : 1, isAdvanced ? "inputterAdvanced" : "inputter"); this.isAdvanced = isAdvanced; } @@ -177,8 +177,8 @@ public class TileEntityInputter extends TileEntityInventoryBase{ } public void initVars(){ - this.placeToPull = getTileEntityFromSide(this.sideToPull, this.worldObj, this.xCoord, this.yCoord, this.zCoord); - this.placeToPut = getTileEntityFromSide(this.sideToPut, this.worldObj, this.xCoord, this.yCoord, this.zCoord); + this.placeToPull = WorldUtil.getTileEntityFromSide(this.sideToPull, this.worldObj, this.xCoord, this.yCoord, this.zCoord); + this.placeToPut = WorldUtil.getTileEntityFromSide(this.sideToPut, this.worldObj, this.xCoord, this.yCoord, this.zCoord); if(this.placeToPull != null && this.placeToPull instanceof IInventory){ this.placeToPullSlotAmount = ((IInventory)this.placeToPull).getSizeInventory(); @@ -197,16 +197,6 @@ public class TileEntityInputter extends TileEntityInventoryBase{ } } - public static TileEntity getTileEntityFromSide(int side, World world, int x, int y, int z){ - if(side == 0) return world.getTileEntity(x, y+1, z); - if(side == 1) return world.getTileEntity(x, y-1, z); - if(side == 2) return world.getTileEntity(x, y, z-1); - if(side == 3) return world.getTileEntity(x-1, y, z); - if(side == 4) return world.getTileEntity(x, y, z+1); - if(side == 5) return world.getTileEntity(x+1, y, z); - else return null; - } - public void onButtonPressed(int buttonID){ if(buttonID == 0) this.sideToPut++; if(buttonID == 1) this.sideToPut--; diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInventoryBase.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInventoryBase.java index 7097320f8..2ecc4bc2d 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInventoryBase.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityInventoryBase.java @@ -1,5 +1,6 @@ package ellpeck.actuallyadditions.tile; +import ellpeck.actuallyadditions.util.ModUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; @@ -13,7 +14,7 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements public TileEntityInventoryBase(int slots, String name){ this.initializeSlots(slots); - this.name = name; + this.name = "container." + ModUtil.MOD_ID_LOWER + "." + name; } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityItemRepairer.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityItemRepairer.java index 568e2d309..841d99428 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityItemRepairer.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityItemRepairer.java @@ -22,7 +22,7 @@ public class TileEntityItemRepairer extends TileEntityInventoryBase implements I public int nextRepairTick; public TileEntityItemRepairer(){ - super(3, "tileEntityItemRepairer"); + super(3, "repairer"); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/util/AssetUtil.java b/src/main/java/ellpeck/actuallyadditions/util/AssetUtil.java index 087034e24..4528b0a01 100644 --- a/src/main/java/ellpeck/actuallyadditions/util/AssetUtil.java +++ b/src/main/java/ellpeck/actuallyadditions/util/AssetUtil.java @@ -1,6 +1,8 @@ package ellpeck.actuallyadditions.util; +import net.minecraft.client.gui.FontRenderer; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; public class AssetUtil{ @@ -10,4 +12,10 @@ public class AssetUtil{ return new ResourceLocation(ModUtil.MOD_ID_LOWER, "textures/gui/" + file + ".png"); } + public static void displayNameAndInventoryString(FontRenderer font, int xSize, int yPositionOfInventoryText, int yPositionOfMachineText, String machineName){ + String localMachineName = StatCollector.translateToLocal(machineName + ".name"); + String inventoryName = StatCollector.translateToLocal("container.inventory"); + font.drawString(localMachineName, xSize/2 - font.getStringWidth(localMachineName)/2, yPositionOfMachineText, StringUtil.DECIMAL_COLOR_WHITE); + font.drawString(inventoryName, xSize/2 - font.getStringWidth(inventoryName)/2, yPositionOfInventoryText-1, StringUtil.DECIMAL_COLOR_GRAY_TEXT); + } } diff --git a/src/main/java/ellpeck/actuallyadditions/util/StringUtil.java b/src/main/java/ellpeck/actuallyadditions/util/StringUtil.java index 968cda7c5..4319d7753 100644 --- a/src/main/java/ellpeck/actuallyadditions/util/StringUtil.java +++ b/src/main/java/ellpeck/actuallyadditions/util/StringUtil.java @@ -27,5 +27,6 @@ public class StringUtil{ public static final String[] ROMAN_NUMERALS = new String[]{"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"}; public static final int DECIMAL_COLOR_WHITE = 16777215; + public static final int DECIMAL_COLOR_GRAY_TEXT = 4210752; } diff --git a/src/main/java/ellpeck/actuallyadditions/util/WorldUtil.java b/src/main/java/ellpeck/actuallyadditions/util/WorldUtil.java new file mode 100644 index 000000000..5bc1bfa98 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/util/WorldUtil.java @@ -0,0 +1,45 @@ +package ellpeck.actuallyadditions.util; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.world.World; + +public class WorldUtil{ + + public static ChunkCoordinates getCoordsFromSide(int side, int x, int y, int z){ + if(side == 0) return new ChunkCoordinates(x, y + 1, z); + if(side == 1) return new ChunkCoordinates(x, y - 1, z); + if(side == 2) return new ChunkCoordinates(x, y, z - 1); + if(side == 3) return new ChunkCoordinates(x + 1, y, z); + if(side == 4) return new ChunkCoordinates(x, y, z + 1); + if(side == 5) return new ChunkCoordinates(x - 1, y, z); + else return null; + } + + public static void breakBlockAtSide(int side, World world, int x, int y, int z){ + ChunkCoordinates c = getCoordsFromSide(side, x, y, z); + if(c != null){ + world.setBlockToAir(c.posX, c.posY, c.posZ); + } + } + + public static void placeBlockAtSide(int side, World world, int x, int y, int z, ItemStack stack){ + Block block = Block.getBlockFromItem(stack.getItem()); + int meta = stack.getItem().getDamage(stack); + ChunkCoordinates c = getCoordsFromSide(side, x, y, z); + if(c != null){ + world.setBlock(c.posX, c.posY, c.posZ, block, meta, 2); + } + } + + public static TileEntity getTileEntityFromSide(int side, World world, int x, int y, int z){ + ChunkCoordinates c = getCoordsFromSide(side, x, y, z); + if(c != null){ + return world.getTileEntity(c.posX, c.posY, c.posZ); + } + else return null; + } + +} diff --git a/src/main/resources/assets/actuallyadditions/lang/en_US.lang b/src/main/resources/assets/actuallyadditions/lang/en_US.lang index 4b0ba63fe..65e2e4436 100644 --- a/src/main/resources/assets/actuallyadditions/lang/en_US.lang +++ b/src/main/resources/assets/actuallyadditions/lang/en_US.lang @@ -18,6 +18,9 @@ tile.actuallyadditions.blockItemRepairer.name=Item Repairer tile.actuallyadditions.blockMiscWoodCasing.name=Wood Casing tile.actuallyadditions.blockMiscStoneCasing.name=Stone Casing +tile.actuallyadditions.blockGreenhouseGlass.name=Greenhouse Glass +tile.actuallyadditions.blockBreaker.name=Breaker +tile.actuallyadditions.blockPlacer.name=Placer tile.actuallyadditions.blockInputter.name=ESD tile.actuallyadditions.blockInputterAdvanced.name=Advanced ESD @@ -150,6 +153,8 @@ tooltip.actuallyadditions.blockHeatCollector.desc.1=Powers Actually Additions Ma tooltip.actuallyadditions.blockHeatCollector.desc.2=Needs a bunch of Lava around it tooltip.actuallyadditions.blockHeatCollector.desc.3=Occasionally steals the Lava. Watch out! tooltip.actuallyadditions.blockItemRepairer.desc=Repairs Tools and Armor automatically +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.itemMiscMashedFood.desc=Used to make Fertilizer tooltip.actuallyadditions.itemFertilizer.desc=Om nom nom. Don't eat it. Made in a Compost. @@ -162,6 +167,8 @@ tooltip.actuallyadditions.itemMiscRing.desc=Used for crafting Effect Rings tooltip.actuallyadditions.blockMiscWoodCasing.desc=Not so sturdy Casing, used for Crafting tooltip.actuallyadditions.blockMiscStoneCasing.desc=Pretty sturdy Casing, used for Crafting +tooltip.actuallyadditions.blockGreenhouseGlass.desc=Lets Crops below it grow faster when it is Daytime +tooltip.actuallyadditions.blockCrafter.desc=Automatically crafts Items without needing any form of Power tooltip.actuallyadditions.itemPotionRing.desc.1=Gives Potion Effect of Level 1 tooltip.actuallyadditions.itemPotionRing.desc.2=Needs to be held in Hand @@ -224,31 +231,6 @@ tooltip.actuallyadditions.itemDustQuartz.desc=Quartz! Crushed in the Crusher! tooltip.actuallyadditions.itemDustCoal.desc=Coal! Crushed in the Crusher! tooltip.actuallyadditions.itemDustQuartzBlack.desc=Black Quartz! Crushed in the Crusher! -achievement.actuallyadditions.smeltBaguette=Better than Bread! -achievement.actuallyadditions.smeltBaguette.desc=Bake a Baguette -achievement.actuallyadditions.craftDough=Knead, knead! -achievement.actuallyadditions.craftDough.desc=Craft some Dough -achievement.actuallyadditions.craftCompost=Throw it all in! -achievement.actuallyadditions.craftCompost.desc=Craft a Compost -achievement.actuallyadditions.craftFertilizer=Better than Bone Meal! -achievement.actuallyadditions.craftFertilizer.desc=Make Fertilizer -achievement.actuallyadditions.craftSubSandwich=Metro, Underground, Tube, Nom! -achievement.actuallyadditions.craftSubSandwich.desc=Craft a Submarine Sandwich -achievement.actuallyadditions.craftPaperCone=Witch's hat! -achievement.actuallyadditions.craftPaperCone.desc=Craft a Paper Cone -achievement.actuallyadditions.craftFrenchFry=Just the single one... -achievement.actuallyadditions.craftFrenchFry.desc=Craft a French Fry -achievement.actuallyadditions.craftFrenchFries=French Fires? -achievement.actuallyadditions.craftFrenchFries.desc=Craft French Fries -achievement.actuallyadditions.craftFishNChips=It's Fish! It's Chips! -achievement.actuallyadditions.craftFishNChips.desc=Craft Fish 'N' Chips -achievement.actuallyadditions.craftMashedFood=Munch munch munch! -achievement.actuallyadditions.craftMashedFood.desc=Craft Mashed Food -achievement.actuallyadditions.craftKnifeBlade=Sharp! So sharp! -achievement.actuallyadditions.craftKnifeBlade.desc=Craft a Knife Blade -achievement.actuallyadditions.craftKnife=Sharper! Even sharper! -achievement.actuallyadditions.craftKnife.desc=Craft a Knife - info.actuallyadditions.gui.animals=Animals info.actuallyadditions.gui.enoughToBreed=Enough to breed! info.actuallyadditions.gui.tooMany=Too many to breed! @@ -275,4 +257,33 @@ 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 \ No newline at end of file +effect.actuallyadditions.saturation.name=Saturation + +container.actuallyadditions.inputter.name=ESD +container.actuallyadditions.inputterAdvanced.name=Advanced ESD +container.actuallyadditions.grinder.name=Crusher +container.actuallyadditions.grinderDouble.name=Double Crusher +container.actuallyadditions.furnaceDouble.name=Double Furnace +container.actuallyadditions.feeder.name=Feeder +container.actuallyadditions.giantChest.name=Storage Crate +container.actuallyadditions.repairer.name=Repairer +container.actuallyadditions.placer.name=Placer +container.actuallyadditions.breaker.name=Breaker +container.actuallyadditions.crafting.name=Crafting Table On A Stick + +achievement.actuallyadditions.pickUpSolidXP=Hard and Rich and Stuff +achievement.actuallyadditions.pickUpSolidXP.desc=Pick up some Solidified Experience +achievement.actuallyadditions.craftKnifeBlade=Sharp! So Sharp! +achievement.actuallyadditions.craftKnifeBlade.desc=Craft a Knife Blade +achievement.actuallyadditions.craftKnife=Cutcutcutcutcutcutcutcutcutcutcut! +achievement.actuallyadditions.craftKnife.desc=Craft a Knife +achievement.actuallyadditions.craftMashedFood=Munch munch munch! +achievement.actuallyadditions.craftMashedFood.desc=Craft some Mashed Food +achievement.actuallyadditions.craftWoodenCasing=Hard and sturdy! +achievement.actuallyadditions.craftWoodenCasing.desc=Craft a Wooden Casing +achievement.actuallyadditions.craftStoneCasing=Harder and sturdier! +achievement.actuallyadditions.craftStoneCasing.desc=Craft a Stone Casing +achievement.actuallyadditions.craftBasicCoil=Transmits.. power.. or something? +achievement.actuallyadditions.craftBasicCoil.desc=Craft a Basic Coil +achievement.actuallyadditions.craftAdvancedCoil=Transmits... more power I guess. +achievement.actuallyadditions.craftAdvancedCoil.desc=Craft an Advanced Coil \ No newline at end of file diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockBreaker.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockBreaker.png new file mode 100644 index 0000000000000000000000000000000000000000..9a81851c19110687c28352cf4786191bb317f008 GIT binary patch literal 521 zcmV+k0`~ohP)N2bZe?^J zG%heMHD!e|WdHyHhejV7|X-}<-W@$at$2=+KH6h zbCijRA0QK9pw6E=&)VxmCQiP=+qd5JUEj47uh;u&nA`1kxm-@C^TRN!)#~^A z&F1lVR8-A!>SfNn( zHcZ#`QmGV)M8@Osa5&6nvjl|0VMb7Bho@;;tJT`=cI9$;Hk(bSQ-Ye!W-67+WHQxi zb-7%ER2L&Lz`q?PlS#YXW--O#a8PD27`*OKsZ=N}64+z4T3s%e+wFEfpQQud9Z2cW z*j4glUAc2&CTzAyR^CS-m4^O5kz_g2+kr*1lWe3^~500000 LNkvXXu0mjf!?x}H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockBreakerFront.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockBreakerFront.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c3e4ba78887505113fb6ed3a25c4cd6763c419 GIT binary patch literal 793 zcmV+!1LpjRP)1ULWy02pah zSad^gZEa<4bN~PV002y3c4IX*E-)@JFfrfCJFWl#0)k0IK~y-)rIXJ}BUu#2e|78r zDO1G65Del%EC)ew6C~&>_ylg#n|_OKX4`ug4K92a5pk_3Byn7cu@)U0ikQ^BxwmFv zo0(>obN1iieBbYU(b3US<-G?Wgn;*+s;USf05F@)=yW=G@A2Lkjtu>9q zSFzTToSosEBZNTR7#dN;h7ha^!E81Iz@MLEtwn3ibUJ;;bZSU87LiqU996h)+IN?DfwU@XgWdFJ~1I_{U?!|%tdhY%PH257Bu&LN7T zU_2gkb8~}~lH1!`hQr~zu;0h^`zWQjzrSZR8nIX`Xf~U_V@#5SR;xu-Rlk*r@81zZ z;G83hB3@ozNRkAAy}dmyE-sK-Ytl4jJRUQdOqONRS}%i3l7!)K_@6R08V#cVTj#$4 XED&UOZo-9r00000NkvXXu0mjfwKrVP literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockBreakerTop.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockBreakerTop.png new file mode 100644 index 0000000000000000000000000000000000000000..819a8986150f50f2874485b202b96cf7ccc77127 GIT binary patch literal 575 zcmV-F0>J%=P)N2bZe?^J zG%heMHD!e|WdHyHy-7qtR5(wSl1YyNQ51#izmSMXhm^DkTVlZiiMhlOVvM0l3~io; zXl)1^D}S`Vsx{H^3@7;6mIp>vNx7$CJvRbVci^Xgzz)gddt>eFxYH1 zQ50oBwOWnG1#Xbc8}-EKD&3T3m|AEo;J zem=iZQ5?P*X#9ixwKlX)oRsfG%zNZOeSbXqY)DZgTZh(1RRYp$}Wn=aUb--fp+k=|n`>1Ds4IyoWROA zFuYDClj(HIs7j>*g(lWcr$hD>uLA(1>Xr-;0|1yNRtL+GWi~K4!5oCZ*n4cOg9o$IU8PJZF>1OoWu!9ye=j{hKZm=c zs-%?2Ipgm1-T@e6kWxZK?r(rn3d^#fW=77L&wqXdV3{jZEsPQLF}SW9%^VeBnJc9z z*Xza)zx;-~lSPETKmEbG#}nT?otSH(nbXWzw?-|>yYq?j!vTPQUoMz;zWnt&W`>Fg z52pjoj4=j%3?ye%1QB73!P<=Lx}hSRjx&%ja{yFTdHH%_n#!IvXZje72)510IiV^% zoloSv4{puKDKkwI3Q&vEnn6m8F^C8xXHLh3oD;ndwyn{}pcdsYPrO{#J%X9xy<^@H z$<(5hqKpyup_CF+DM$>=JL_hMWFlg}ppU`%;XsVQd*^!HFz?i&drlF|9Z~|IRwbuQ zN(oIVaa?BBtq}nUFz@7?$T=}^%2t1QLG2OceK`e zZ`-`n%>Nhat(P(4&foiv`~BmIoHJQf`Szy|H18x5Dnc{gMd=+8;keAqQ>B)|`FJ2m zJpK6VF4F7kD*)gB{DGV^B0?zz5y8w@*Y)N+(==gbwAN^?u`CP!0S<3xp2^9|PXGV_ M07*qoM6N<$g6R}S)Bpeg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockGreenhouseGlass.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockGreenhouseGlass.png new file mode 100644 index 0000000000000000000000000000000000000000..11b4a7fc2e504fd72a668a116b609735d8187e14 GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)45H@XDPOUZ4nPfk$L9 z0|U1(2s1Lwnj--eWH0gbb!ETL!X~6?(#rl2WPogDNJNQqer|4RUI~!Pz~Eeznpl#W zqEMb$lA+-4=^K!um&(q-z!>G};uvCax;6OpszU|>w!SQ~T(8`AU2!cdf6V@4V_jqX zMg4-=N_WL{mx@ZdX1{ZqJ=^`E97jr<@xwDSJ&SDQcm)+t8wm)W+Qeea%+SHXaNvxB zlE%^ik=EXsk{6<+lX=>Tcg7T0$n2S8$oBiM-KosAy(c#Dh^6LDJFS|xT{>otpE`%4 zfRiR`VCYocV`109|5?RzUWdoR2E z@(1(0&iJDH-zPo}^2*=&MlM2Fw&;2($M?rod#g^1zHfBq^W~ZNeCJ;EsO-me_rF&4 o{{EZC85&x7zdGQ~Hr*ML`%|*6dJ6T`?*;|Gr>mdKI;Vst0Q8u~VE_OC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockInputterAdvanced.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockInputterAdvanced.png new file mode 100644 index 0000000000000000000000000000000000000000..1e3199c6d12171b3efdceb94cae5e00c62739956 GIT binary patch literal 424 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p>QK$!8;-MT+OLG}_)Usv|~%tAtJmMtH5@&Sb;N?apKg7ec# z$`gxH8440J^GfvcQcDy}^bGV&Q(KKvf%dR@x;Tbd_}5PIg{`yndg+yKS+`#WBrcj+l=!e>dXVgnka_6~ z_$LWCFty&{%RMyj`OFYD(FLCImrdFkj)gf?tSVx(7kk;9#n^M_3v*}QUiMea|5;6b zioQ6$a_RagA(pwl7uzQ-$v5BP`E<)e^SRrV<4Yd|&5sj`OquAVSl`|!w~SkbHARJg zw?nU{z-F^%QGaD|kuF}&r_;EKUYeifZ<{xLUhg6XxrnsnoqE&x#Z?#2^tkUU1q?L? MPgg&ebxsLQ0Jf=?)Bpeg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockMiscStoneCasing.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockMiscStoneCasing.png new file mode 100644 index 0000000000000000000000000000000000000000..e32c54303d62c8b144e404ebfb9def6954a01bcc GIT binary patch literal 821 zcmV-51Iqk~P)S_Rm;g^E_ z8mlb`NNNLC94Lu8F;OPoffseI%z+~(PBccuCJ-eQ70XXS`rkd+(X)4QW@lZ(dh+Jl z?RJ(V2>@xDk|YUPmXW3@0ISuCTCGNsBqT|K@B4&dh_36zaZCZ={QMl(brC`^91bZK zi~?fubm!o}LnhA!(W-6$%B?G-WUtu(Pwn+1VMLPKO`}*xcMC3`6SmIu8#I z*tX63`a0!u8N)CLf`Edmsx+HTWLai5o3UE0s8lL=o=3mmN7FP+)8ydbfGo@C^?F26 zgb;!#ijX|d!*LvBSw@y+K0iN^B_MN!D* zasc?gk8Rsbr&IR!_UQNfEEWsOJt0XFaU7%TI_l8jXnKm?(+>D3{9&heN_JB#vVylL-L#_xC@H(l=wNR01Ff z0`mDh@9*!dRx5-M0NA#Ts;cbo?*sfW7QPuB$KlT{77I2uHt6+w_`XlO-NyHQ#^W)? zVv(z>tKTPnGj45dVObVI5Fmu$@$r#fuSd07<>KOk@p#O9K1T>a5CpVZEv~PxDaf*n zs;W4SgX_9~#bg);-EJ4p^Zqj?UDwI|-<*E|lVge5sY;m_00000NkvXXu0mjf4j5{< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockMiscWoodCasing.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockMiscWoodCasing.png new file mode 100644 index 0000000000000000000000000000000000000000..da2fae99f53dbd625a278a1297eb76864ea33593 GIT binary patch literal 652 zcmV;70(1R|P)LtJk!eEIqh_xnaj2$5M-&0`w_1|k9hPuFL@eEpjr z*Jt|q{J@_df9G^ss4`Urz{sMt31|^y6|N*AxSY>?{Nn=;4<~w#vJd zR)HZxL~FQ;F>($x$Y4yzyf%-VtRbNgk}ziM<29Au8jXnw1wG4f8257pn6{^jvcZ16 z%VVWzL6+&0EpSbWF_PATG3viz2P4c&a~kT!u>*PXIidY{UwiXYeKNq#)xaj3~EY`DK{Y}?MdO|T?x&o3-X zC)RD}@$ozB%f=W*9Rt>NCr7dEW4=HI_KbSpcD{Xkn|3RDNg;qT}BH0000N2bZe?^J zG%heMHD!e|WdHyHgh@m}R5(wSl1r;WQ546|H@F{yl60e^D;;B*7@)kBM^2uhYd|NF zl6NQ*6CXe(!obJ7zkPNcnYdYl)qk(O{_FAITk-q-Kc;!TUXRD)cDuh#v)k=~KtSGd zbT}M7pHEd)L1;FcnM|fwEQUg%WHR|{S~wggQZASA1cSj~B9RaTr_&jW#rpkzJRUEV zN?X$m!_aj-8jVgSlhJ6D&*w>qL?Vo!&<>Q#<=XA`;c%!_D)ae#Hk*;uYPHhobT*r< z)oQEN3Qu)05(E6(VLF|5Ivo~MTrL-7hQs0e4%KRv(t^Mq>-G9}yFDI{>-8!D-U0+A zptH?pQ_zvVoK^ix5&(D$oK7bRmdmB4X@W2q45&f$e!okAx4`9ck$}3qjF1(otbIP8 zwnRkNwyZeF}v_DwW#pc5KfPYcv}5di_OK?)LjVQAs-leK~y-)rISxfV^aomeRcxrt<;jGj!8}SaGc=BoSAR zF%+)FOw7IK){r%Cf|J55QzHq19^PoWnUs zp63{2sMTsrr&9#L_VzYemZ7!g`uduBz0U6LF8`jx!$X{N+~41mWf=<#3tU`W5Y5fa zy^iCUG))-}hcuf_wzjrdU0p?MO|@F3QmGI{5n5};<1y>&>kNlOZf|c9LI}L~TwPt! z>2!#qh&;~$`1$Mwk1 zzkY=;JyJ^YJ4^O{%-x?8CU*ws9M)QX{QcQXQLEJ=1jzFoDJ3EnOiM!;hQx^^2!jWi zDk2O+0ICZQHjOa^L4YvEFh4(!F@{%9-~JP*56DVH{j(~iFR9cNlgR{tmrvecj6o^I zcszcthGof>G%5tK|qou6h-k7V^I_{nTv~y zvxP^$k5TvD)9rRqN@1-f9F0Z{1_Mq`P7p$HdU{H)*8|}D-@fLjKb|9{WvbO`1pl|re*+8EWGZ-LXe9su002ovPDHLkV1iiJU)=xz literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockPlacerTop.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockPlacerTop.png new file mode 100644 index 0000000000000000000000000000000000000000..819a8986150f50f2874485b202b96cf7ccc77127 GIT binary patch literal 575 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/gui/guiInputterAdvanced.png b/src/main/resources/assets/actuallyadditions/textures/gui/guiInputterAdvanced.png new file mode 100644 index 0000000000000000000000000000000000000000..673ce121b5a73328a1f6b9861e065bfc98a10375 GIT binary patch literal 3020 zcmd5;dpy(YAODV|NYtU+r_)7RQ3-?@b57{QPUnQACix|W zt>l`^{NhA7KYlr`(-up_#>8gq_WRmQ>UaJ)f1bTwdwsuqp3n1n-tYJG{(PP#yEr?j zC}}GJ0HES{$j%J_AmA$mSg{;@c!lNrgO6na2b>N7z;lAK0HXl@UU}(|M>qhielh=r zFv9wegM*q8_NO9_WBntdFkybcB}`yQgmH*pgux!;oyKN?2E zslM)7%ilXztba8-od~5}qpXmxk2X(jUiJ7^>j8Vq8}H9Q+;Ue_H6O8JKq+a}j~n)B zl3wXNDH)>%k;l)@bnmOWu89(#RqTjhgbiZo+We_hw!6l9JD$I+L z5Kmb)sCGF$8L z2R2Q`)3oHI_@5`l6KQ~EHlew5H3bRj^acFSp02dT#ZNz8CL{6Ev9YL;od7*AD#81cdR7% zP5?0w(trs`jI#=Dr*_uHQ}jd?3m9UZgL`UswZR=Uko;A3Sjb1Cv7%y3Te1q(;$vpO zX@GT@PGYj^8ruY+=zeQ;t*ke5D|`C;V(ZHznp{<~n3`C&5+^#jALU5DTX2 za|q;IO=EN|ToAsA27wEwI|_ayY{P#=mZ^t?;Xid+(=_Z>HgvPRZPe?&I|k1I4oVda zG+~!TvOW^wn@%8f>oX@J{i_fmh6=N4q;&h zHH;-$Z0x=A@#D{X+rVvfN26PyiSUGFr%bM;bD{vH_eiN7`jo4kUXiSvxn9_Vt)|CL z0<2---hR+N1o==jzZWsSKbBi4cW3JoaX~#e*}})zS*klCr0t%iX&f4&`%OSJ6^feW z8SGpgTlKcwEs4yC%`o=XZnpWqz{qwghCtoRUT@-~djliXv*{P}7z7yJ^&7Y16x9?d z-a@M4wT^}Xf(<*UPJXG)jw&0_M2((vhXhyKK6N}!gbAJ;f6Sd|dnl_e>4}3HqJ)w8 z3^p11Ii0gRi7YG!6u&;kI&-5I%ZTV$Uq|V9SigBNTvV1UCNQ6GWbvt+n0*Z2w#&}y zNVF7yWr$9s5rJ|$hIT$rfjwXtTcApsP$_4P%~;bsy}hfjR#0IqmeXNj?IyFIZn;X; z?M8Gn9J|K@(s1=Zp9ixP%T0uXeWM(-IGmH)O(HqR^Hr73oRAdEZ;Ucb#%JD<%;A(R zFnqQ^P~SO(BI$3#H?^QhdM_tn0iu7&Jn$77H7tkW(&%nY8YhcJ`$p5yKAu8e0Cd&w zmxiLUS8Z;mK^laQDN_zIzrP8kK06X4c+@&|5G*tT!b-3asmrxU;FAX;=W3eXUEn#1s{adWZ~f=buy`=CB_~^-8|~0un_3`NCgUpRMx(@qe+g};P>r2P_R&+? zur|?3>5T9`QjpK)Oi&)lq8H7tJzK46#}`Q}VV|Lx3=D3AmWT2@wHgrQ3_KLFTG9xH zMwrbSlNFmmbJoWX{ElNn=eAzuv5>cI`iZ!KngM>ovb`?za;E3z0wGRd?U&C^uEbT> z5NvUik7g37CzV_QmgzNK3SRE(!1IbVdfbW>c_?LN(%Cx+%h{z9Li>g44~tN*D|%A` z^wA*=8i>{6M;Uaw$<@F?w!?LeO5q`h?*RE?{>JU&scVQu{h zI}_l#aJQtU%2k+UuB!uudxrZfkIFVHbJP;&)KfPear?rjOZfq>_21OA?T(UrD%E*^ z9kp5C6U;eMFyCKy6bHEi@sd_*AGt&60eQX=mNk*=A=8qsyso!&E524@`R}XNDYT;` z_1DorZc4wytYjW8<`{424e#Buu#%gXyk3OJt}V?Ma4Zlb)``Sj9omblO8(H+Ib#$v z-GUzdW~Qf5crMRuG0Afee&f*~St&W4d%-1ScFAyLz4m88O^al(EmHpIL-?PTb$YCJ zRw=HvQ6ZFX^?V z(+&O?bq5$!~})q)na^Yk#%MxF}hJ6U!wb zPJ6fwMloxK+f5}r7l26BoP~?dKMIf#HmgQ%(BbASidV0!UX1yo$3JiSZcpJw`RzvE z5X;)`&h?7id?d{(!wEc9ZS=!;G~V~~-kjvY0FQ&9Ef|w1p!gM+*|()v@8oUM3_Hzm#)skhVQtx|%%_SRHb!rV&nYgbICJ{4@#2pi+fQm=?$6JA zmsflCK~{mrC5DsJ+;7zcpPH_sx@Lz!`sxJZ%@1U_*D=+c5cALRTh_a7S(t+7`^W4d zobPQn&zJnW+55VeqwlA$mZ|T*94hlWch>s;3WeXwnG+q?Z$J9vW87W8cAN9g|1-IH z8N;}bo)!y}R=p`zaL1|p|ASfge8n=?2&E)0nznZ4v|pVJf0!~k67PB&OOycvg2B_( K&t;ucLK6ULU6)V* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemJamOverlay.png b/src/main/resources/assets/actuallyadditions/textures/items/itemJamOverlay.png new file mode 100644 index 0000000000000000000000000000000000000000..d6ce4d94fd483bc1c4f68bb3d72b9d92c8fb2584 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPgg~78VgUqYHmdqyvRcdAc};Se$-4$*{Y{K%_3=_1N-aZpXDu?vSJm7VnU?Y zl%RyQuA!jw6#A_&=GG*weV` zkR`jI;bV)U+h%+29*FARwJvdO>vy@OB0iU07z)n)J?Q_3&1_-ZpLqVqbAi5M@O1Ta JS?83{1OSeLg5LlD literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemMiscCoil.png b/src/main/resources/assets/actuallyadditions/textures/items/itemMiscCoil.png new file mode 100644 index 0000000000000000000000000000000000000000..c56f57da8f7af2b2ae9a8110ed9fbed76eb136f6 GIT binary patch literal 555 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)07?Fw^Pk3ZMvQfk$L9 z0|U1(2s1Lwnj--eWH0gbb!ETL!osK|I`8veL!gjEW=KSdbAE1aYF-JD%fR51Se9&R zre~mMXkd8%l=V6W2F59#E{-7&+A>a`gOV#>omEpRzBkbup80R$yUU)*+zF zHEDtCYzL;5^$Houzr_Sya{n&y1`k^?CV=FG`7J+x%mgV@-L z_kZr~{(i?h&wrbNU%+9#IdQhyS#sSKC+`>EHE7T(vQ{(MFp-gA!c?TZ;Tx=u+6!bEXXgQnayfx~mt5S2!&Q{U1RopMRHMT`+ z0p%0~8WcDf7}^gvMy+i-aLa7RqxAnmUAbZ5Ih!v}Qt_1QXJ<$-nt9-}jn!N}i@xUh z>n2oOxn9~VlXE6$z5M-2w{pLx?v3N0_dL;Twqu}3&`Oa%B}=a#`|#;d|Eu!2lqmrk zEpCe$oj5XPx$TXU*SI$2L7Cs9m(PS+1R~akaWpYRPMdf(jlFAkL&OnpuY9FvbKGR! z<~vPGjnENWa`|Qb(OL3Gl;RGF&YDp!wQ>9Az7!+NkUNi^Y+fmUZ&f?gZCr6e#Vu;t qJj)LE+9&Up@-fWnlom<3Q~Hlp$8z@3O&i~WBhAy*&t;ucLK6U|HruEG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemMiscCoilAdvanced.png b/src/main/resources/assets/actuallyadditions/textures/items/itemMiscCoilAdvanced.png new file mode 100644 index 0000000000000000000000000000000000000000..593cbf2dcc74469c0e4076dcec22193e47a5795b GIT binary patch literal 519 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)07?Fw^Pk3ZMvQfk$L9 z0|U1(2s1Lwnj--eWH0gbb!ETL!osM^7RsZg0ThzR42dXl&d<$F%_{+N85n#L%aTpa z^bGV24Giy}vR=o)z*ykv;uvCaI{A*BVpF5g0Vj`xQ$p4MAHHFk_^ju}C!ZFchRjRT z9y%EIWH3tr!IrPC66@@K9$cVyvM-Utk@?&GJ-_e!eAafZmb5;+Fnhk_6_uNkS!r_r z{HHMf&cF9pe!A^^N8fkyhu6CM@O-{qDajZ6`^rxYdAYk(E;|0m_63jqw z_>^r9kEfqhkM7HDA8sU^;lGry^Yf$U`4Jh1bJBoncYN*W1lbN!>-^bQ2dZaW&14a@3}p7NkGs%210)+WG5;cJnkHb?4OU z{yP+VLk%lTjSYZ6>3Qp{neG2~zxZhUX6KiQj-H`Y7Nqq=WO!~*y;J;Bxw*ZQpM^RNW5I2dUsmk@tNiY;(|sE6ED5tVKC{MazS@;?gvnOc)I$ztaD0e0sv`Q)87C9 literal 0 HcmV?d00001