Fix reader writer crashes

This commit is contained in:
raoulvdberge
2016-12-29 00:18:19 +01:00
parent 647faf1120
commit 74af1bc49c
5 changed files with 14 additions and 11 deletions

View File

@@ -40,7 +40,9 @@ public class BlockReader extends BlockCable {
@Override
public boolean canConnectRedstone(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) {
return side == ((TileReader) world.getTileEntity(pos)).getDirection().getOpposite();
TileEntity tile = world.getTileEntity(pos);
return tile instanceof TileReader && side == ((TileReader) tile).getDirection().getOpposite();
}
@Override

View File

@@ -66,7 +66,9 @@ public class BlockWriter extends BlockCable {
@Override
public boolean canConnectRedstone(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) {
return side == ((TileWriter) world.getTileEntity(pos)).getDirection().getOpposite();
TileEntity tile = world.getTileEntity(pos);
return tile instanceof TileWriter && side == ((TileWriter) tile).getDirection().getOpposite();
}
@Override

View File

@@ -7,8 +7,8 @@ import net.minecraft.entity.player.EntityPlayer;
public class ContainerReaderWriter extends ContainerBase {
private IReaderWriter readerWriter;
public ContainerReaderWriter(IReaderWriter readerWriter, EntityPlayer player) {
super((TileBase) readerWriter, player);
public ContainerReaderWriter(IReaderWriter readerWriter, TileBase tile, EntityPlayer player) {
super(tile, player);
this.readerWriter = readerWriter;

View File

@@ -68,7 +68,7 @@ public class GuiHandler implements IGuiHandler {
case RSGui.DISK_MANIPULATOR:
return new ContainerDiskManipulator((TileDiskManipulator) tile, player);
case RSGui.READER_WRITER:
return new ContainerReaderWriter((IReaderWriter) tile, player);
return new ContainerReaderWriter((IReaderWriter) ((TileNode) tile).getNode(), (TileBase) tile, player);
case RSGui.SECURITY_MANAGER:
return new ContainerSecurityManager((TileSecurityManager) tile, player);
default:
@@ -146,7 +146,7 @@ public class GuiHandler implements IGuiHandler {
case RSGui.WIRELESS_CRAFTING_MONITOR:
return getWirelessCraftingMonitorGui(player, x, y);
case RSGui.READER_WRITER:
return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IReaderWriter) tile);
return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IReaderWriter) ((TileNode) tile).getNode());
case RSGui.SECURITY_MANAGER:
return new GuiSecurityManager((ContainerSecurityManager) getContainer(ID, player, tile), (TileSecurityManager) tile);
default:

View File

@@ -10,7 +10,6 @@ import com.raoulvdberge.refinedstorage.tile.data.ITileDataProducer;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.client.Minecraft;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability;
@@ -18,18 +17,18 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class TileReader extends TileNode<NetworkNodeReader> {
static <T extends TileEntity & IReaderWriter> TileDataParameter<String> createChannelParameter() {
static <T extends TileNode> TileDataParameter<String> createChannelParameter() {
return new TileDataParameter<>(DataSerializers.STRING, "", new ITileDataProducer<String, T>() {
@Override
public String getValue(T tile) {
return tile.getChannel();
return ((IReaderWriter) tile.getNode()).getChannel();
}
}, new ITileDataConsumer<String, T>() {
@Override
public void setValue(T tile, String value) {
tile.setChannel(value);
((IReaderWriter) tile.getNode()).setChannel(value);
tile.markDirty();
tile.getNode().markDirty();
}
}, parameter -> {
if (Minecraft.getMinecraft().currentScreen instanceof GuiReaderWriter) {