diff --git a/CHANGELOG.md b/CHANGELOG.md index 8977d9461..e726eb6f6 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ **Bugfixes** - Fixed crafting patterns crashing when item of an input or output no longer exists - Fixed Grid letting the current held item flicker +- Fixed Importer / Exporter / External Storage not being able to push or pull out of a second chest in a double chest - Converted all inventories in the mod to Forge's item handler capability system ### 0.6.10 diff --git a/src/main/java/refinedstorage/block/BlockBase.java b/src/main/java/refinedstorage/block/BlockBase.java index 1a6565a3a..980092af3 100755 --- a/src/main/java/refinedstorage/block/BlockBase.java +++ b/src/main/java/refinedstorage/block/BlockBase.java @@ -19,7 +19,6 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorage; -import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageUtils; import refinedstorage.item.ItemBlockBase; import refinedstorage.tile.TileBase; @@ -104,19 +103,12 @@ public abstract class BlockBase extends Block { public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase player, ItemStack itemStack) { super.onBlockPlacedBy(world, pos, state, player, itemStack); - Block blockPlaced = state.getBlock(); - TileEntity tile = world.getTileEntity(pos); if (tile instanceof TileBase) { EnumFacing facing = BlockPistonBase.getFacingFromEntity(pos, player); - if (player.isSneaking() && (blockPlaced == RefinedStorageBlocks.IMPORTER || - blockPlaced == RefinedStorageBlocks.EXPORTER || - blockPlaced == RefinedStorageBlocks.EXTERNAL_STORAGE || - blockPlaced == RefinedStorageBlocks.CONSTRUCTOR || - blockPlaced == RefinedStorageBlocks.DESTRUCTOR || - blockPlaced == RefinedStorageBlocks.CRAFTER)) { + if (player.isSneaking() && hasOppositeFacingOnSneakPlace()) { facing = facing.getOpposite(); } @@ -160,4 +152,8 @@ public abstract class BlockBase extends Block { public Item createItemForBlock() { return new ItemBlockBase(this, false); } + + public boolean hasOppositeFacingOnSneakPlace() { + return false; + } } diff --git a/src/main/java/refinedstorage/block/BlockConstructor.java b/src/main/java/refinedstorage/block/BlockConstructor.java index daf79e373..93fc9c188 100755 --- a/src/main/java/refinedstorage/block/BlockConstructor.java +++ b/src/main/java/refinedstorage/block/BlockConstructor.java @@ -30,4 +30,9 @@ public class BlockConstructor extends BlockMachine { return true; } + + @Override + public boolean hasOppositeFacingOnSneakPlace() { + return true; + } } diff --git a/src/main/java/refinedstorage/block/BlockCrafter.java b/src/main/java/refinedstorage/block/BlockCrafter.java index 0827982c3..28737447f 100755 --- a/src/main/java/refinedstorage/block/BlockCrafter.java +++ b/src/main/java/refinedstorage/block/BlockCrafter.java @@ -30,4 +30,9 @@ public class BlockCrafter extends BlockMachine { return true; } + + @Override + public boolean hasOppositeFacingOnSneakPlace() { + return true; + } } diff --git a/src/main/java/refinedstorage/block/BlockDestructor.java b/src/main/java/refinedstorage/block/BlockDestructor.java index 9a96777a4..182b2a8de 100755 --- a/src/main/java/refinedstorage/block/BlockDestructor.java +++ b/src/main/java/refinedstorage/block/BlockDestructor.java @@ -30,4 +30,9 @@ public class BlockDestructor extends BlockMachine { return true; } + + @Override + public boolean hasOppositeFacingOnSneakPlace() { + return true; + } } diff --git a/src/main/java/refinedstorage/block/BlockExporter.java b/src/main/java/refinedstorage/block/BlockExporter.java index f5a38c7d4..8dcd637ce 100755 --- a/src/main/java/refinedstorage/block/BlockExporter.java +++ b/src/main/java/refinedstorage/block/BlockExporter.java @@ -30,4 +30,9 @@ public class BlockExporter extends BlockMachine { return true; } + + @Override + public boolean hasOppositeFacingOnSneakPlace() { + return true; + } } diff --git a/src/main/java/refinedstorage/block/BlockExternalStorage.java b/src/main/java/refinedstorage/block/BlockExternalStorage.java index f83d34e42..ba4a8fb83 100755 --- a/src/main/java/refinedstorage/block/BlockExternalStorage.java +++ b/src/main/java/refinedstorage/block/BlockExternalStorage.java @@ -30,4 +30,9 @@ public class BlockExternalStorage extends BlockMachine { return true; } + + @Override + public boolean hasOppositeFacingOnSneakPlace() { + return true; + } } diff --git a/src/main/java/refinedstorage/block/BlockImporter.java b/src/main/java/refinedstorage/block/BlockImporter.java index 1b124a629..42078dfd2 100755 --- a/src/main/java/refinedstorage/block/BlockImporter.java +++ b/src/main/java/refinedstorage/block/BlockImporter.java @@ -30,4 +30,9 @@ public class BlockImporter extends BlockMachine { return true; } + + @Override + public boolean hasOppositeFacingOnSneakPlace() { + return true; + } } diff --git a/src/main/java/refinedstorage/tile/TileDestructor.java b/src/main/java/refinedstorage/tile/TileDestructor.java index 7359e39ae..d032ceaff 100755 --- a/src/main/java/refinedstorage/tile/TileDestructor.java +++ b/src/main/java/refinedstorage/tile/TileDestructor.java @@ -33,7 +33,11 @@ public class TileDestructor extends TileMachine implements ICompareConfig, IMode public static final int BASE_SPEED = 20; private BasicItemHandler filters = new BasicItemHandler(9, this); - private BasicItemHandler upgrades = new BasicItemHandler(4, this, new BasicItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_SPEED)); + private BasicItemHandler upgrades = new BasicItemHandler( + 4, + this, + new BasicItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_SPEED) + ); private int compare = 0; private int mode = ModeConstants.WHITELIST; diff --git a/src/main/java/refinedstorage/tile/autocrafting/TileCrafter.java b/src/main/java/refinedstorage/tile/autocrafting/TileCrafter.java index 7fe28bc96..dab9e41ca 100755 --- a/src/main/java/refinedstorage/tile/autocrafting/TileCrafter.java +++ b/src/main/java/refinedstorage/tile/autocrafting/TileCrafter.java @@ -5,6 +5,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; import refinedstorage.container.ContainerCrafter; @@ -83,16 +84,6 @@ public class TileCrafter extends TileMachine { @Override public IItemHandler getDroppedItems() { - BasicItemHandler dummy = new BasicItemHandler(PATTERN_SLOTS + 4); - - for (int i = 0; i < PATTERN_SLOTS; ++i) { - dummy.setStackInSlot(i, patterns.getStackInSlot(i)); - } - - for (int i = 0; i < 4; ++i) { - dummy.setStackInSlot(PATTERN_SLOTS + i, upgrades.getStackInSlot(i)); - } - - return dummy; + return new CombinedInvWrapper(patterns, upgrades); } } diff --git a/src/main/java/refinedstorage/tile/solderer/SoldererRegistry.java b/src/main/java/refinedstorage/tile/solderer/SoldererRegistry.java index 1733cf7c5..5b3e7ddfc 100755 --- a/src/main/java/refinedstorage/tile/solderer/SoldererRegistry.java +++ b/src/main/java/refinedstorage/tile/solderer/SoldererRegistry.java @@ -14,17 +14,17 @@ public class SoldererRegistry { recipes.add(recipe); } - public static ISoldererRecipe getRecipe(IItemHandler inventory) { + public static ISoldererRecipe getRecipe(IItemHandler items) { for (ISoldererRecipe recipe : recipes) { boolean ok = true; for (int i = 0; i < 3; ++i) { - if (!RefinedStorageUtils.compareStackNoQuantity(recipe.getRow(i), inventory.getStackInSlot(i))) { + if (!RefinedStorageUtils.compareStackNoQuantity(recipe.getRow(i), items.getStackInSlot(i))) { ok = false; } - if (inventory.getStackInSlot(i) != null && recipe.getRow(i) != null) { - if (inventory.getStackInSlot(i).stackSize < recipe.getRow(i).stackSize) { + if (items.getStackInSlot(i) != null && recipe.getRow(i) != null) { + if (items.getStackInSlot(i).stackSize < recipe.getRow(i).stackSize) { ok = false; } } diff --git a/src/main/java/refinedstorage/tile/solderer/TileSolderer.java b/src/main/java/refinedstorage/tile/solderer/TileSolderer.java index df2eb94f6..0ef11c06a 100755 --- a/src/main/java/refinedstorage/tile/solderer/TileSolderer.java +++ b/src/main/java/refinedstorage/tile/solderer/TileSolderer.java @@ -8,6 +8,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; import refinedstorage.container.ContainerSolderer; @@ -179,17 +180,7 @@ public class TileSolderer extends TileMachine { @Override public IItemHandler getDroppedItems() { - BasicItemHandler dummy = new BasicItemHandler(4 + 4); - - for (int i = 0; i < 4; ++i) { - dummy.setStackInSlot(i, items.getStackInSlot(i)); - } - - for (int i = 0; i < 4; ++i) { - dummy.setStackInSlot(4 + i, upgrades.getStackInSlot(i)); - } - - return dummy; + return new CombinedInvWrapper(items, upgrades); } @Override