diff --git a/src/main/java/refinedstorage/block/BlockBase.java b/src/main/java/refinedstorage/block/BlockBase.java index 85a76e380..9def51704 100755 --- a/src/main/java/refinedstorage/block/BlockBase.java +++ b/src/main/java/refinedstorage/block/BlockBase.java @@ -122,8 +122,8 @@ public abstract class BlockBase extends Block { public void breakBlock(World world, BlockPos pos, IBlockState state) { TileEntity tile = world.getTileEntity(pos); - if (tile instanceof TileBase && ((TileBase) tile).getDroppedItems() != null) { - IItemHandler handler = ((TileBase) tile).getDroppedItems(); + if (tile instanceof TileBase && ((TileBase) tile).getDrops() != null) { + IItemHandler handler = ((TileBase) tile).getDrops(); for (int i = 0; i < handler.getSlots(); ++i) { if (handler.getStackInSlot(i) != null) { diff --git a/src/main/java/refinedstorage/block/BlockCable.java b/src/main/java/refinedstorage/block/BlockCable.java index e6a6285a4..4b778d679 100755 --- a/src/main/java/refinedstorage/block/BlockCable.java +++ b/src/main/java/refinedstorage/block/BlockCable.java @@ -10,7 +10,6 @@ import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -279,8 +278,8 @@ public class BlockCable extends BlockCoverable { network = ((TileNode) tile).getNetwork(); } - if (tile instanceof TileBase && ((TileBase) tile).getDroppedItems() != null) { - IItemHandler handler = ((TileBase) tile).getDroppedItems(); + if (tile instanceof TileBase && ((TileBase) tile).getDrops() != null) { + IItemHandler handler = ((TileBase) tile).getDrops(); for (int i = 0; i < handler.getSlots(); ++i) { if (handler.getStackInSlot(i) != null) { @@ -298,15 +297,24 @@ public class BlockCable extends BlockCoverable { } @Override - public boolean removedByPlayerDefault(IBlockState state, World world, BlockPos pos, EntityPlayer player, boolean willHarvest) { - return willHarvest ? true : super.removedByPlayerDefault(state, world, pos, player, willHarvest); - } + public List getDropsDefault(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { + List drops = new ArrayList<>(); - @Override - public void harvestBlockDefault(World world, EntityPlayer player, BlockPos pos, IBlockState state, TileEntity tile, ItemStack stack) { - super.harvestBlockDefault(world, player, pos, state, tile, stack); + drops.add(new ItemStack(this, 1, getMetaFromState(state))); - world.setBlockToAir(pos); + TileEntity tile = world.getTileEntity(pos); + + if (tile instanceof TileBase && ((TileBase) tile).getDrops() != null) { + IItemHandler handler = ((TileBase) tile).getDrops(); + + for (int i = 0; i < handler.getSlots(); ++i) { + if (handler.getStackInSlot(i) != null) { + drops.add(handler.getStackInSlot(i)); + } + } + } + + return drops; } @Override diff --git a/src/main/java/refinedstorage/tile/TileBase.java b/src/main/java/refinedstorage/tile/TileBase.java index fe2ee1d04..fb7a92ac9 100755 --- a/src/main/java/refinedstorage/tile/TileBase.java +++ b/src/main/java/refinedstorage/tile/TileBase.java @@ -126,7 +126,7 @@ public abstract class TileBase extends TileEntity implements ITickable { return worldObj.getTileEntity(pos.offset(direction)); } - public IItemHandler getDroppedItems() { + public IItemHandler getDrops() { return null; } diff --git a/src/main/java/refinedstorage/tile/TileConstructor.java b/src/main/java/refinedstorage/tile/TileConstructor.java index 0165d673f..7f816800c 100755 --- a/src/main/java/refinedstorage/tile/TileConstructor.java +++ b/src/main/java/refinedstorage/tile/TileConstructor.java @@ -131,7 +131,7 @@ public class TileConstructor extends TileMultipartNode implements IComparable { } @Override - public IItemHandler getDroppedItems() { + public IItemHandler getDrops() { return upgrades; } diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 3d2170e04..f3212cc49 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -110,7 +110,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR return nodes; } - }); + }, new ArrayList<>()); public static final String NBT_ENERGY = "Energy"; public static final String NBT_ENERGY_CAPACITY = "EnergyCapacity"; diff --git a/src/main/java/refinedstorage/tile/TileCrafter.java b/src/main/java/refinedstorage/tile/TileCrafter.java index 753721bed..300e7adf5 100755 --- a/src/main/java/refinedstorage/tile/TileCrafter.java +++ b/src/main/java/refinedstorage/tile/TileCrafter.java @@ -94,7 +94,7 @@ public class TileCrafter extends TileNode implements ICraftingPatternContainer { } @Override - public IItemHandler getDroppedItems() { + public IItemHandler getDrops() { return new CombinedInvWrapper(patterns, upgrades); } diff --git a/src/main/java/refinedstorage/tile/TileCraftingMonitor.java b/src/main/java/refinedstorage/tile/TileCraftingMonitor.java index 422e39d61..67875e4d8 100755 --- a/src/main/java/refinedstorage/tile/TileCraftingMonitor.java +++ b/src/main/java/refinedstorage/tile/TileCraftingMonitor.java @@ -6,6 +6,7 @@ import refinedstorage.tile.data.RefinedStorageSerializers; import refinedstorage.tile.data.TileDataManager; import refinedstorage.tile.data.TileDataParameter; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -25,7 +26,7 @@ public class TileCraftingMonitor extends TileNode { return Collections.emptyList(); } } - }); + }, new ArrayList<>()); public TileCraftingMonitor() { dataManager.addParameter(TASKS); diff --git a/src/main/java/refinedstorage/tile/TileDestructor.java b/src/main/java/refinedstorage/tile/TileDestructor.java index 71651bde3..6b9b05ebc 100755 --- a/src/main/java/refinedstorage/tile/TileDestructor.java +++ b/src/main/java/refinedstorage/tile/TileDestructor.java @@ -146,7 +146,7 @@ public class TileDestructor extends TileMultipartNode implements IComparable, IF } @Override - public IItemHandler getDroppedItems() { + public IItemHandler getDrops() { return upgrades; } diff --git a/src/main/java/refinedstorage/tile/TileDiskDrive.java b/src/main/java/refinedstorage/tile/TileDiskDrive.java index c387ec04e..c5e6e69ba 100755 --- a/src/main/java/refinedstorage/tile/TileDiskDrive.java +++ b/src/main/java/refinedstorage/tile/TileDiskDrive.java @@ -355,7 +355,7 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag } @Override - public IItemHandler getDroppedItems() { + public IItemHandler getDrops() { return disks; } diff --git a/src/main/java/refinedstorage/tile/TileExporter.java b/src/main/java/refinedstorage/tile/TileExporter.java index 489d505e2..9b83d7e52 100755 --- a/src/main/java/refinedstorage/tile/TileExporter.java +++ b/src/main/java/refinedstorage/tile/TileExporter.java @@ -122,7 +122,7 @@ public class TileExporter extends TileMultipartNode implements IComparable { } @Override - public IItemHandler getDroppedItems() { + public IItemHandler getDrops() { return upgrades; } diff --git a/src/main/java/refinedstorage/tile/TileImporter.java b/src/main/java/refinedstorage/tile/TileImporter.java index 0ad6f77f7..8c4a1592f 100755 --- a/src/main/java/refinedstorage/tile/TileImporter.java +++ b/src/main/java/refinedstorage/tile/TileImporter.java @@ -140,7 +140,7 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil } @Override - public IItemHandler getDroppedItems() { + public IItemHandler getDrops() { return upgrades; } diff --git a/src/main/java/refinedstorage/tile/TileInterface.java b/src/main/java/refinedstorage/tile/TileInterface.java index 642fac8fc..6b6359ecb 100755 --- a/src/main/java/refinedstorage/tile/TileInterface.java +++ b/src/main/java/refinedstorage/tile/TileInterface.java @@ -150,7 +150,7 @@ public class TileInterface extends TileNode implements IComparable { } @Override - public IItemHandler getDroppedItems() { + public IItemHandler getDrops() { return new CombinedInvWrapper(importItems, exportItems, upgrades); } diff --git a/src/main/java/refinedstorage/tile/TileProcessingPatternEncoder.java b/src/main/java/refinedstorage/tile/TileProcessingPatternEncoder.java index 2a90c6dd1..d915efc8b 100755 --- a/src/main/java/refinedstorage/tile/TileProcessingPatternEncoder.java +++ b/src/main/java/refinedstorage/tile/TileProcessingPatternEncoder.java @@ -84,7 +84,7 @@ public class TileProcessingPatternEncoder extends TileBase { } @Override - public IItemHandler getDroppedItems() { + public IItemHandler getDrops() { return patterns; } diff --git a/src/main/java/refinedstorage/tile/TileSolderer.java b/src/main/java/refinedstorage/tile/TileSolderer.java index 3b45947b9..136c0dce6 100755 --- a/src/main/java/refinedstorage/tile/TileSolderer.java +++ b/src/main/java/refinedstorage/tile/TileSolderer.java @@ -185,7 +185,7 @@ public class TileSolderer extends TileNode { } @Override - public IItemHandler getDroppedItems() { + public IItemHandler getDrops() { return new CombinedInvWrapper(items, upgrades); } diff --git a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java index ff5ba6bd1..9c83b27e3 100755 --- a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java +++ b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java @@ -66,7 +66,7 @@ public class TileWirelessTransmitter extends TileNode implements IWirelessTransm } @Override - public IItemHandler getDroppedItems() { + public IItemHandler getDrops() { return upgrades; } diff --git a/src/main/java/refinedstorage/tile/data/TileDataManager.java b/src/main/java/refinedstorage/tile/data/TileDataManager.java index fa39d6b0f..d1ab8ef43 100755 --- a/src/main/java/refinedstorage/tile/data/TileDataManager.java +++ b/src/main/java/refinedstorage/tile/data/TileDataManager.java @@ -26,15 +26,19 @@ public class TileDataManager { private List watchedParametersCache = new ArrayList<>(); public static TileDataParameter createParameter(DataSerializer serializer, ITileDataProducer producer) { - return createParameter(serializer, producer, null); + return createParameter(serializer, producer, null, null, null); + } + + public static TileDataParameter createParameter(DataSerializer serializer, ITileDataProducer producer, T defaultValue) { + return createParameter(serializer, producer, null, null, defaultValue); } public static TileDataParameter createParameter(DataSerializer serializer, ITileDataProducer producer, ITileDataConsumer consumer) { - return createParameter(serializer, producer, consumer, null); + return createParameter(serializer, producer, consumer, null, null); } - public static TileDataParameter createParameter(DataSerializer serializer, ITileDataProducer producer, ITileDataConsumer consumer, ITileDataListener listener) { - TileDataParameter parameter = new TileDataParameter<>(PARAMETER_ID++, serializer, producer, consumer, listener); + public static TileDataParameter createParameter(DataSerializer serializer, ITileDataProducer producer, ITileDataConsumer consumer, ITileDataListener listener, T defaultValue) { + TileDataParameter parameter = new TileDataParameter<>(PARAMETER_ID++, defaultValue, serializer, producer, consumer, listener); PARAMETER_MAP.put(parameter.getId(), parameter); @@ -55,11 +59,11 @@ public class TileDataManager { this.tile = tile; } - public void addParameter(TileDataParameter parameter) { + public void addParameter(TileDataParameter parameter) { parameters.add(parameter); } - public void addWatchedParameter(TileDataParameter parameter) { + public void addWatchedParameter(TileDataParameter parameter) { addParameter(parameter); watchedParameters.add(parameter); @@ -87,11 +91,11 @@ public class TileDataManager { } } - public void sendParameter(EntityPlayerMP player, TileDataParameter parameter) { + public void sendParameter(EntityPlayerMP player, TileDataParameter parameter) { RefinedStorage.INSTANCE.network.sendTo(new MessageTileDataParameter(tile, parameter), player); } - public void sendParameterToWatchers(TileDataParameter parameter) { + public void sendParameterToWatchers(TileDataParameter parameter) { for (EntityPlayer player : tile.getWorld().playerEntities) { Container container = player.openContainer; diff --git a/src/main/java/refinedstorage/tile/data/TileDataParameter.java b/src/main/java/refinedstorage/tile/data/TileDataParameter.java index 66040e933..9972f3dc1 100755 --- a/src/main/java/refinedstorage/tile/data/TileDataParameter.java +++ b/src/main/java/refinedstorage/tile/data/TileDataParameter.java @@ -11,8 +11,9 @@ public class TileDataParameter { private ITileDataListener listener; private T value; - public TileDataParameter(int id, DataSerializer serializer, ITileDataProducer producer, ITileDataConsumer consumer, ITileDataListener listener) { + public TileDataParameter(int id, T defaultValue, DataSerializer serializer, ITileDataProducer producer, ITileDataConsumer consumer, ITileDataListener listener) { this.id = id; + this.value = defaultValue; this.serializer = serializer; this.valueProducer = producer; this.valueConsumer = consumer; diff --git a/src/main/java/refinedstorage/tile/grid/TileGrid.java b/src/main/java/refinedstorage/tile/grid/TileGrid.java index afc0f3a0f..b8bce37a6 100755 --- a/src/main/java/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/refinedstorage/tile/grid/TileGrid.java @@ -445,7 +445,7 @@ public class TileGrid extends TileNode implements IGrid { } @Override - public IItemHandler getDroppedItems() { + public IItemHandler getDrops() { switch (getType()) { case CRAFTING: return new CombinedInvWrapper(filter, new InvWrapper(matrix));