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.EnumFacing;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class BlockWriter extends BlockNode {
|
public class BlockWriter extends BlockNode {
|
||||||
@@ -33,6 +34,26 @@ public class BlockWriter extends BlockNode {
|
|||||||
return new TileWriter();
|
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
|
@Override
|
||||||
public EnumPlacementType getPlacementType() {
|
public EnumPlacementType getPlacementType() {
|
||||||
return EnumPlacementType.ANY;
|
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.preview.CraftingPreviewElementItemStack;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry.CraftingTaskFactory;
|
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry.CraftingTaskFactory;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerItems;
|
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.solderer.*;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
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().getCraftingPreviewElementRegistry().add(CraftingPreviewElementFluidStack.ID, CraftingPreviewElementFluidStack::fromByteBuf);
|
||||||
|
|
||||||
API.instance().getReaderWriterHandlerRegistry().add(ReaderWriterHandlerItems.ID, tag -> new ReaderWriterHandlerItems(tag));
|
API.instance().getReaderWriterHandlerRegistry().add(ReaderWriterHandlerItems.ID, tag -> new ReaderWriterHandlerItems(tag));
|
||||||
|
API.instance().getReaderWriterHandlerRegistry().add(ReaderWriterHandlerRedstone.ID, tag -> new ReaderWriterHandlerRedstone());
|
||||||
|
|
||||||
int id = 0;
|
int id = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -31,10 +31,10 @@ public class TileWriter extends TileNode implements IWriter, IReaderWriter {
|
|||||||
public void update() {
|
public void update() {
|
||||||
super.update();
|
super.update();
|
||||||
|
|
||||||
if (!worldObj.isRemote && redstoneStrength != lastRedstoneStrength) {
|
if (!worldObj.isRemote && getRedstoneStrength() != lastRedstoneStrength) {
|
||||||
lastRedstoneStrength = redstoneStrength;
|
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