Fix cables parts not dropping inventory + NPE error because of lack of default params
This commit is contained in:
@@ -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) {
|
||||
|
@@ -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<ItemStack> getDropsDefault(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) {
|
||||
List<ItemStack> 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
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -131,7 +131,7 @@ public class TileConstructor extends TileMultipartNode implements IComparable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDroppedItems() {
|
||||
public IItemHandler getDrops() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
|
@@ -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";
|
||||
|
@@ -94,7 +94,7 @@ public class TileCrafter extends TileNode implements ICraftingPatternContainer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDroppedItems() {
|
||||
public IItemHandler getDrops() {
|
||||
return new CombinedInvWrapper(patterns, upgrades);
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -146,7 +146,7 @@ public class TileDestructor extends TileMultipartNode implements IComparable, IF
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDroppedItems() {
|
||||
public IItemHandler getDrops() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
|
@@ -355,7 +355,7 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDroppedItems() {
|
||||
public IItemHandler getDrops() {
|
||||
return disks;
|
||||
}
|
||||
|
||||
|
@@ -122,7 +122,7 @@ public class TileExporter extends TileMultipartNode implements IComparable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDroppedItems() {
|
||||
public IItemHandler getDrops() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
|
@@ -140,7 +140,7 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDroppedItems() {
|
||||
public IItemHandler getDrops() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
|
@@ -150,7 +150,7 @@ public class TileInterface extends TileNode implements IComparable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDroppedItems() {
|
||||
public IItemHandler getDrops() {
|
||||
return new CombinedInvWrapper(importItems, exportItems, upgrades);
|
||||
}
|
||||
|
||||
|
@@ -84,7 +84,7 @@ public class TileProcessingPatternEncoder extends TileBase {
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDroppedItems() {
|
||||
public IItemHandler getDrops() {
|
||||
return patterns;
|
||||
}
|
||||
|
||||
|
@@ -185,7 +185,7 @@ public class TileSolderer extends TileNode {
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDroppedItems() {
|
||||
public IItemHandler getDrops() {
|
||||
return new CombinedInvWrapper(items, upgrades);
|
||||
}
|
||||
|
||||
|
@@ -66,7 +66,7 @@ public class TileWirelessTransmitter extends TileNode implements IWirelessTransm
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDroppedItems() {
|
||||
public IItemHandler getDrops() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
|
@@ -26,15 +26,19 @@ public class TileDataManager {
|
||||
private List<Object> watchedParametersCache = new ArrayList<>();
|
||||
|
||||
public static <T> TileDataParameter<T> createParameter(DataSerializer<T> serializer, ITileDataProducer producer) {
|
||||
return createParameter(serializer, producer, null);
|
||||
return createParameter(serializer, producer, null, null, null);
|
||||
}
|
||||
|
||||
public static <T> TileDataParameter<T> createParameter(DataSerializer<T> serializer, ITileDataProducer producer, T defaultValue) {
|
||||
return createParameter(serializer, producer, null, null, defaultValue);
|
||||
}
|
||||
|
||||
public static <T> TileDataParameter<T> createParameter(DataSerializer<T> serializer, ITileDataProducer producer, ITileDataConsumer consumer) {
|
||||
return createParameter(serializer, producer, consumer, null);
|
||||
return createParameter(serializer, producer, consumer, null, null);
|
||||
}
|
||||
|
||||
public static <T> TileDataParameter<T> createParameter(DataSerializer<T> serializer, ITileDataProducer producer, ITileDataConsumer consumer, ITileDataListener<T> listener) {
|
||||
TileDataParameter<T> parameter = new TileDataParameter<>(PARAMETER_ID++, serializer, producer, consumer, listener);
|
||||
public static <T> TileDataParameter<T> createParameter(DataSerializer<T> serializer, ITileDataProducer producer, ITileDataConsumer consumer, ITileDataListener<T> listener, T defaultValue) {
|
||||
TileDataParameter<T> 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;
|
||||
|
||||
|
@@ -11,8 +11,9 @@ public class TileDataParameter<T> {
|
||||
private ITileDataListener<T> listener;
|
||||
private T value;
|
||||
|
||||
public TileDataParameter(int id, DataSerializer<T> serializer, ITileDataProducer<T, ? extends TileEntity> producer, ITileDataConsumer<T, ? extends TileEntity> consumer, ITileDataListener<T> listener) {
|
||||
public TileDataParameter(int id, T defaultValue, DataSerializer<T> serializer, ITileDataProducer<T, ? extends TileEntity> producer, ITileDataConsumer<T, ? extends TileEntity> consumer, ITileDataListener<T> listener) {
|
||||
this.id = id;
|
||||
this.value = defaultValue;
|
||||
this.serializer = serializer;
|
||||
this.valueProducer = producer;
|
||||
this.valueConsumer = consumer;
|
||||
|
@@ -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));
|
||||
|
Reference in New Issue
Block a user