Remove all specialized fluid tiles to the "real" tile with a toggle for fluids/items
This commit is contained in:
@@ -44,12 +44,10 @@ public final class RefinedStorage {
|
||||
public int controllerBaseUsage;
|
||||
public int cableUsage;
|
||||
public int constructorUsage;
|
||||
public int fluidConstructorUsage;
|
||||
public int crafterUsage;
|
||||
public int crafterPerPatternUsage;
|
||||
public int craftingMonitorUsage;
|
||||
public int destructorUsage;
|
||||
public int fluidDestructorUsage;
|
||||
public int detectorUsage;
|
||||
public int diskDriveUsage;
|
||||
public int diskDrivePerDiskUsage;
|
||||
@@ -59,7 +57,6 @@ public final class RefinedStorage {
|
||||
public int externalStoragePerStorageUsage;
|
||||
public int exporterUsage;
|
||||
public int importerUsage;
|
||||
public int fluidImporterUsage;
|
||||
public int interfaceUsage;
|
||||
public int relayUsage;
|
||||
public int soldererUsage;
|
||||
@@ -94,12 +91,10 @@ public final class RefinedStorage {
|
||||
controllerBaseUsage = config.getInt("controllerBase", "energy", 0, 0, Integer.MAX_VALUE, "The base energy used by the Controller");
|
||||
cableUsage = config.getInt("cable", "energy", 0, 0, Integer.MAX_VALUE, "The energy used by Cables");
|
||||
constructorUsage = config.getInt("constructor", "energy", 1, 0, Integer.MAX_VALUE, "The energy used by Constructors");
|
||||
fluidConstructorUsage = config.getInt("fluidConstructor", "energy", 1, 0, Integer.MAX_VALUE, "The energy used by Fluid Constructors");
|
||||
crafterUsage = config.getInt("crafter", "energy", 2, 0, Integer.MAX_VALUE, "The base energy used by Crafters");
|
||||
crafterPerPatternUsage = config.getInt("crafterPerPattern", "energy", 1, 0, Integer.MAX_VALUE, "The additional energy used per Pattern in a Crafter");
|
||||
craftingMonitorUsage = config.getInt("craftingMonitor", "energy", 2, 0, Integer.MAX_VALUE, "The energy used by Crafting Monitors");
|
||||
destructorUsage = config.getInt("destructor", "energy", 1, 0, Integer.MAX_VALUE, "The energy used by Destructors");
|
||||
fluidDestructorUsage = config.getInt("fluidDestructor", "energy", 1, 0, Integer.MAX_VALUE, "The energy used by Fluid Destructors");
|
||||
detectorUsage = config.getInt("detector", "energy", 2, 0, Integer.MAX_VALUE, "The energy used by Detectors");
|
||||
diskDriveUsage = config.getInt("diskDrive", "energy", 0, 0, Integer.MAX_VALUE, "The base energy used by Disk Drives");
|
||||
diskDrivePerDiskUsage = config.getInt("diskDrivePerDisk", "energy", 1, 0, Integer.MAX_VALUE, "The additional energy used by Storage Disks in Disk Drives");
|
||||
@@ -109,7 +104,6 @@ public final class RefinedStorage {
|
||||
externalStoragePerStorageUsage = config.getInt("externalStoragePerStorage", "energy", 1, 0, Integer.MAX_VALUE, "The additional energy used per connected storage to an External Storage");
|
||||
exporterUsage = config.getInt("exporter", "energy", 1, 0, Integer.MAX_VALUE, "The energy used by Exporters");
|
||||
importerUsage = config.getInt("importer", "energy", 1, 0, Integer.MAX_VALUE, "The energy used by Importers");
|
||||
fluidImporterUsage = config.getInt("fluidImporter", "energy", 1, 0, Integer.MAX_VALUE, "The energy used by Fluid Importers");
|
||||
interfaceUsage = config.getInt("interface", "energy", 3, 0, Integer.MAX_VALUE, "The energy used by Interfaces");
|
||||
relayUsage = config.getInt("relay", "energy", 1, 0, Integer.MAX_VALUE, "The energy used by Relays");
|
||||
soldererUsage = config.getInt("solderer", "energy", 3, 0, Integer.MAX_VALUE, "The energy used by Solderers");
|
||||
|
||||
@@ -25,7 +25,4 @@ public final class RefinedStorageBlocks {
|
||||
public static final BlockNetworkTransmitter NETWORK_TRANSMITTER = new BlockNetworkTransmitter();
|
||||
public static final BlockNetworkReceiver NETWORK_RECEIVER = new BlockNetworkReceiver();
|
||||
public static final BlockFluidDiskDrive FLUID_DISK_DRIVE = new BlockFluidDiskDrive();
|
||||
public static final BlockFluidConstructor FLUID_CONSTRUCTOR = new BlockFluidConstructor();
|
||||
public static final BlockFluidDestructor FLUID_DESTRUCTOR = new BlockFluidDestructor();
|
||||
public static final BlockFluidImporter FLUID_IMPORTER = new BlockFluidImporter();
|
||||
}
|
||||
@@ -21,7 +21,4 @@ public final class RefinedStorageGui {
|
||||
public static final int GRID_FILTER = 17;
|
||||
public static final int NETWORK_TRANSMITTER = 18;
|
||||
public static final int FLUID_DISK_DRIVE = 19;
|
||||
public static final int FLUID_CONSTRUCTOR = 20;
|
||||
public static final int FLUID_DESTRUCTOR = 21;
|
||||
public static final int FLUID_IMPORTER = 22;
|
||||
}
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
package refinedstorage.block;
|
||||
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
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.World;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageGui;
|
||||
import refinedstorage.tile.TileFluidConstructor;
|
||||
|
||||
public class BlockFluidConstructor extends BlockConstructor {
|
||||
public BlockFluidConstructor() {
|
||||
super("fluid_constructor");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createTileEntity(World world, IBlockState state) {
|
||||
return new TileFluidConstructor();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivatedDefault(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||
if (hitCablePart(state, world, pos, hitX, hitY, hitZ)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!world.isRemote) {
|
||||
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.FLUID_CONSTRUCTOR, world, pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package refinedstorage.block;
|
||||
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
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.World;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageGui;
|
||||
import refinedstorage.tile.TileFluidDestructor;
|
||||
|
||||
public class BlockFluidDestructor extends BlockDestructor {
|
||||
public BlockFluidDestructor() {
|
||||
super("fluid_destructor");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createTileEntity(World world, IBlockState state) {
|
||||
return new TileFluidDestructor();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivatedDefault(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||
if (hitCablePart(state, world, pos, hitX, hitY, hitZ)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!world.isRemote) {
|
||||
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.FLUID_DESTRUCTOR, world, pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package refinedstorage.block;
|
||||
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
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.World;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageGui;
|
||||
import refinedstorage.tile.TileFluidImporter;
|
||||
|
||||
public class BlockFluidImporter extends BlockImporter {
|
||||
public BlockFluidImporter() {
|
||||
super("fluid_importer");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createTileEntity(World world, IBlockState state) {
|
||||
return new TileFluidImporter();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivatedDefault(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||
if (hitCablePart(state, world, pos, hitX, hitY, hitZ)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!world.isRemote) {
|
||||
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.FLUID_IMPORTER, world, pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -115,7 +115,7 @@ public abstract class ContainerBase extends Container {
|
||||
}
|
||||
|
||||
for (int i = begin; i < end; ++i) {
|
||||
if (!getSlot(i).getHasStack()) {
|
||||
if (!getSlot(i).getHasStack() && getSlot(i).isItemValid(stack)) {
|
||||
getSlot(i).putStack(ItemHandlerHelper.copyStackWithSize(stack, 1));
|
||||
getSlot(i).onSlotChanged();
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
import refinedstorage.container.slot.SlotSpecimen;
|
||||
import refinedstorage.container.slot.SlotSpecimenType;
|
||||
import refinedstorage.tile.TileConstructor;
|
||||
|
||||
public class ContainerConstructor extends ContainerBase {
|
||||
@@ -15,7 +16,7 @@ public class ContainerConstructor extends ContainerBase {
|
||||
addSlotToContainer(new SlotItemHandler(constructor.getUpgrades(), i, 187, 6 + (i * 18)));
|
||||
}
|
||||
|
||||
addSlotToContainer(new SlotSpecimen(constructor.getFilter(), 0, 80, 20, SlotSpecimen.SPECIMEN_BLOCK));
|
||||
addSlotToContainer(new SlotSpecimenType(constructor, 0, 80, 20, SlotSpecimen.SPECIMEN_BLOCK));
|
||||
|
||||
addPlayerInventory(8, 55);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
import refinedstorage.container.slot.SlotSpecimen;
|
||||
import refinedstorage.container.slot.SlotSpecimenType;
|
||||
import refinedstorage.tile.TileDestructor;
|
||||
|
||||
public class ContainerDestructor extends ContainerBase {
|
||||
@@ -16,7 +17,7 @@ public class ContainerDestructor extends ContainerBase {
|
||||
}
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
addSlotToContainer(new SlotSpecimen(destructor.getInventory(), i, 8 + (18 * i), 20, SlotSpecimen.SPECIMEN_BLOCK));
|
||||
addSlotToContainer(new SlotSpecimenType(destructor, i, 8 + (18 * i), 20, SlotSpecimen.SPECIMEN_BLOCK));
|
||||
}
|
||||
|
||||
addPlayerInventory(8, 55);
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
package refinedstorage.container;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
import refinedstorage.container.slot.SlotSpecimenFluid;
|
||||
import refinedstorage.tile.TileFluidConstructor;
|
||||
|
||||
public class ContainerFluidConstructor extends ContainerBase {
|
||||
public ContainerFluidConstructor(TileFluidConstructor fluidConstructor, EntityPlayer player) {
|
||||
super(fluidConstructor, player);
|
||||
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
addSlotToContainer(new SlotItemHandler(fluidConstructor.getUpgrades(), i, 187, 6 + (i * 18)));
|
||||
}
|
||||
|
||||
addSlotToContainer(new SlotSpecimenFluid(!fluidConstructor.getWorld().isRemote, fluidConstructor.getFilter(), 0, 80, 20));
|
||||
|
||||
addPlayerInventory(8, 55);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
|
||||
ItemStack stack = null;
|
||||
|
||||
Slot slot = getSlot(index);
|
||||
|
||||
if (slot != null && slot.getHasStack()) {
|
||||
stack = slot.getStack();
|
||||
|
||||
if (index < 4) {
|
||||
if (!mergeItemStack(stack, 4, inventorySlots.size(), false)) {
|
||||
return null;
|
||||
}
|
||||
} else if (!mergeItemStack(stack, 0, 4, false)) {
|
||||
return mergeItemStackToSpecimen(stack, 4, 4 + 1);
|
||||
}
|
||||
|
||||
if (stack.stackSize == 0) {
|
||||
slot.putStack(null);
|
||||
} else {
|
||||
slot.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return stack;
|
||||
}
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
package refinedstorage.container;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
import refinedstorage.container.slot.SlotSpecimenFluid;
|
||||
import refinedstorage.tile.TileFluidDestructor;
|
||||
|
||||
public class ContainerFluidDestructor extends ContainerBase {
|
||||
public ContainerFluidDestructor(TileFluidDestructor fluidDestructor, EntityPlayer player) {
|
||||
super(fluidDestructor, player);
|
||||
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
addSlotToContainer(new SlotItemHandler(fluidDestructor.getUpgrades(), i, 187, 6 + (i * 18)));
|
||||
}
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
addSlotToContainer(new SlotSpecimenFluid(!fluidDestructor.getWorld().isRemote, fluidDestructor.getInventory(), i, 8 + (18 * i), 20));
|
||||
}
|
||||
|
||||
addPlayerInventory(8, 55);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
|
||||
ItemStack stack = null;
|
||||
|
||||
Slot slot = getSlot(index);
|
||||
|
||||
if (slot != null && slot.getHasStack()) {
|
||||
stack = slot.getStack();
|
||||
|
||||
if (index < 4) {
|
||||
if (!mergeItemStack(stack, 4 + 9, inventorySlots.size(), false)) {
|
||||
return null;
|
||||
}
|
||||
} else if (!mergeItemStack(stack, 0, 4, false)) {
|
||||
return mergeItemStackToSpecimen(stack, 4, 4 + 9);
|
||||
}
|
||||
|
||||
if (stack.stackSize == 0) {
|
||||
slot.putStack(null);
|
||||
} else {
|
||||
slot.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return stack;
|
||||
}
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
package refinedstorage.container;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
import refinedstorage.container.slot.SlotSpecimenFluid;
|
||||
import refinedstorage.tile.TileFluidImporter;
|
||||
|
||||
public class ContainerFluidImporter extends ContainerBase {
|
||||
public ContainerFluidImporter(TileFluidImporter fluidImporter, EntityPlayer player) {
|
||||
super(fluidImporter, player);
|
||||
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
addSlotToContainer(new SlotItemHandler(fluidImporter.getUpgrades(), i, 187, 6 + (i * 18)));
|
||||
}
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
addSlotToContainer(new SlotSpecimenFluid(!fluidImporter.getWorld().isRemote, fluidImporter.getFilters(), i, 8 + (18 * i), 20));
|
||||
}
|
||||
|
||||
addPlayerInventory(8, 55);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
|
||||
ItemStack stack = null;
|
||||
|
||||
Slot slot = getSlot(index);
|
||||
|
||||
if (slot != null && slot.getHasStack()) {
|
||||
stack = slot.getStack();
|
||||
|
||||
if (index < 4) {
|
||||
if (!mergeItemStack(stack, 4 + 9, inventorySlots.size(), false)) {
|
||||
return null;
|
||||
}
|
||||
} else if (!mergeItemStack(stack, 0, 4, false)) {
|
||||
return mergeItemStackToSpecimen(stack, 4, 4 + 9);
|
||||
}
|
||||
|
||||
if (stack.stackSize == 0) {
|
||||
slot.putStack(null);
|
||||
} else {
|
||||
slot.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return stack;
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
import refinedstorage.container.slot.SlotSpecimen;
|
||||
import refinedstorage.container.slot.SlotSpecimenType;
|
||||
import refinedstorage.tile.TileImporter;
|
||||
|
||||
public class ContainerImporter extends ContainerBase {
|
||||
@@ -16,7 +16,7 @@ public class ContainerImporter extends ContainerBase {
|
||||
}
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
addSlotToContainer(new SlotSpecimen(importer.getFilters(), i, 8 + (18 * i), 20));
|
||||
addSlotToContainer(new SlotSpecimenType(importer, i, 8 + (18 * i), 20));
|
||||
}
|
||||
|
||||
addPlayerInventory(8, 55);
|
||||
|
||||
@@ -1,19 +1,14 @@
|
||||
package refinedstorage.container.slot;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
|
||||
public class SlotSpecimenFluid extends SlotSpecimen {
|
||||
private boolean server;
|
||||
|
||||
public SlotSpecimenFluid(boolean server, IItemHandler handler, int id, int x, int y) {
|
||||
super(handler, id, x, y);
|
||||
|
||||
this.server = server;
|
||||
/**
|
||||
* Created by Raoul on 13/08/2016.
|
||||
*/
|
||||
// @TODO: REMOVAL
|
||||
public class SlotSpecimenFluid extends SlotItemHandler {
|
||||
public SlotSpecimenFluid(boolean b, IItemHandler filters, int i, int i1, int i2) {
|
||||
super(filters, i, i1, i2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getStack() {
|
||||
return server ? super.getStack() : null;
|
||||
}
|
||||
}
|
||||
}
|
||||
40
src/main/java/refinedstorage/container/slot/SlotSpecimenType.java
Executable file
40
src/main/java/refinedstorage/container/slot/SlotSpecimenType.java
Executable file
@@ -0,0 +1,40 @@
|
||||
package refinedstorage.container.slot;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import refinedstorage.tile.config.IType;
|
||||
|
||||
public class SlotSpecimenType extends SlotSpecimen {
|
||||
private IType type;
|
||||
|
||||
public SlotSpecimenType(IType type, int id, int x, int y, int flags) {
|
||||
super(null, id, x, y, flags);
|
||||
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public SlotSpecimenType(IType type, int id, int x, int y) {
|
||||
this(type, id, x, y, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getItemHandler() {
|
||||
return type.getFilterInventory();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWithSize() {
|
||||
return super.isWithSize() && type.getType() != IType.FLUIDS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBlockOnly() {
|
||||
return super.isBlockOnly() && type.getType() == IType.ITEMS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getStack() {
|
||||
return (type.getType() == IType.ITEMS || !((TileEntity) type).getWorld().isRemote) ? super.getStack() : null;
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.container.ContainerConstructor;
|
||||
import refinedstorage.gui.sidebutton.SideButtonCompare;
|
||||
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import refinedstorage.gui.sidebutton.SideButtonType;
|
||||
import refinedstorage.tile.TileConstructor;
|
||||
|
||||
public class GuiConstructor extends GuiBase {
|
||||
@@ -15,6 +16,8 @@ public class GuiConstructor extends GuiBase {
|
||||
public void init(int x, int y) {
|
||||
addSideButton(new SideButtonRedstoneMode(TileConstructor.REDSTONE_MODE));
|
||||
|
||||
addSideButton(new SideButtonType(TileConstructor.TYPE));
|
||||
|
||||
addSideButton(new SideButtonCompare(TileConstructor.COMPARE, CompareUtils.COMPARE_DAMAGE));
|
||||
addSideButton(new SideButtonCompare(TileConstructor.COMPARE, CompareUtils.COMPARE_NBT));
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import refinedstorage.container.ContainerDestructor;
|
||||
import refinedstorage.gui.sidebutton.SideButtonCompare;
|
||||
import refinedstorage.gui.sidebutton.SideButtonMode;
|
||||
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import refinedstorage.gui.sidebutton.SideButtonType;
|
||||
import refinedstorage.tile.TileDestructor;
|
||||
|
||||
public class GuiDestructor extends GuiBase {
|
||||
@@ -16,6 +17,8 @@ public class GuiDestructor extends GuiBase {
|
||||
public void init(int x, int y) {
|
||||
addSideButton(new SideButtonRedstoneMode(TileDestructor.REDSTONE_MODE));
|
||||
|
||||
addSideButton(new SideButtonType(TileDestructor.TYPE));
|
||||
|
||||
addSideButton(new SideButtonMode(TileDestructor.MODE));
|
||||
|
||||
addSideButton(new SideButtonCompare(TileDestructor.COMPARE, CompareUtils.COMPARE_DAMAGE));
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
package refinedstorage.gui;
|
||||
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.container.ContainerFluidConstructor;
|
||||
import refinedstorage.gui.sidebutton.SideButtonCompare;
|
||||
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import refinedstorage.tile.TileFluidConstructor;
|
||||
|
||||
public class GuiFluidConstructor extends GuiBase {
|
||||
public GuiFluidConstructor(ContainerFluidConstructor container) {
|
||||
super(container, 211, 137);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(int x, int y) {
|
||||
addSideButton(new SideButtonRedstoneMode(TileFluidConstructor.REDSTONE_MODE));
|
||||
|
||||
addSideButton(new SideButtonCompare(TileFluidConstructor.COMPARE, CompareUtils.COMPARE_NBT));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(int x, int y) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawBackground(int x, int y, int mouseX, int mouseY) {
|
||||
bindTexture("gui/constructor.png");
|
||||
|
||||
drawTexture(x, y, 0, 0, width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawForeground(int mouseX, int mouseY) {
|
||||
drawString(7, 7, t("gui.refinedstorage:fluid_constructor"));
|
||||
drawString(7, 43, t("container.inventory"));
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
package refinedstorage.gui;
|
||||
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.container.ContainerFluidDestructor;
|
||||
import refinedstorage.gui.sidebutton.SideButtonCompare;
|
||||
import refinedstorage.gui.sidebutton.SideButtonMode;
|
||||
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import refinedstorage.tile.TileFluidDestructor;
|
||||
|
||||
public class GuiFluidDestructor extends GuiBase {
|
||||
public GuiFluidDestructor(ContainerFluidDestructor container) {
|
||||
super(container, 211, 137);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(int x, int y) {
|
||||
addSideButton(new SideButtonRedstoneMode(TileFluidDestructor.REDSTONE_MODE));
|
||||
|
||||
addSideButton(new SideButtonMode(TileFluidDestructor.MODE));
|
||||
|
||||
addSideButton(new SideButtonCompare(TileFluidDestructor.COMPARE, CompareUtils.COMPARE_NBT));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(int x, int y) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawBackground(int x, int y, int mouseX, int mouseY) {
|
||||
bindTexture("gui/destructor.png");
|
||||
|
||||
drawTexture(x, y, 0, 0, width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawForeground(int mouseX, int mouseY) {
|
||||
drawString(7, 7, t("gui.refinedstorage:fluid_destructor"));
|
||||
drawString(7, 43, t("container.inventory"));
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
package refinedstorage.gui;
|
||||
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.container.ContainerFluidImporter;
|
||||
import refinedstorage.gui.sidebutton.SideButtonCompare;
|
||||
import refinedstorage.gui.sidebutton.SideButtonMode;
|
||||
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import refinedstorage.tile.TileFluidImporter;
|
||||
|
||||
public class GuiFluidImporter extends GuiBase {
|
||||
public GuiFluidImporter(ContainerFluidImporter container) {
|
||||
super(container, 211, 137);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(int x, int y) {
|
||||
addSideButton(new SideButtonRedstoneMode(TileFluidImporter.REDSTONE_MODE));
|
||||
|
||||
addSideButton(new SideButtonMode(TileFluidImporter.MODE));
|
||||
|
||||
addSideButton(new SideButtonCompare(TileFluidImporter.COMPARE, CompareUtils.COMPARE_NBT));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(int x, int y) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawBackground(int x, int y, int mouseX, int mouseY) {
|
||||
bindTexture("gui/importer.png");
|
||||
|
||||
drawTexture(x, y, 0, 0, width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawForeground(int mouseX, int mouseY) {
|
||||
drawString(7, 7, t("gui.refinedstorage:fluid_importer"));
|
||||
drawString(7, 43, t("container.inventory"));
|
||||
}
|
||||
}
|
||||
@@ -53,12 +53,6 @@ public class GuiHandler implements IGuiHandler {
|
||||
return new ContainerNetworkTransmitter((TileNetworkTransmitter) tile, player);
|
||||
case RefinedStorageGui.FLUID_DISK_DRIVE:
|
||||
return new ContainerFluidDiskDrive((TileFluidDiskDrive) tile, player);
|
||||
case RefinedStorageGui.FLUID_CONSTRUCTOR:
|
||||
return new ContainerFluidConstructor((TileFluidConstructor) tile, player);
|
||||
case RefinedStorageGui.FLUID_DESTRUCTOR:
|
||||
return new ContainerFluidDestructor((TileFluidDestructor) tile, player);
|
||||
case RefinedStorageGui.FLUID_IMPORTER:
|
||||
return new ContainerFluidImporter((TileFluidImporter) tile, player);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
@@ -132,12 +126,6 @@ public class GuiHandler implements IGuiHandler {
|
||||
return new GuiNetworkTransmitter((ContainerNetworkTransmitter) getContainer(ID, player, tile), (TileNetworkTransmitter) tile);
|
||||
case RefinedStorageGui.FLUID_DISK_DRIVE:
|
||||
return new GuiStorage((ContainerFluidDiskDrive) getContainer(ID, player, tile), (IStorageGui) tile, "gui/disk_drive.png");
|
||||
case RefinedStorageGui.FLUID_CONSTRUCTOR:
|
||||
return new GuiFluidConstructor((ContainerFluidConstructor) getContainer(ID, player, tile));
|
||||
case RefinedStorageGui.FLUID_DESTRUCTOR:
|
||||
return new GuiFluidDestructor((ContainerFluidDestructor) getContainer(ID, player, tile));
|
||||
case RefinedStorageGui.FLUID_IMPORTER:
|
||||
return new GuiFluidImporter((ContainerFluidImporter) getContainer(ID, player, tile));
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import refinedstorage.container.ContainerImporter;
|
||||
import refinedstorage.gui.sidebutton.SideButtonCompare;
|
||||
import refinedstorage.gui.sidebutton.SideButtonMode;
|
||||
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import refinedstorage.gui.sidebutton.SideButtonType;
|
||||
import refinedstorage.tile.TileImporter;
|
||||
|
||||
public class GuiImporter extends GuiBase {
|
||||
@@ -16,6 +17,8 @@ public class GuiImporter extends GuiBase {
|
||||
public void init(int x, int y) {
|
||||
addSideButton(new SideButtonRedstoneMode(TileImporter.REDSTONE_MODE));
|
||||
|
||||
addSideButton(new SideButtonType(TileImporter.TYPE));
|
||||
|
||||
addSideButton(new SideButtonMode(TileImporter.MODE));
|
||||
|
||||
addSideButton(new SideButtonCompare(TileImporter.COMPARE, CompareUtils.COMPARE_DAMAGE));
|
||||
|
||||
29
src/main/java/refinedstorage/gui/sidebutton/SideButtonType.java
Executable file
29
src/main/java/refinedstorage/gui/sidebutton/SideButtonType.java
Executable file
@@ -0,0 +1,29 @@
|
||||
package refinedstorage.gui.sidebutton;
|
||||
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import refinedstorage.gui.GuiBase;
|
||||
import refinedstorage.tile.config.IType;
|
||||
import refinedstorage.tile.data.TileDataManager;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public class SideButtonType extends SideButton {
|
||||
private TileDataParameter<Integer> type;
|
||||
|
||||
public SideButtonType(TileDataParameter<Integer> type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTooltip(GuiBase gui) {
|
||||
return TextFormatting.GREEN + gui.t("sidebutton.refinedstorage:type") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:type." + type.getValue());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(GuiBase gui, int x, int y) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed() {
|
||||
TileDataManager.setParameter(type, type.getValue() == IType.ITEMS ? IType.FLUIDS : IType.ITEMS);
|
||||
}
|
||||
}
|
||||
@@ -258,8 +258,5 @@ public class ClientProxy extends CommonProxy {
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.STORAGE), EnumItemStorageType.TYPE_64K.getId(), new ModelResourceLocation("refinedstorage:storage", "type=64k"));
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.STORAGE), EnumItemStorageType.TYPE_CREATIVE.getId(), new ModelResourceLocation("refinedstorage:storage", "type=creative"));
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.FLUID_DISK_DRIVE), 0, new ModelResourceLocation("refinedstorage:disk_drive", "inventory"));
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.FLUID_CONSTRUCTOR), 0, new ModelResourceLocation("refinedstorage:fluid_constructor", "inventory"));
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.FLUID_DESTRUCTOR), 0, new ModelResourceLocation("refinedstorage:fluid_destructor", "inventory"));
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.FLUID_IMPORTER), 0, new ModelResourceLocation("refinedstorage:fluid_importer", "inventory"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,9 +86,6 @@ public class CommonProxy {
|
||||
registerTile(TileNetworkReceiver.class, "network_receiver");
|
||||
registerTile(TileNetworkTransmitter.class, "network_transmitter");
|
||||
registerTile(TileFluidDiskDrive.class, "fluid_disk_drive");
|
||||
registerTile(TileFluidConstructor.class, "fluid_constructor");
|
||||
registerTile(TileFluidDestructor.class, "fluid_destructor");
|
||||
registerTile(TileFluidImporter.class, "fluid_importer");
|
||||
|
||||
registerBlock(RefinedStorageBlocks.CONTROLLER);
|
||||
registerBlock(RefinedStorageBlocks.GRID);
|
||||
@@ -112,9 +109,6 @@ public class CommonProxy {
|
||||
registerBlock(RefinedStorageBlocks.NETWORK_TRANSMITTER);
|
||||
registerBlock(RefinedStorageBlocks.NETWORK_RECEIVER);
|
||||
registerBlock(RefinedStorageBlocks.FLUID_DISK_DRIVE);
|
||||
registerBlock(RefinedStorageBlocks.FLUID_CONSTRUCTOR);
|
||||
registerBlock(RefinedStorageBlocks.FLUID_DESTRUCTOR);
|
||||
registerBlock(RefinedStorageBlocks.FLUID_IMPORTER);
|
||||
|
||||
registerItem(RefinedStorageItems.QUARTZ_ENRICHED_IRON);
|
||||
registerItem(RefinedStorageItems.STORAGE_DISK);
|
||||
@@ -333,14 +327,6 @@ public class CommonProxy {
|
||||
new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
|
||||
);
|
||||
|
||||
// Fluid Importer
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(RefinedStorageBlocks.FLUID_IMPORTER),
|
||||
new ItemStack(RefinedStorageBlocks.CABLE),
|
||||
new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION),
|
||||
new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED),
|
||||
new ItemStack(Items.BUCKET)
|
||||
);
|
||||
|
||||
// Exporter
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(RefinedStorageBlocks.EXPORTER),
|
||||
new ItemStack(RefinedStorageBlocks.CABLE),
|
||||
@@ -360,18 +346,6 @@ public class CommonProxy {
|
||||
'I', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
|
||||
);
|
||||
|
||||
// Fluid Destructor
|
||||
GameRegistry.addShapedRecipe(new ItemStack(RefinedStorageBlocks.DESTRUCTOR),
|
||||
"EDE",
|
||||
"RMR",
|
||||
"EIE",
|
||||
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON),
|
||||
'D', new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_DESTRUCTION),
|
||||
'R', new ItemStack(Items.BUCKET),
|
||||
'M', new ItemStack(RefinedStorageBlocks.CABLE),
|
||||
'I', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
|
||||
);
|
||||
|
||||
// Constructor
|
||||
GameRegistry.addShapedRecipe(new ItemStack(RefinedStorageBlocks.CONSTRUCTOR),
|
||||
"ECE",
|
||||
@@ -384,18 +358,6 @@ public class CommonProxy {
|
||||
'I', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
|
||||
);
|
||||
|
||||
// Fluid Constructor
|
||||
GameRegistry.addShapedRecipe(new ItemStack(RefinedStorageBlocks.FLUID_CONSTRUCTOR),
|
||||
"ECE",
|
||||
"RMR",
|
||||
"EIE",
|
||||
'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON),
|
||||
'C', new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION),
|
||||
'R', new ItemStack(Items.BUCKET),
|
||||
'M', new ItemStack(RefinedStorageBlocks.CABLE),
|
||||
'I', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
|
||||
);
|
||||
|
||||
// Detector
|
||||
GameRegistry.addRecipe(new ItemStack(RefinedStorageBlocks.DETECTOR),
|
||||
"ECE",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package refinedstorage.tile;
|
||||
|
||||
import mcmultipart.microblock.IMicroblock;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.SoundType;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@@ -9,25 +10,31 @@ import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.SoundCategory;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.apiimpl.autocrafting.CraftingTaskScheduler;
|
||||
import refinedstorage.container.slot.SlotSpecimen;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.inventory.ItemHandlerFluid;
|
||||
import refinedstorage.inventory.ItemHandlerUpgrade;
|
||||
import refinedstorage.item.ItemUpgrade;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IType;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public class TileConstructor extends TileMultipartNode implements IComparable {
|
||||
public class TileConstructor extends TileMultipartNode implements IComparable, IType {
|
||||
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer> TYPE = IType.createParameter();
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
private static final String NBT_TYPE = "Type";
|
||||
|
||||
private static final int BASE_SPEED = 20;
|
||||
|
||||
private ItemHandlerBasic filter = new ItemHandlerBasic(1, this) {
|
||||
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(1, this) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
@@ -35,16 +42,20 @@ public class TileConstructor extends TileMultipartNode implements IComparable {
|
||||
block = SlotSpecimen.getBlockState(worldObj, pos.offset(getDirection()), getStackInSlot(0));
|
||||
}
|
||||
};
|
||||
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(1, this);
|
||||
|
||||
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, this, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING);
|
||||
|
||||
private int compare = 0;
|
||||
private int type = IType.ITEMS;
|
||||
|
||||
private IBlockState block;
|
||||
|
||||
private CraftingTaskScheduler scheduler = new CraftingTaskScheduler(this);
|
||||
|
||||
public TileConstructor() {
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
dataManager.addWatchedParameter(TYPE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -59,23 +70,45 @@ public class TileConstructor extends TileMultipartNode implements IComparable {
|
||||
|
||||
@Override
|
||||
public void updateNode() {
|
||||
if (block != null && ticks % upgrades.getSpeed(BASE_SPEED, 4) == 0) {
|
||||
BlockPos front = pos.offset(getDirection());
|
||||
if (ticks % upgrades.getSpeed(BASE_SPEED, 4) == 0) {
|
||||
if (type == IType.ITEMS && block != null) {
|
||||
BlockPos front = pos.offset(getDirection());
|
||||
|
||||
if (worldObj.isAirBlock(front) && block.getBlock().canPlaceBlockAt(worldObj, front)) {
|
||||
ItemStack took = network.extractItem(filter.getStackInSlot(0), 1, compare);
|
||||
if (worldObj.isAirBlock(front) && block.getBlock().canPlaceBlockAt(worldObj, front)) {
|
||||
ItemStack took = network.extractItem(itemFilters.getStackInSlot(0), 1, compare);
|
||||
|
||||
if (took != null) {
|
||||
scheduler.resetSchedule();
|
||||
worldObj.setBlockState(front, block.getBlock().getStateFromMeta(took.getMetadata()), 1 | 2);
|
||||
// From ItemBlock.onItemUse
|
||||
SoundType blockSound = block.getBlock().getSoundType();
|
||||
worldObj.playSound(null, front, blockSound.getPlaceSound(), SoundCategory.BLOCKS, (blockSound.getVolume() + 1.0F) / 2.0F, blockSound.getPitch() * 0.8F);
|
||||
} else if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||
ItemStack craft = filter.getStackInSlot(0);
|
||||
if (took != null) {
|
||||
scheduler.resetSchedule();
|
||||
worldObj.setBlockState(front, block.getBlock().getStateFromMeta(took.getMetadata()), 1 | 2);
|
||||
// From ItemBlock.onItemUse
|
||||
SoundType blockSound = block.getBlock().getSoundType();
|
||||
worldObj.playSound(null, front, blockSound.getPlaceSound(), SoundCategory.BLOCKS, (blockSound.getVolume() + 1.0F) / 2.0F, blockSound.getPitch() * 0.8F);
|
||||
} else if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||
ItemStack craft = itemFilters.getStackInSlot(0);
|
||||
|
||||
if (scheduler.canSchedule(compare, craft)) {
|
||||
scheduler.schedule(network, compare, craft);
|
||||
if (scheduler.canSchedule(compare, craft)) {
|
||||
scheduler.schedule(network, compare, craft);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (type == IType.FLUIDS) {
|
||||
FluidStack stack = fluidFilters.getFluids()[0];
|
||||
|
||||
if (stack != null) {
|
||||
BlockPos front = pos.offset(getDirection());
|
||||
|
||||
Block block = stack.getFluid().getBlock();
|
||||
|
||||
|
||||
if (worldObj.isAirBlock(front) && block.canPlaceBlockAt(worldObj, front)) {
|
||||
FluidStack took = network.extractFluid(stack, Fluid.BUCKET_VOLUME, compare);
|
||||
|
||||
if (took != null) {
|
||||
IBlockState state = block.getDefaultState();
|
||||
|
||||
// @TODO: This doesn't cause the block to flow?
|
||||
worldObj.setBlockState(front, state, 1 | 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -102,8 +135,13 @@ public class TileConstructor extends TileMultipartNode implements IComparable {
|
||||
compare = tag.getInteger(NBT_COMPARE);
|
||||
}
|
||||
|
||||
readItems(filter, 0, tag);
|
||||
if (tag.hasKey(NBT_TYPE)) {
|
||||
type = tag.getInteger(NBT_TYPE);
|
||||
}
|
||||
|
||||
readItems(itemFilters, 0, tag);
|
||||
readItems(upgrades, 1, tag);
|
||||
readItems(fluidFilters, 2, tag);
|
||||
|
||||
scheduler.read(tag);
|
||||
}
|
||||
@@ -113,9 +151,11 @@ public class TileConstructor extends TileMultipartNode implements IComparable {
|
||||
super.write(tag);
|
||||
|
||||
tag.setInteger(NBT_COMPARE, compare);
|
||||
tag.setInteger(NBT_TYPE, type);
|
||||
|
||||
writeItems(filter, 0, tag);
|
||||
writeItems(itemFilters, 0, tag);
|
||||
writeItems(upgrades, 1, tag);
|
||||
writeItems(fluidFilters, 2, tag);
|
||||
|
||||
scheduler.writeToNBT(tag);
|
||||
|
||||
@@ -126,15 +166,28 @@ public class TileConstructor extends TileMultipartNode implements IComparable {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
public IItemHandler getFilter() {
|
||||
return filter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDrops() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getType() {
|
||||
return worldObj.isRemote ? TYPE.getValue() : type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getFilterInventory() {
|
||||
return getType() == IType.ITEMS ? itemFilters : fluidFilters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
|
||||
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
|
||||
|
||||
@@ -2,6 +2,7 @@ package refinedstorage.tile;
|
||||
|
||||
import mcmultipart.microblock.IMicroblock;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockLiquid;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.inventory.InventoryHelper;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@@ -9,36 +10,50 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidBlock;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.wrappers.BlockLiquidWrapper;
|
||||
import net.minecraftforge.fluids.capability.wrappers.FluidBlockWrapper;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.inventory.ItemHandlerFluid;
|
||||
import refinedstorage.inventory.ItemHandlerUpgrade;
|
||||
import refinedstorage.item.ItemUpgrade;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.config.IType;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TileDestructor extends TileMultipartNode implements IComparable, IFilterable {
|
||||
public class TileDestructor extends TileMultipartNode implements IComparable, IFilterable, IType {
|
||||
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
|
||||
public static final TileDataParameter<Integer> TYPE = IType.createParameter();
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
private static final String NBT_MODE = "Mode";
|
||||
private static final String NBT_TYPE = "Type";
|
||||
|
||||
private static final int BASE_SPEED = 20;
|
||||
|
||||
private ItemHandlerBasic filters = new ItemHandlerBasic(9, this);
|
||||
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, this);
|
||||
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, this);
|
||||
|
||||
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, this, ItemUpgrade.TYPE_SPEED);
|
||||
|
||||
private int compare = 0;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
private int type = IType.ITEMS;
|
||||
|
||||
public TileDestructor() {
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
dataManager.addWatchedParameter(MODE);
|
||||
dataManager.addWatchedParameter(TYPE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -54,32 +69,56 @@ public class TileDestructor extends TileMultipartNode implements IComparable, IF
|
||||
@Override
|
||||
public void updateNode() {
|
||||
if (ticks % upgrades.getSpeed(BASE_SPEED, 4) == 0) {
|
||||
BlockPos front = pos.offset(getDirection());
|
||||
if (type == IType.ITEMS) {
|
||||
BlockPos front = pos.offset(getDirection());
|
||||
|
||||
IBlockState frontBlockState = worldObj.getBlockState(front);
|
||||
ItemStack frontStack = frontBlockState.getBlock().getItem(worldObj, front, frontBlockState);
|
||||
IBlockState frontBlockState = worldObj.getBlockState(front);
|
||||
ItemStack frontStack = frontBlockState.getBlock().getItem(worldObj, front, frontBlockState);
|
||||
|
||||
if (frontStack != null) {
|
||||
if (IFilterable.canTake(filters, mode, compare, frontStack)) {
|
||||
List<ItemStack> drops = frontBlockState.getBlock().getDrops(worldObj, front, frontBlockState, 0);
|
||||
if (frontStack != null) {
|
||||
if (IFilterable.canTake(itemFilters, mode, compare, frontStack)) {
|
||||
List<ItemStack> drops = frontBlockState.getBlock().getDrops(worldObj, front, frontBlockState, 0);
|
||||
|
||||
worldObj.playEvent(null, 2001, front, Block.getStateId(frontBlockState));
|
||||
worldObj.setBlockToAir(front);
|
||||
worldObj.playEvent(null, 2001, front, Block.getStateId(frontBlockState));
|
||||
worldObj.setBlockToAir(front);
|
||||
|
||||
for (ItemStack drop : drops) {
|
||||
// We check if the controller isn't null here because when a destructor faces a node and removes it
|
||||
// it will essentially remove this block itself from the network without knowing
|
||||
if (network == null) {
|
||||
InventoryHelper.spawnItemStack(worldObj, front.getX(), front.getY(), front.getZ(), drop);
|
||||
} else {
|
||||
ItemStack remainder = network.insertItem(drop, drop.stackSize, false);
|
||||
for (ItemStack drop : drops) {
|
||||
// We check if the controller isn't null here because when a destructor faces a node and removes it
|
||||
// it will essentially remove this block itself from the network without knowing
|
||||
if (network == null) {
|
||||
InventoryHelper.spawnItemStack(worldObj, front.getX(), front.getY(), front.getZ(), drop);
|
||||
} else {
|
||||
ItemStack remainder = network.insertItem(drop, drop.stackSize, false);
|
||||
|
||||
if (remainder != null) {
|
||||
InventoryHelper.spawnItemStack(worldObj, front.getX(), front.getY(), front.getZ(), remainder);
|
||||
if (remainder != null) {
|
||||
InventoryHelper.spawnItemStack(worldObj, front.getX(), front.getY(), front.getZ(), remainder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (type == IType.FLUIDS) {
|
||||
BlockPos front = pos.offset(getDirection());
|
||||
|
||||
Block frontBlock = worldObj.getBlockState(front).getBlock();
|
||||
|
||||
IFluidHandler handler = null;
|
||||
|
||||
if (frontBlock instanceof BlockLiquid) {
|
||||
handler = new BlockLiquidWrapper((BlockLiquid) frontBlock, worldObj, front);
|
||||
} else if (frontBlock instanceof IFluidBlock) {
|
||||
handler = new FluidBlockWrapper((IFluidBlock) frontBlock, worldObj, front);
|
||||
}
|
||||
|
||||
if (handler != null) {
|
||||
FluidStack stack = handler.drain(Fluid.BUCKET_VOLUME, false);
|
||||
|
||||
if (stack != null && IFilterable.canTakeFluids(fluidFilters, mode, compare, stack) && network.insertFluid(stack, stack.amount, true) == null) {
|
||||
FluidStack drained = handler.drain(Fluid.BUCKET_VOLUME, true);
|
||||
|
||||
network.insertFluid(drained, drained.amount, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -120,8 +159,13 @@ public class TileDestructor extends TileMultipartNode implements IComparable, IF
|
||||
mode = tag.getInteger(NBT_MODE);
|
||||
}
|
||||
|
||||
readItems(filters, 0, tag);
|
||||
if (tag.hasKey(NBT_TYPE)) {
|
||||
type = tag.getInteger(NBT_TYPE);
|
||||
}
|
||||
|
||||
readItems(itemFilters, 0, tag);
|
||||
readItems(upgrades, 1, tag);
|
||||
readItems(fluidFilters, 2, tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -130,9 +174,11 @@ public class TileDestructor extends TileMultipartNode implements IComparable, IF
|
||||
|
||||
tag.setInteger(NBT_COMPARE, compare);
|
||||
tag.setInteger(NBT_MODE, mode);
|
||||
tag.setInteger(NBT_TYPE, type);
|
||||
|
||||
writeItems(filters, 0, tag);
|
||||
writeItems(itemFilters, 0, tag);
|
||||
writeItems(upgrades, 1, tag);
|
||||
writeItems(fluidFilters, 2, tag);
|
||||
|
||||
return tag;
|
||||
}
|
||||
@@ -142,7 +188,7 @@ public class TileDestructor extends TileMultipartNode implements IComparable, IF
|
||||
}
|
||||
|
||||
public IItemHandler getInventory() {
|
||||
return filters;
|
||||
return itemFilters;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -150,6 +196,23 @@ public class TileDestructor extends TileMultipartNode implements IComparable, IF
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getType() {
|
||||
return worldObj.isRemote ? TYPE.getValue() : type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getFilterInventory() {
|
||||
return getType() == IType.ITEMS ? itemFilters : fluidFilters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
|
||||
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
|
||||
|
||||
@@ -1,132 +0,0 @@
|
||||
package refinedstorage.tile;
|
||||
|
||||
import mcmultipart.microblock.IMicroblock;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.inventory.ItemHandlerFluid;
|
||||
import refinedstorage.inventory.ItemHandlerUpgrade;
|
||||
import refinedstorage.item.ItemUpgrade;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public class TileFluidConstructor extends TileMultipartNode implements IComparable {
|
||||
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
|
||||
private static final int BASE_SPEED = 20;
|
||||
|
||||
private ItemHandlerFluid filter = new ItemHandlerFluid(1, this);
|
||||
|
||||
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, this, ItemUpgrade.TYPE_SPEED);
|
||||
|
||||
private int compare = 0;
|
||||
|
||||
public TileFluidConstructor() {
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAddMicroblock(IMicroblock microblock) {
|
||||
return !isBlockingMicroblock(microblock, getDirection());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyUsage() {
|
||||
return RefinedStorage.INSTANCE.fluidConstructorUsage + upgrades.getEnergyUsage();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateNode() {
|
||||
FluidStack stack = filter.getFluids()[0];
|
||||
|
||||
if (stack != null && ticks % upgrades.getSpeed(BASE_SPEED, 4) == 0) {
|
||||
BlockPos front = pos.offset(getDirection());
|
||||
|
||||
Block block = stack.getFluid().getBlock();
|
||||
|
||||
if (worldObj.isAirBlock(front) && block.canPlaceBlockAt(worldObj, front)) {
|
||||
FluidStack took = network.extractFluid(stack, Fluid.BUCKET_VOLUME, compare);
|
||||
|
||||
if (took != null) {
|
||||
IBlockState state = block.getDefaultState();
|
||||
|
||||
// @TODO: This doesn't cause the block to flow?
|
||||
worldObj.setBlockState(front, state, 1 | 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCompare() {
|
||||
return compare;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCompare(int compare) {
|
||||
this.compare = compare;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NBTTagCompound tag) {
|
||||
super.read(tag);
|
||||
|
||||
if (tag.hasKey(NBT_COMPARE)) {
|
||||
compare = tag.getInteger(NBT_COMPARE);
|
||||
}
|
||||
|
||||
readItems(filter, 0, tag);
|
||||
readItems(upgrades, 1, tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound write(NBTTagCompound tag) {
|
||||
super.write(tag);
|
||||
|
||||
tag.setInteger(NBT_COMPARE, compare);
|
||||
|
||||
writeItems(filter, 0, tag);
|
||||
writeItems(upgrades, 1, tag);
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
public IItemHandler getUpgrades() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
public IItemHandler getFilter() {
|
||||
return filter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDrops() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
|
||||
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
|
||||
return (T) upgrades;
|
||||
}
|
||||
|
||||
return super.getCapability(capability, facing);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
|
||||
return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing);
|
||||
}
|
||||
}
|
||||
@@ -1,162 +0,0 @@
|
||||
package refinedstorage.tile;
|
||||
|
||||
import mcmultipart.microblock.IMicroblock;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockLiquid;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidBlock;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.wrappers.BlockLiquidWrapper;
|
||||
import net.minecraftforge.fluids.capability.wrappers.FluidBlockWrapper;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.inventory.ItemHandlerFluid;
|
||||
import refinedstorage.inventory.ItemHandlerUpgrade;
|
||||
import refinedstorage.item.ItemUpgrade;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public class TileFluidDestructor extends TileMultipartNode implements IComparable, IFilterable {
|
||||
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
private static final String NBT_MODE = "Mode";
|
||||
|
||||
private static final int BASE_SPEED = 20;
|
||||
|
||||
private ItemHandlerFluid filters = new ItemHandlerFluid(9, this);
|
||||
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, this, ItemUpgrade.TYPE_SPEED);
|
||||
|
||||
private int compare = 0;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
|
||||
public TileFluidDestructor() {
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
dataManager.addWatchedParameter(MODE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAddMicroblock(IMicroblock microblock) {
|
||||
return !isBlockingMicroblock(microblock, getDirection());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyUsage() {
|
||||
return RefinedStorage.INSTANCE.fluidDestructorUsage + upgrades.getEnergyUsage();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateNode() {
|
||||
if (ticks % upgrades.getSpeed(BASE_SPEED, 4) == 0) {
|
||||
BlockPos front = pos.offset(getDirection());
|
||||
|
||||
Block frontBlock = worldObj.getBlockState(front).getBlock();
|
||||
|
||||
IFluidHandler handler = null;
|
||||
|
||||
if (frontBlock instanceof BlockLiquid) {
|
||||
handler = new BlockLiquidWrapper((BlockLiquid) frontBlock, worldObj, front);
|
||||
} else if (frontBlock instanceof IFluidBlock) {
|
||||
handler = new FluidBlockWrapper((IFluidBlock) frontBlock, worldObj, front);
|
||||
}
|
||||
|
||||
if (handler != null) {
|
||||
FluidStack stack = handler.drain(Fluid.BUCKET_VOLUME, false);
|
||||
|
||||
if (stack != null && IFilterable.canTakeFluids(filters, mode, compare, stack) && network.insertFluid(stack, stack.amount, true) == null) {
|
||||
FluidStack drained = handler.drain(Fluid.BUCKET_VOLUME, true);
|
||||
|
||||
network.insertFluid(drained, drained.amount, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCompare() {
|
||||
return compare;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCompare(int compare) {
|
||||
this.compare = compare;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMode() {
|
||||
return mode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMode(int mode) {
|
||||
this.mode = mode;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NBTTagCompound tag) {
|
||||
super.read(tag);
|
||||
|
||||
if (tag.hasKey(NBT_COMPARE)) {
|
||||
compare = tag.getInteger(NBT_COMPARE);
|
||||
}
|
||||
|
||||
if (tag.hasKey(NBT_MODE)) {
|
||||
mode = tag.getInteger(NBT_MODE);
|
||||
}
|
||||
|
||||
readItems(filters, 0, tag);
|
||||
readItems(upgrades, 1, tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound write(NBTTagCompound tag) {
|
||||
super.write(tag);
|
||||
|
||||
tag.setInteger(NBT_COMPARE, compare);
|
||||
tag.setInteger(NBT_MODE, mode);
|
||||
|
||||
writeItems(filters, 0, tag);
|
||||
writeItems(upgrades, 1, tag);
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
public IItemHandler getUpgrades() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
public IItemHandler getInventory() {
|
||||
return filters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDrops() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
|
||||
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
|
||||
return (T) upgrades;
|
||||
}
|
||||
|
||||
return super.getCapability(capability, facing);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
|
||||
return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing);
|
||||
}
|
||||
}
|
||||
@@ -1,142 +0,0 @@
|
||||
package refinedstorage.tile;
|
||||
|
||||
import mcmultipart.microblock.IMicroblock;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.inventory.ItemHandlerFluid;
|
||||
import refinedstorage.inventory.ItemHandlerUpgrade;
|
||||
import refinedstorage.item.ItemUpgrade;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public class TileFluidImporter extends TileMultipartNode implements IComparable, IFilterable {
|
||||
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
private static final String NBT_MODE = "Mode";
|
||||
|
||||
private ItemHandlerFluid filters = new ItemHandlerFluid(9, this);
|
||||
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, this, ItemUpgrade.TYPE_SPEED);
|
||||
|
||||
private int compare = 0;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
|
||||
public TileFluidImporter() {
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
dataManager.addWatchedParameter(MODE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAddMicroblock(IMicroblock microblock) {
|
||||
return !isBlockingMicroblock(microblock, getDirection());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyUsage() {
|
||||
return RefinedStorage.INSTANCE.fluidImporterUsage + upgrades.getEnergyUsage();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateNode() {
|
||||
IFluidHandler handler = getFluidHandler(getFacingTile(), getDirection().getOpposite());
|
||||
|
||||
if (handler != null) {
|
||||
FluidStack stack = handler.drain(Fluid.BUCKET_VOLUME, false);
|
||||
|
||||
if (stack != null && IFilterable.canTakeFluids(filters, mode, compare, stack) && network.insertFluid(stack, stack.amount, true) == null) {
|
||||
FluidStack drain = handler.drain(Fluid.BUCKET_VOLUME, true);
|
||||
|
||||
network.insertFluid(drain, drain.amount, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCompare() {
|
||||
return compare;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCompare(int compare) {
|
||||
this.compare = compare;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMode() {
|
||||
return mode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMode(int mode) {
|
||||
this.mode = mode;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NBTTagCompound tag) {
|
||||
super.read(tag);
|
||||
|
||||
if (tag.hasKey(NBT_COMPARE)) {
|
||||
compare = tag.getInteger(NBT_COMPARE);
|
||||
}
|
||||
|
||||
if (tag.hasKey(NBT_MODE)) {
|
||||
mode = tag.getInteger(NBT_MODE);
|
||||
}
|
||||
|
||||
readItems(filters, 0, tag);
|
||||
readItems(upgrades, 1, tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound write(NBTTagCompound tag) {
|
||||
super.write(tag);
|
||||
|
||||
tag.setInteger(NBT_COMPARE, compare);
|
||||
tag.setInteger(NBT_MODE, mode);
|
||||
|
||||
writeItems(filters, 0, tag);
|
||||
writeItems(upgrades, 1, tag);
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
public IItemHandler getUpgrades() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
public IItemHandler getFilters() {
|
||||
return filters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDrops() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
|
||||
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
|
||||
return (T) upgrades;
|
||||
}
|
||||
|
||||
return super.getCapability(capability, facing);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
|
||||
return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing);
|
||||
}
|
||||
}
|
||||
@@ -5,34 +5,45 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.inventory.ItemHandlerFluid;
|
||||
import refinedstorage.inventory.ItemHandlerUpgrade;
|
||||
import refinedstorage.item.ItemUpgrade;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.config.IType;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public class TileImporter extends TileMultipartNode implements IComparable, IFilterable {
|
||||
public class TileImporter extends TileMultipartNode implements IComparable, IFilterable, IType {
|
||||
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
|
||||
public static final TileDataParameter<Integer> TYPE = IType.createParameter();
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
private static final String NBT_MODE = "Mode";
|
||||
private static final String NBT_TYPE = "Type";
|
||||
|
||||
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, this);
|
||||
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, this);
|
||||
|
||||
private ItemHandlerBasic filters = new ItemHandlerBasic(9, this);
|
||||
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, this, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK);
|
||||
|
||||
private int compare = 0;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
private int type = IType.ITEMS;
|
||||
|
||||
private int currentSlot;
|
||||
|
||||
public TileImporter() {
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
dataManager.addWatchedParameter(MODE);
|
||||
dataManager.addWatchedParameter(TYPE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -47,32 +58,46 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil
|
||||
|
||||
@Override
|
||||
public void updateNode() {
|
||||
IItemHandler handler = getItemHandler(getFacingTile(), getDirection().getOpposite());
|
||||
if (type == IType.ITEMS) {
|
||||
IItemHandler handler = getItemHandler(getFacingTile(), getDirection().getOpposite());
|
||||
|
||||
if (getFacingTile() instanceof TileDiskDrive || handler == null) {
|
||||
return;
|
||||
}
|
||||
if (getFacingTile() instanceof TileDiskDrive || handler == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentSlot >= handler.getSlots()) {
|
||||
currentSlot = 0;
|
||||
}
|
||||
if (currentSlot >= handler.getSlots()) {
|
||||
currentSlot = 0;
|
||||
}
|
||||
|
||||
if (handler.getSlots() > 0) {
|
||||
ItemStack stack = handler.getStackInSlot(currentSlot);
|
||||
if (handler.getSlots() > 0) {
|
||||
ItemStack stack = handler.getStackInSlot(currentSlot);
|
||||
|
||||
if (stack == null || !IFilterable.canTake(filters, mode, compare, stack)) {
|
||||
currentSlot++;
|
||||
} else if (ticks % upgrades.getSpeed() == 0) {
|
||||
int quantity = upgrades.hasUpgrade(ItemUpgrade.TYPE_STACK) ? 64 : 1;
|
||||
|
||||
ItemStack result = handler.extractItem(currentSlot, quantity, true);
|
||||
|
||||
if (result != null && network.insertItem(result, result.stackSize, true) == null) {
|
||||
network.insertItem(result, result.stackSize, false);
|
||||
|
||||
handler.extractItem(currentSlot, quantity, false);
|
||||
} else {
|
||||
if (stack == null || !IFilterable.canTake(itemFilters, mode, compare, stack)) {
|
||||
currentSlot++;
|
||||
} else if (ticks % upgrades.getSpeed() == 0) {
|
||||
int quantity = upgrades.hasUpgrade(ItemUpgrade.TYPE_STACK) ? 64 : 1;
|
||||
|
||||
ItemStack result = handler.extractItem(currentSlot, quantity, true);
|
||||
|
||||
if (result != null && network.insertItem(result, result.stackSize, true) == null) {
|
||||
network.insertItem(result, result.stackSize, false);
|
||||
|
||||
handler.extractItem(currentSlot, quantity, false);
|
||||
} else {
|
||||
currentSlot++;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (type == IType.FLUIDS && ticks % upgrades.getSpeed() == 0) {
|
||||
IFluidHandler handler = getFluidHandler(getFacingTile(), getDirection().getOpposite());
|
||||
|
||||
if (handler != null) {
|
||||
FluidStack stack = handler.drain(Fluid.BUCKET_VOLUME, false);
|
||||
|
||||
if (stack != null && IFilterable.canTakeFluids(fluidFilters, mode, compare, stack) && network.insertFluid(stack, stack.amount, true) == null) {
|
||||
FluidStack drain = handler.drain(Fluid.BUCKET_VOLUME, true);
|
||||
|
||||
network.insertFluid(drain, drain.amount, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -114,8 +139,13 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil
|
||||
mode = tag.getInteger(NBT_MODE);
|
||||
}
|
||||
|
||||
readItems(filters, 0, tag);
|
||||
if (tag.hasKey(NBT_TYPE)) {
|
||||
type = tag.getInteger(NBT_TYPE);
|
||||
}
|
||||
|
||||
readItems(itemFilters, 0, tag);
|
||||
readItems(upgrades, 1, tag);
|
||||
readItems(fluidFilters, 2, tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -124,9 +154,11 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil
|
||||
|
||||
tag.setInteger(NBT_COMPARE, compare);
|
||||
tag.setInteger(NBT_MODE, mode);
|
||||
tag.setInteger(NBT_TYPE, type);
|
||||
|
||||
writeItems(filters, 0, tag);
|
||||
writeItems(itemFilters, 0, tag);
|
||||
writeItems(upgrades, 1, tag);
|
||||
writeItems(fluidFilters, 2, tag);
|
||||
|
||||
return tag;
|
||||
}
|
||||
@@ -135,15 +167,28 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
public IItemHandler getFilters() {
|
||||
return filters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDrops() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getType() {
|
||||
return worldObj.isRemote ? TYPE.getValue() : type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getFilterInventory() {
|
||||
return getType() == IType.ITEMS ? itemFilters : fluidFilters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
|
||||
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
|
||||
|
||||
40
src/main/java/refinedstorage/tile/config/IType.java
Executable file
40
src/main/java/refinedstorage/tile/config/IType.java
Executable file
@@ -0,0 +1,40 @@
|
||||
package refinedstorage.tile.config;
|
||||
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import refinedstorage.container.ContainerBase;
|
||||
import refinedstorage.tile.data.ITileDataConsumer;
|
||||
import refinedstorage.tile.data.ITileDataProducer;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public interface IType {
|
||||
int ITEMS = 0;
|
||||
int FLUIDS = 1;
|
||||
|
||||
static <T extends TileEntity> TileDataParameter<Integer> createParameter() {
|
||||
return new TileDataParameter<>(DataSerializers.VARINT, ITEMS, new ITileDataProducer<Integer, T>() {
|
||||
@Override
|
||||
public Integer getValue(T tile) {
|
||||
return ((IType) tile).getType();
|
||||
}
|
||||
}, new ITileDataConsumer<Integer, T>() {
|
||||
@Override
|
||||
public void setValue(T tile, Integer value) {
|
||||
if (value == 0 || value == 1) {
|
||||
((IType) tile).setType(value);
|
||||
|
||||
tile.getWorld().playerEntities.stream()
|
||||
.filter(p -> p.openContainer instanceof ContainerBase && ((ContainerBase) p.openContainer).getTile().getPos().equals(tile.getPos()))
|
||||
.forEach(p -> p.openContainer.detectAndSendChanges());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
int getType();
|
||||
|
||||
void setType(int type);
|
||||
|
||||
IItemHandler getFilterInventory();
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"textures": {
|
||||
"all": "refinedstorage:blocks/cable",
|
||||
"particle": "refinedstorage:blocks/cable",
|
||||
"front": "refinedstorage:blocks/fluid_constructor",
|
||||
"line": "refinedstorage:blocks/cable_part"
|
||||
},
|
||||
"model": "refinedstorage:cable_core",
|
||||
"uvlock": true
|
||||
},
|
||||
"variants": {
|
||||
"inventory": [
|
||||
{
|
||||
"model": "refinedstorage:constructor_destructor",
|
||||
"transform": "forge:default-block"
|
||||
}
|
||||
],
|
||||
"direction": {
|
||||
"north": {
|
||||
"submodel": "refinedstorage:constructor_destructor_north"
|
||||
},
|
||||
"east": {
|
||||
"submodel": "refinedstorage:constructor_destructor_east"
|
||||
},
|
||||
"south": {
|
||||
"submodel": "refinedstorage:constructor_destructor_south"
|
||||
},
|
||||
"west": {
|
||||
"submodel": "refinedstorage:constructor_destructor_west"
|
||||
},
|
||||
"up": {
|
||||
"submodel": "refinedstorage:constructor_destructor_up"
|
||||
},
|
||||
"down": {
|
||||
"submodel": "refinedstorage:constructor_destructor_down"
|
||||
}
|
||||
},
|
||||
"north": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_north"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"east": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_east"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"south": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_south"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"west": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_west"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"up": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_up"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"down": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_down"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"textures": {
|
||||
"all": "refinedstorage:blocks/cable",
|
||||
"particle": "refinedstorage:blocks/cable",
|
||||
"front": "refinedstorage:blocks/fluid_destructor",
|
||||
"line": "refinedstorage:blocks/cable_part"
|
||||
},
|
||||
"model": "refinedstorage:cable_core",
|
||||
"uvlock": true
|
||||
},
|
||||
"variants": {
|
||||
"inventory": [
|
||||
{
|
||||
"model": "refinedstorage:constructor_destructor",
|
||||
"transform": "forge:default-block"
|
||||
}
|
||||
],
|
||||
"direction": {
|
||||
"north": {
|
||||
"submodel": "refinedstorage:constructor_destructor_north"
|
||||
},
|
||||
"east": {
|
||||
"submodel": "refinedstorage:constructor_destructor_east"
|
||||
},
|
||||
"south": {
|
||||
"submodel": "refinedstorage:constructor_destructor_south"
|
||||
},
|
||||
"west": {
|
||||
"submodel": "refinedstorage:constructor_destructor_west"
|
||||
},
|
||||
"up": {
|
||||
"submodel": "refinedstorage:constructor_destructor_up"
|
||||
},
|
||||
"down": {
|
||||
"submodel": "refinedstorage:constructor_destructor_down"
|
||||
}
|
||||
},
|
||||
"north": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_north"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"east": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_east"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"south": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_south"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"west": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_west"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"up": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_up"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"down": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_down"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"textures": {
|
||||
"all": "refinedstorage:blocks/cable",
|
||||
"particle": "refinedstorage:blocks/cable",
|
||||
"line": "refinedstorage:blocks/cable_part"
|
||||
},
|
||||
"model": "refinedstorage:cable_core",
|
||||
"uvlock": true
|
||||
},
|
||||
"variants": {
|
||||
"inventory": [
|
||||
{
|
||||
"model": "refinedstorage:importer",
|
||||
"transform": "forge:default-block"
|
||||
}
|
||||
],
|
||||
"direction": {
|
||||
"north": {
|
||||
"submodel": "refinedstorage:importer_north"
|
||||
},
|
||||
"east": {
|
||||
"submodel": "refinedstorage:importer_east"
|
||||
},
|
||||
"south": {
|
||||
"submodel": "refinedstorage:importer_south"
|
||||
},
|
||||
"west": {
|
||||
"submodel": "refinedstorage:importer_west"
|
||||
},
|
||||
"up": {
|
||||
"submodel": "refinedstorage:importer_up"
|
||||
},
|
||||
"down": {
|
||||
"submodel": "refinedstorage:importer_down"
|
||||
}
|
||||
},
|
||||
"north": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_north"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"east": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_east"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"south": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_south"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"west": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_west"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"up": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_up"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
},
|
||||
"down": {
|
||||
"true": {
|
||||
"submodel": "refinedstorage:cable_down"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -40,9 +40,6 @@ gui.refinedstorage:network_transmitter.dimension=Dimension %d
|
||||
gui.refinedstorage:network_transmitter.missing_card=Missing Network Card
|
||||
gui.refinedstorage:network_transmitter.missing_upgrade=Insert upgrade
|
||||
gui.refinedstorage:fluid_disk_drive=Fluid Disk Drive
|
||||
gui.refinedstorage:fluid_constructor=Fluid Constructor
|
||||
gui.refinedstorage:fluid_destructor=Fluid Destructor
|
||||
gui.refinedstorage:fluid_importer=Fluid Importer
|
||||
|
||||
misc.refinedstorage:energy_stored=%d / %d RS
|
||||
misc.refinedstorage:energy_usage=Usage: %d RS/t
|
||||
@@ -96,6 +93,10 @@ sidebutton.refinedstorage:mode=Mode
|
||||
sidebutton.refinedstorage:mode.whitelist=Whitelist
|
||||
sidebutton.refinedstorage:mode.blacklist=Blacklist
|
||||
|
||||
sidebutton.refinedstorage:type=Type
|
||||
sidebutton.refinedstorage:type.0=Items
|
||||
sidebutton.refinedstorage:type.1=Fluids
|
||||
|
||||
sidebutton.refinedstorage:detector.mode=Mode
|
||||
sidebutton.refinedstorage:detector.mode.0=Emit signal when under the amount
|
||||
sidebutton.refinedstorage:detector.mode.1=Emit signal when on the amount
|
||||
@@ -131,9 +132,6 @@ block.refinedstorage:processing_pattern_encoder.name=Processing Pattern Encoder
|
||||
block.refinedstorage:network_receiver.name=Network Receiver
|
||||
block.refinedstorage:network_transmitter.name=Network Transmitter
|
||||
block.refinedstorage:fluid_disk_drive.name=Fluid Disk Drive
|
||||
block.refinedstorage:fluid_constructor.name=Fluid Constructor
|
||||
block.refinedstorage:fluid_destructor.name=Fluid Destructor
|
||||
block.refinedstorage:fluid_importer.name=Fluid Importer
|
||||
|
||||
item.refinedstorage:storage_disk.0.name=1k Storage Disk
|
||||
item.refinedstorage:storage_disk.1.name=4k Storage Disk
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 711 B |
Binary file not shown.
|
Before Width: | Height: | Size: 638 B |
Reference in New Issue
Block a user