Fix reader writer crashes
This commit is contained in:
@@ -40,7 +40,9 @@ public class BlockReader extends BlockCable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canConnectRedstone(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) {
|
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
|
@Override
|
||||||
|
@@ -66,7 +66,9 @@ public class BlockWriter extends BlockCable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canConnectRedstone(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) {
|
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
|
@Override
|
||||||
|
@@ -7,8 +7,8 @@ import net.minecraft.entity.player.EntityPlayer;
|
|||||||
public class ContainerReaderWriter extends ContainerBase {
|
public class ContainerReaderWriter extends ContainerBase {
|
||||||
private IReaderWriter readerWriter;
|
private IReaderWriter readerWriter;
|
||||||
|
|
||||||
public ContainerReaderWriter(IReaderWriter readerWriter, EntityPlayer player) {
|
public ContainerReaderWriter(IReaderWriter readerWriter, TileBase tile, EntityPlayer player) {
|
||||||
super((TileBase) readerWriter, player);
|
super(tile, player);
|
||||||
|
|
||||||
this.readerWriter = readerWriter;
|
this.readerWriter = readerWriter;
|
||||||
|
|
||||||
|
@@ -68,7 +68,7 @@ public class GuiHandler implements IGuiHandler {
|
|||||||
case RSGui.DISK_MANIPULATOR:
|
case RSGui.DISK_MANIPULATOR:
|
||||||
return new ContainerDiskManipulator((TileDiskManipulator) tile, player);
|
return new ContainerDiskManipulator((TileDiskManipulator) tile, player);
|
||||||
case RSGui.READER_WRITER:
|
case RSGui.READER_WRITER:
|
||||||
return new ContainerReaderWriter((IReaderWriter) tile, player);
|
return new ContainerReaderWriter((IReaderWriter) ((TileNode) tile).getNode(), (TileBase) tile, player);
|
||||||
case RSGui.SECURITY_MANAGER:
|
case RSGui.SECURITY_MANAGER:
|
||||||
return new ContainerSecurityManager((TileSecurityManager) tile, player);
|
return new ContainerSecurityManager((TileSecurityManager) tile, player);
|
||||||
default:
|
default:
|
||||||
@@ -146,7 +146,7 @@ public class GuiHandler implements IGuiHandler {
|
|||||||
case RSGui.WIRELESS_CRAFTING_MONITOR:
|
case RSGui.WIRELESS_CRAFTING_MONITOR:
|
||||||
return getWirelessCraftingMonitorGui(player, x, y);
|
return getWirelessCraftingMonitorGui(player, x, y);
|
||||||
case RSGui.READER_WRITER:
|
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:
|
case RSGui.SECURITY_MANAGER:
|
||||||
return new GuiSecurityManager((ContainerSecurityManager) getContainer(ID, player, tile), (TileSecurityManager) tile);
|
return new GuiSecurityManager((ContainerSecurityManager) getContainer(ID, player, tile), (TileSecurityManager) tile);
|
||||||
default:
|
default:
|
||||||
|
@@ -10,7 +10,6 @@ import com.raoulvdberge.refinedstorage.tile.data.ITileDataProducer;
|
|||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.network.datasync.DataSerializers;
|
import net.minecraft.network.datasync.DataSerializers;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
|
|
||||||
@@ -18,18 +17,18 @@ import javax.annotation.Nonnull;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class TileReader extends TileNode<NetworkNodeReader> {
|
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>() {
|
return new TileDataParameter<>(DataSerializers.STRING, "", new ITileDataProducer<String, T>() {
|
||||||
@Override
|
@Override
|
||||||
public String getValue(T tile) {
|
public String getValue(T tile) {
|
||||||
return tile.getChannel();
|
return ((IReaderWriter) tile.getNode()).getChannel();
|
||||||
}
|
}
|
||||||
}, new ITileDataConsumer<String, T>() {
|
}, new ITileDataConsumer<String, T>() {
|
||||||
@Override
|
@Override
|
||||||
public void setValue(T tile, String value) {
|
public void setValue(T tile, String value) {
|
||||||
tile.setChannel(value);
|
((IReaderWriter) tile.getNode()).setChannel(value);
|
||||||
|
|
||||||
tile.markDirty();
|
tile.getNode().markDirty();
|
||||||
}
|
}
|
||||||
}, parameter -> {
|
}, parameter -> {
|
||||||
if (Minecraft.getMinecraft().currentScreen instanceof GuiReaderWriter) {
|
if (Minecraft.getMinecraft().currentScreen instanceof GuiReaderWriter) {
|
||||||
|
Reference in New Issue
Block a user