Fix cables parts not dropping inventory + NPE error because of lack of default params

This commit is contained in:
Raoul Van den Berge
2016-08-08 17:39:10 +02:00
parent 509de0ccaa
commit d831fea52e
18 changed files with 49 additions and 35 deletions

View File

@@ -122,8 +122,8 @@ public abstract class BlockBase extends Block {
public void breakBlock(World world, BlockPos pos, IBlockState state) { public void breakBlock(World world, BlockPos pos, IBlockState state) {
TileEntity tile = world.getTileEntity(pos); TileEntity tile = world.getTileEntity(pos);
if (tile instanceof TileBase && ((TileBase) tile).getDroppedItems() != null) { if (tile instanceof TileBase && ((TileBase) tile).getDrops() != null) {
IItemHandler handler = ((TileBase) tile).getDroppedItems(); IItemHandler handler = ((TileBase) tile).getDrops();
for (int i = 0; i < handler.getSlots(); ++i) { for (int i = 0; i < handler.getSlots(); ++i) {
if (handler.getStackInSlot(i) != null) { if (handler.getStackInSlot(i) != null) {

View File

@@ -10,7 +10,6 @@ import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryHelper; import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@@ -279,8 +278,8 @@ public class BlockCable extends BlockCoverable {
network = ((TileNode) tile).getNetwork(); network = ((TileNode) tile).getNetwork();
} }
if (tile instanceof TileBase && ((TileBase) tile).getDroppedItems() != null) { if (tile instanceof TileBase && ((TileBase) tile).getDrops() != null) {
IItemHandler handler = ((TileBase) tile).getDroppedItems(); IItemHandler handler = ((TileBase) tile).getDrops();
for (int i = 0; i < handler.getSlots(); ++i) { for (int i = 0; i < handler.getSlots(); ++i) {
if (handler.getStackInSlot(i) != null) { if (handler.getStackInSlot(i) != null) {
@@ -298,15 +297,24 @@ public class BlockCable extends BlockCoverable {
} }
@Override @Override
public boolean removedByPlayerDefault(IBlockState state, World world, BlockPos pos, EntityPlayer player, boolean willHarvest) { public List<ItemStack> getDropsDefault(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) {
return willHarvest ? true : super.removedByPlayerDefault(state, world, pos, player, willHarvest); List<ItemStack> drops = new ArrayList<>();
drops.add(new ItemStack(this, 1, getMetaFromState(state)));
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));
}
}
} }
@Override return drops;
public void harvestBlockDefault(World world, EntityPlayer player, BlockPos pos, IBlockState state, TileEntity tile, ItemStack stack) {
super.harvestBlockDefault(world, player, pos, state, tile, stack);
world.setBlockToAir(pos);
} }
@Override @Override

View File

@@ -126,7 +126,7 @@ public abstract class TileBase extends TileEntity implements ITickable {
return worldObj.getTileEntity(pos.offset(direction)); return worldObj.getTileEntity(pos.offset(direction));
} }
public IItemHandler getDroppedItems() { public IItemHandler getDrops() {
return null; return null;
} }

View File

@@ -131,7 +131,7 @@ public class TileConstructor extends TileMultipartNode implements IComparable {
} }
@Override @Override
public IItemHandler getDroppedItems() { public IItemHandler getDrops() {
return upgrades; return upgrades;
} }

View File

@@ -110,7 +110,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
return nodes; return nodes;
} }
}); }, new ArrayList<>());
public static final String NBT_ENERGY = "Energy"; public static final String NBT_ENERGY = "Energy";
public static final String NBT_ENERGY_CAPACITY = "EnergyCapacity"; public static final String NBT_ENERGY_CAPACITY = "EnergyCapacity";

View File

@@ -94,7 +94,7 @@ public class TileCrafter extends TileNode implements ICraftingPatternContainer {
} }
@Override @Override
public IItemHandler getDroppedItems() { public IItemHandler getDrops() {
return new CombinedInvWrapper(patterns, upgrades); return new CombinedInvWrapper(patterns, upgrades);
} }

View File

