Redstone reader writer handler
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IWriter;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class ReaderWriterHandlerRedstone implements IReaderWriterHandler {
|
||||
public static final String ID = "redstone";
|
||||
|
||||
@Override
|
||||
public void update(IReaderWriterChannel channel) {
|
||||
int strength = 0;
|
||||
|
||||
for (IReader reader : channel.getReaders()) {
|
||||
strength += reader.getRedstoneStrength();
|
||||
}
|
||||
|
||||
for (IWriter writer : channel.getWriters()) {
|
||||
writer.setRedstoneStrength(strength);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionChange(boolean state) {
|
||||
// @TODO: Destroy redstone strength
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockWriter extends BlockNode {
|
||||
@@ -33,6 +34,26 @@ public class BlockWriter extends BlockNode {
|
||||
return new TileWriter();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public int getWeakPower(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) {
|
||||
TileWriter writer = (TileWriter) world.getTileEntity(pos);
|
||||
|
||||
return side == writer.getDirection().getOpposite() ? writer.getRedstoneStrength() : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public int getStrongPower(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) {
|
||||
return getWeakPower(state, world, pos, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public boolean canProvidePower(IBlockState state) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumPlacementType getPlacementType() {
|
||||
return EnumPlacementType.ANY;
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPrev
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementItemStack;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry.CraftingTaskFactory;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerItems;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerRedstone;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.solderer.*;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
||||
@@ -75,6 +76,7 @@ public class ProxyCommon {
|
||||
API.instance().getCraftingPreviewElementRegistry().add(CraftingPreviewElementFluidStack.ID, CraftingPreviewElementFluidStack::fromByteBuf);
|
||||
|
||||
API.instance().getReaderWriterHandlerRegistry().add(ReaderWriterHandlerItems.ID, tag -> new ReaderWriterHandlerItems(tag));
|
||||
API.instance().getReaderWriterHandlerRegistry().add(ReaderWriterHandlerRedstone.ID, tag -> new ReaderWriterHandlerRedstone());
|
||||
|
||||
int id = 0;
|
||||
|
||||
|
||||
@@ -31,10 +31,10 @@ public class TileWriter extends TileNode implements IWriter, IReaderWriter {
|
||||
public void update() {
|
||||
super.update();
|
||||
|
||||
if (!worldObj.isRemote && redstoneStrength != lastRedstoneStrength) {
|
||||
lastRedstoneStrength = redstoneStrength;
|
||||
if (!worldObj.isRemote && getRedstoneStrength() != lastRedstoneStrength) {
|
||||
lastRedstoneStrength = getRedstoneStrength();
|
||||
|
||||
worldObj.notifyNeighborsOfStateChange(pos, RSBlocks.WRITER);
|
||||
worldObj.notifyNeighborsOfStateChange(pos, RSBlocks.WRITER); // @TODO: Does this need to happen too on orientation change?
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user