Return a dummy reader/writer cap on clients to ensure correct rendering of pipe connections for example
This commit is contained in:
@@ -3,6 +3,8 @@ package com.raoulvdberge.refinedstorage.tile;
|
|||||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader;
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler;
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandlerFactory;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeReader;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeReader;
|
||||||
import com.raoulvdberge.refinedstorage.gui.GuiReaderWriter;
|
import com.raoulvdberge.refinedstorage.gui.GuiReaderWriter;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.ITileDataConsumer;
|
import com.raoulvdberge.refinedstorage.tile.data.ITileDataConsumer;
|
||||||
@@ -12,6 +14,8 @@ import net.minecraft.client.Minecraft;
|
|||||||
import net.minecraft.network.datasync.DataSerializers;
|
import net.minecraft.network.datasync.DataSerializers;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||||
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
@@ -43,6 +47,18 @@ public class TileReader extends TileNode<NetworkNodeReader> {
|
|||||||
dataManager.addWatchedParameter(CHANNEL);
|
dataManager.addWatchedParameter(CHANNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static <T> T getDummyCapabilityForClient(IReaderWriter readerWriter, Capability<T> capability) {
|
||||||
|
for (IReaderWriterHandlerFactory factory : API.instance().getReaderWriterHandlerRegistry().all()) {
|
||||||
|
T dummy = factory.create(null).getCapability(readerWriter, capability);
|
||||||
|
|
||||||
|
if (dummy != null) {
|
||||||
|
return dummy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing) {
|
public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing) {
|
||||||
if (super.hasCapability(capability, facing)) {
|
if (super.hasCapability(capability, facing)) {
|
||||||
@@ -51,7 +67,15 @@ public class TileReader extends TileNode<NetworkNodeReader> {
|
|||||||
|
|
||||||
IReader reader = getNode();
|
IReader reader = getNode();
|
||||||
|
|
||||||
if (facing != getDirection() || reader.getNetwork() == null) {
|
if (facing != getDirection()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (reader.getNetwork() == null) {
|
||||||
|
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
|
||||||
|
return getDummyCapabilityForClient(reader, capability) != null;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,7 +101,15 @@ public class TileReader extends TileNode<NetworkNodeReader> {
|
|||||||
if (foundCapability == null) {
|
if (foundCapability == null) {
|
||||||
IReader reader = getNode();
|
IReader reader = getNode();
|
||||||
|
|
||||||
if (facing != getDirection() || reader.getNetwork() == null) {
|
if (facing != getDirection()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (reader.getNetwork() == null) {
|
||||||
|
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
|
||||||
|
return getDummyCapabilityForClient(reader, capability);
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeWriter;
|
|||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||||
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
@@ -26,7 +28,15 @@ public class TileWriter extends TileNode<NetworkNodeWriter> {
|
|||||||
|
|
||||||
IWriter writer = getNode();
|
IWriter writer = getNode();
|
||||||
|
|
||||||
if (facing != getDirection() || writer.getNetwork() == null) {
|
if (facing != getDirection()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (writer.getNetwork() == null) {
|
||||||
|
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
|
||||||
|
return TileReader.getDummyCapabilityForClient(writer, capability) != null;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,7 +62,15 @@ public class TileWriter extends TileNode<NetworkNodeWriter> {
|
|||||||
if (foundCapability == null) {
|
if (foundCapability == null) {
|
||||||
IWriter writer = getNode();
|
IWriter writer = getNode();
|
||||||
|
|
||||||
if (facing != getDirection() || writer.getNetwork() == null) {
|
if (facing != getDirection()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (writer.getNetwork() == null) {
|
||||||
|
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
|
||||||
|
return TileReader.getDummyCapabilityForClient(writer, capability);
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user