@@ -6,6 +6,7 @@ import refinedstorage.tile.data.RefinedStorageSerializers;
import refinedstorage.tile.data.TileDataManager; import refinedstorage.tile.data.TileDataManager;
import refinedstorage.tile.data.TileDataParameter; import refinedstorage.tile.data.TileDataParameter;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -25,7 +26,7 @@ public class TileCraftingMonitor extends TileNode {
return Collections.emptyList(); return Collections.emptyList();
} }
} }
}); }, new ArrayList<>());
public TileCraftingMonitor() { public TileCraftingMonitor() {
dataManager.addParameter(TASKS); dataManager.addParameter(TASKS);

View File

@@ -146,7 +146,7 @@ public class TileDestructor extends TileMultipartNode implements IComparable, IF
} }
@Override @Override
public IItemHandler getDroppedItems() { public IItemHandler getDrops() {
return upgrades; return upgrades;
} }

View File

@@ -355,7 +355,7 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
} }
@Override @Override
public IItemHandler getDroppedItems() { public IItemHandler getDrops() {
return disks; return disks;
} }

View File

@@ -122,7 +122,7 @@ public class TileExporter extends TileMultipartNode implements IComparable {
} }
@Override @Override
public IItemHandler getDroppedItems() { public IItemHandler getDrops() {
return upgrades; return upgrades;
} }

View File

@@ -140,7 +140,7 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil
} }
@Override @Override
public IItemHandler getDroppedItems() { public IItemHandler getDrops() {
return upgrades; return upgrades;
} }

View File

@@ -150,7 +150,7 @@ public class TileInterface extends TileNode implements IComparable {
} }
@Override @Override
public IItemHandler getDroppedItems() { public IItemHandler getDrops() {
return new CombinedInvWrapper(importItems, exportItems, upgrades); return new CombinedInvWrapper(importItems, exportItems, upgrades);
} }

View File

@@ -84,7 +84,7 @@ public class TileProcessingPatternEncoder extends TileBase {
} }
@Override @Override
public IItemHandler getDroppedItems() { public IItemHandler getDrops() {
return patterns; return patterns;
} }

View File

@@ -185,7 +185,7 @@ public class TileSolderer extends TileNode {
} }
@Override @Override
public IItemHandler getDroppedItems() { public IItemHandler getDrops() {
return new CombinedInvWrapper(items, upgrades); return new CombinedInvWrapper(items, upgrades);
} }

View File

@@ -66,7 +66,7 @@ public class TileWirelessTransmitter extends TileNode implements IWirelessTransm
} }
@Override @Override
public IItemHandler getDroppedItems() { public IItemHandler getDrops() {
return upgrades; return upgrades;
} }

View File

@@ -26,15 +26,19 @@ public class TileDataManager {
private List<Object> watchedParametersCache = new ArrayList<>(); private List<Object> watchedParametersCache = new ArrayList<>();
public static <T> TileDataParameter<T> createParameter(DataSerializer<T> serializer, ITileDataProducer producer) { 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) { 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) { 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++, serializer, producer, consumer, listener); TileDataParameter<T> parameter = new TileDataParameter<>(PARAMETER_ID++, defaultValue, serializer, producer, consumer, listener);
PARAMETER_MAP.put(parameter.getId(), parameter); PARAMETER_MAP.put(parameter.getId(), parameter);
@@ -55,11 +59,11 @@ public class TileDataManager {
this.tile = tile; this.tile = tile;
} }
public void addParameter(TileDataParameter parameter) { public void addParameter(TileDataParameter<?> parameter) {
parameters.add(parameter); parameters.add(parameter);
} }
public void addWatchedParameter(TileDataParameter parameter) { public void addWatchedParameter(TileDataParameter<?> parameter) {
addParameter(parameter); addParameter(parameter);
watchedParameters.add(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); 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) { for (EntityPlayer player : tile.getWorld().playerEntities) {
Container container = player.openContainer; Container container = player.openContainer;

View File

@@ -11,8 +11,9 @@ public class TileDataParameter<T> {
private ITileDataListener<T> listener; private ITileDataListener<T> listener;
private T value; 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.id = id;
this.value = defaultValue;
this.serializer = serializer; this.serializer = serializer;
this.valueProducer = producer; this.valueProducer = producer;
this.valueConsumer = consumer; this.valueConsumer = consumer;

View File

@@ -445,7 +445,7 @@ public class TileGrid extends TileNode implements IGrid {
} }
@Override @Override
public IItemHandler getDroppedItems() { public IItemHandler getDrops() {
switch (getType()) { switch (getType()) {
case CRAFTING: case CRAFTING:
return new CombinedInvWrapper(filter, new InvWrapper(matrix)); return new CombinedInvWrapper(filter, new InvWrapper(matrix));