Add INetworkNodeCable marker interface.

This commit is contained in:
raoulvdberge
2018-11-09 22:26:25 +01:00
parent 2604b19c0f
commit fed2392466
9 changed files with 26 additions and 9 deletions

View File

@@ -0,0 +1,8 @@
package com.raoulvdberge.refinedstorage.api.network.node;
/**
* A simple marker interface to identify "cable" nodes.
* Must be implemented on a {@link INetworkNode}.
*/
public interface INetworkNodeCable {
}

View File

@@ -1,6 +1,7 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.node;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeCable;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
@@ -11,7 +12,7 @@ import net.minecraftforge.items.IItemHandler;
import javax.annotation.Nullable;
public class NetworkNodeCable extends NetworkNode implements ICoverable {
public class NetworkNodeCable extends NetworkNode implements ICoverable, INetworkNodeCable {
public static final String ID = "cable";
private static final String NBT_COVERS = "Covers";

View File

@@ -2,7 +2,10 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeCable;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsWirelessTransmitter;
@@ -78,7 +81,17 @@ public class BlockWirelessTransmitter extends BlockNode {
@Override
public boolean canPlaceBlockAt(World world, BlockPos pos) {
return world.getBlockState(pos.offset(EnumFacing.DOWN)).getBlock() instanceof BlockCable;
TileEntity tile = world.getTileEntity(pos.offset(EnumFacing.DOWN));
if (tile != null && tile.hasCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, EnumFacing.UP)) {
INetworkNodeProxy proxy = tile.getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, EnumFacing.UP);
if (proxy != null && proxy.getNode() instanceof INetworkNodeCable) {
return true;
}
}
return world.getBlockState(pos.offset(EnumFacing.DOWN)).getBlock() instanceof BlockCable; // Make sure we still detect stuff like importers/exporters/etc.
}
@Override