Disk drive GUI + container
This commit is contained in:
@@ -1,15 +1,13 @@
|
|||||||
package com.raoulvdberge.refinedstorage;
|
package com.raoulvdberge.refinedstorage;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.container.ControllerContainer;
|
|
||||||
import com.raoulvdberge.refinedstorage.render.BakedModelOverrideRegistry;
|
import com.raoulvdberge.refinedstorage.render.BakedModelOverrideRegistry;
|
||||||
import com.raoulvdberge.refinedstorage.render.model.baked.DiskDriveBakedModel;
|
import com.raoulvdberge.refinedstorage.render.model.baked.DiskDriveBakedModel;
|
||||||
import com.raoulvdberge.refinedstorage.render.model.baked.FullbrightBakedModel;
|
import com.raoulvdberge.refinedstorage.render.model.baked.FullbrightBakedModel;
|
||||||
import com.raoulvdberge.refinedstorage.screen.ControllerScreen;
|
import com.raoulvdberge.refinedstorage.screen.ControllerScreen;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.DiskDriveScreen;
|
||||||
import com.raoulvdberge.refinedstorage.screen.FilterScreen;
|
import com.raoulvdberge.refinedstorage.screen.FilterScreen;
|
||||||
import net.minecraft.client.gui.ScreenManager;
|
import net.minecraft.client.gui.ScreenManager;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.util.text.ITextComponent;
|
|
||||||
import net.minecraftforge.client.event.ModelBakeEvent;
|
import net.minecraftforge.client.event.ModelBakeEvent;
|
||||||
import net.minecraftforge.client.model.ModelLoader;
|
import net.minecraftforge.client.model.ModelLoader;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
@@ -54,12 +52,8 @@ public class ClientSetup {
|
|||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onClientSetup(FMLClientSetupEvent e) {
|
public void onClientSetup(FMLClientSetupEvent e) {
|
||||||
ScreenManager.registerFactory(RSContainers.FILTER, FilterScreen::new);
|
ScreenManager.registerFactory(RSContainers.FILTER, FilterScreen::new);
|
||||||
ScreenManager.registerFactory(RSContainers.CONTROLLER, new ScreenManager.IScreenFactory<ControllerContainer, ControllerScreen>() {
|
ScreenManager.registerFactory(RSContainers.CONTROLLER, ControllerScreen::new);
|
||||||
@Override
|
ScreenManager.registerFactory(RSContainers.DISK_DRIVE, DiskDriveScreen::new);
|
||||||
public ControllerScreen create(ControllerContainer p_create_1_, PlayerInventory p_create_2_, ITextComponent p_create_3_) {
|
|
||||||
return new ControllerScreen(p_create_1_, p_create_2_, p_create_3_);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
|
@@ -2,6 +2,8 @@ package com.raoulvdberge.refinedstorage;
|
|||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeListener;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeListener;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.CableNetworkNode;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.FluidStorageType;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.FluidStorageType;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.ItemStorageType;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.ItemStorageType;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFactoryFluid;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFactoryFluid;
|
||||||
@@ -10,7 +12,9 @@ import com.raoulvdberge.refinedstorage.block.*;
|
|||||||
import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability;
|
import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability;
|
||||||
import com.raoulvdberge.refinedstorage.config.ServerConfig;
|
import com.raoulvdberge.refinedstorage.config.ServerConfig;
|
||||||
import com.raoulvdberge.refinedstorage.container.ControllerContainer;
|
import com.raoulvdberge.refinedstorage.container.ControllerContainer;
|
||||||
|
import com.raoulvdberge.refinedstorage.container.DiskDriveContainer;
|
||||||
import com.raoulvdberge.refinedstorage.container.FilterContainer;
|
import com.raoulvdberge.refinedstorage.container.FilterContainer;
|
||||||
|
import com.raoulvdberge.refinedstorage.container.factory.PositionalTileContainerFactory;
|
||||||
import com.raoulvdberge.refinedstorage.item.*;
|
import com.raoulvdberge.refinedstorage.item.*;
|
||||||
import com.raoulvdberge.refinedstorage.item.blockitem.ControllerBlockItem;
|
import com.raoulvdberge.refinedstorage.item.blockitem.ControllerBlockItem;
|
||||||
import com.raoulvdberge.refinedstorage.item.group.MainItemGroup;
|
import com.raoulvdberge.refinedstorage.item.group.MainItemGroup;
|
||||||
@@ -75,6 +79,14 @@ public final class RS {
|
|||||||
|
|
||||||
API.instance().getStorageDiskRegistry().add(StorageDiskFactoryItem.ID, new StorageDiskFactoryItem());
|
API.instance().getStorageDiskRegistry().add(StorageDiskFactoryItem.ID, new StorageDiskFactoryItem());
|
||||||
API.instance().getStorageDiskRegistry().add(StorageDiskFactoryFluid.ID, new StorageDiskFactoryFluid());
|
API.instance().getStorageDiskRegistry().add(StorageDiskFactoryFluid.ID, new StorageDiskFactoryFluid());
|
||||||
|
|
||||||
|
API.instance().getNetworkNodeRegistry().add(DiskDriveNetworkNode.ID, (tag, world, pos) -> {
|
||||||
|
DiskDriveNetworkNode drive = new DiskDriveNetworkNode(world, pos);
|
||||||
|
drive.read(tag);
|
||||||
|
return drive;
|
||||||
|
});
|
||||||
|
|
||||||
|
API.instance().getNetworkNodeRegistry().add(CableNetworkNode.ID, (tag, world, pos) -> new CableNetworkNode(world, pos));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
@@ -120,6 +132,7 @@ public final class RS {
|
|||||||
public void onRegisterContainers(RegistryEvent.Register<ContainerType<?>> e) {
|
public void onRegisterContainers(RegistryEvent.Register<ContainerType<?>> e) {
|
||||||
e.getRegistry().register(IForgeContainerType.create((windowId, inv, data) -> new FilterContainer(inv.player, inv.getCurrentItem(), windowId)).setRegistryName(RS.ID, "filter"));
|
e.getRegistry().register(IForgeContainerType.create((windowId, inv, data) -> new FilterContainer(inv.player, inv.getCurrentItem(), windowId)).setRegistryName(RS.ID, "filter"));
|
||||||
e.getRegistry().register(IForgeContainerType.create(((windowId, inv, data) -> new ControllerContainer(null, inv.player, windowId))).setRegistryName(RS.ID, "controller"));
|
e.getRegistry().register(IForgeContainerType.create(((windowId, inv, data) -> new ControllerContainer(null, inv.player, windowId))).setRegistryName(RS.ID, "controller"));
|
||||||
|
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<DiskDriveContainer, DiskDriveTile>((windowId, inv, tile) -> new DiskDriveContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "disk_drive"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
|
@@ -21,8 +21,7 @@ public final class RSContainers {
|
|||||||
public static final ContainerType<DestructorContainer> DESTRUCTOR = null;
|
public static final ContainerType<DestructorContainer> DESTRUCTOR = null;
|
||||||
//@ObjectHolder(RS.ID + ":detector")
|
//@ObjectHolder(RS.ID + ":detector")
|
||||||
public static final ContainerType<DetectorContainer> DETECTOR = null;
|
public static final ContainerType<DetectorContainer> DETECTOR = null;
|
||||||
//@ObjectHolder(RS.ID + ":disk_drive")
|
|
||||||
public static final ContainerType<DiskDriveContainer> DISK_DRIVE = null;
|
|
||||||
//@ObjectHolder(RS.ID + ":disk_manipulator")
|
//@ObjectHolder(RS.ID + ":disk_manipulator")
|
||||||
public static final ContainerType<DiskManipulatorContainer> DISK_MANIPULATOR = null;
|
public static final ContainerType<DiskManipulatorContainer> DISK_MANIPULATOR = null;
|
||||||
//@ObjectHolder(RS.ID + ":exporter")
|
//@ObjectHolder(RS.ID + ":exporter")
|
||||||
@@ -51,8 +50,10 @@ public final class RSContainers {
|
|||||||
public static final ContainerType<RelayContainer> RELAY = null;
|
public static final ContainerType<RelayContainer> RELAY = null;
|
||||||
//@ObjectHolder(RS.ID + ":security_manager")
|
//@ObjectHolder(RS.ID + ":security_manager")
|
||||||
public static final ContainerType<SecurityManagerContainer> SECURITY_MANAGER = null;
|
public static final ContainerType<SecurityManagerContainer> SECURITY_MANAGER = null;
|
||||||
//@ObjectHolder(RS.ID + ":storage")
|
|
||||||
public static final ContainerType<StorageContainer> STORAGE = null;
|
@ObjectHolder(RS.ID + ":disk_drive")
|
||||||
|
public static final ContainerType<DiskDriveContainer> DISK_DRIVE = null;
|
||||||
|
|
||||||
//@ObjectHolder(RS.ID + ":storage_monitor")
|
//@ObjectHolder(RS.ID + ":storage_monitor")
|
||||||
public static final ContainerType<StorageMonitorContainer> STORAGE_MONITOR = null;
|
public static final ContainerType<StorageMonitorContainer> STORAGE_MONITOR = null;
|
||||||
//@ObjectHolder(RS.ID + ":wireless_transmitter")
|
//@ObjectHolder(RS.ID + ":wireless_transmitter")
|
||||||
|
@@ -1,8 +0,0 @@
|
|||||||
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 {
|
|
||||||
}
|
|
@@ -10,6 +10,8 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.storage.WorldSavedData;
|
import net.minecraft.world.storage.WorldSavedData;
|
||||||
import net.minecraftforge.common.util.Constants;
|
import net.minecraftforge.common.util.Constants;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -25,6 +27,8 @@ public class NetworkNodeManager extends WorldSavedData implements INetworkNodeMa
|
|||||||
|
|
||||||
private final World world;
|
private final World world;
|
||||||
|
|
||||||
|
private Logger logger = LogManager.getLogger(getClass());
|
||||||
|
|
||||||
private ConcurrentHashMap<BlockPos, INetworkNode> nodes = new ConcurrentHashMap<>();
|
private ConcurrentHashMap<BlockPos, INetworkNode> nodes = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
public NetworkNodeManager(String name, World world) {
|
public NetworkNodeManager(String name, World world) {
|
||||||
@@ -55,12 +59,14 @@ public class NetworkNodeManager extends WorldSavedData implements INetworkNodeMa
|
|||||||
try {
|
try {
|
||||||
node = factory.create(data, world, pos);
|
node = factory.create(data, world, pos);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
t.printStackTrace();
|
logger.error("Could not read network node", t);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node != null) {
|
if (node != null) {
|
||||||
this.nodes.put(pos, node);
|
this.nodes.put(pos, node);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
logger.warn("Factory for " + id + " not found in network node registry");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -80,7 +86,7 @@ public class NetworkNodeManager extends WorldSavedData implements INetworkNodeMa
|
|||||||
|
|
||||||
list.add(nodeTag);
|
list.add(nodeTag);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
t.printStackTrace();
|
logger.error("Error while saving", t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeCable;
|
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.util.Direction;
|
import net.minecraft.util.Direction;
|
||||||
@@ -11,14 +10,14 @@ import net.minecraftforge.items.IItemHandler;
|
|||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class NetworkNodeCable extends NetworkNode implements ICoverable, INetworkNodeCable {
|
public class CableNetworkNode extends NetworkNode implements ICoverable {
|
||||||
public static final String ID = "cable";
|
public static final String ID = "cable";
|
||||||
|
|
||||||
private static final String NBT_COVERS = "Covers";
|
private static final String NBT_COVERS = "Covers";
|
||||||
|
|
||||||
private CoverManager coverManager = new CoverManager(this);
|
private CoverManager coverManager = new CoverManager(this);
|
||||||
|
|
||||||
public NetworkNodeCable(World world, BlockPos pos) {
|
public CableNetworkNode(World world, BlockPos pos) {
|
||||||
super(world, pos);
|
super(world, pos);
|
||||||
}
|
}
|
||||||
|
|
@@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
|||||||
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
|
|
||||||
public interface IGuiStorage {
|
public interface IStorageScreen {
|
||||||
String getGuiTitle();
|
String getGuiTitle();
|
||||||
|
|
||||||
TileDataParameter<Integer, ?> getTypeParameter();
|
TileDataParameter<Integer, ?> getTypeParameter();
|
||||||
@@ -12,7 +12,7 @@ public interface IGuiStorage {
|
|||||||
|
|
||||||
TileDataParameter<Integer, ?> getCompareParameter();
|
TileDataParameter<Integer, ?> getCompareParameter();
|
||||||
|
|
||||||
TileDataParameter<Integer, ?> getFilterParameter();
|
TileDataParameter<Integer, ?> getWhitelistBlacklistParameter();
|
||||||
|
|
||||||
TileDataParameter<Integer, ?> getPriorityParameter();
|
TileDataParameter<Integer, ?> getPriorityParameter();
|
||||||
|
|
@@ -165,7 +165,7 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
|
|||||||
.forEach(task -> network.getCraftingManager().cancel(task.getId()));
|
.forEach(task -> network.getCraftingManager().cancel(task.getId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @TODO @Override
|
||||||
protected void onDirectionChanged() {
|
protected void onDirectionChanged() {
|
||||||
if (network != null) {
|
if (network != null) {
|
||||||
network.getCraftingManager().rebuild();
|
network.getCraftingManager().rebuild();
|
||||||
|
@@ -11,8 +11,8 @@ import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerUpgrade;
|
|||||||
import com.raoulvdberge.refinedstorage.inventory.listener.ListenerNetworkNode;
|
import com.raoulvdberge.refinedstorage.inventory.listener.ListenerNetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileDestructor;
|
import com.raoulvdberge.refinedstorage.tile.TileDestructor;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
@@ -44,7 +44,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class NetworkNodeDestructor extends NetworkNode implements IComparable, IFilterable, IType, ICoverable {
|
public class NetworkNodeDestructor extends NetworkNode implements IComparable, IWhitelistBlacklist, IType, ICoverable {
|
||||||
public static final String ID = "destructor";
|
public static final String ID = "destructor";
|
||||||
|
|
||||||
private static final String NBT_COMPARE = "Compare";
|
private static final String NBT_COMPARE = "Compare";
|
||||||
@@ -62,7 +62,7 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
|
|||||||
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ListenerNetworkNode(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_SILK_TOUCH, ItemUpgrade.TYPE_FORTUNE_1, ItemUpgrade.TYPE_FORTUNE_2, ItemUpgrade.TYPE_FORTUNE_3*/);
|
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ListenerNetworkNode(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_SILK_TOUCH, ItemUpgrade.TYPE_FORTUNE_1, ItemUpgrade.TYPE_FORTUNE_2, ItemUpgrade.TYPE_FORTUNE_3*/);
|
||||||
|
|
||||||
private int compare = IComparer.COMPARE_NBT;
|
private int compare = IComparer.COMPARE_NBT;
|
||||||
private int mode = IFilterable.BLACKLIST;
|
private int mode = IWhitelistBlacklist.BLACKLIST;
|
||||||
private int type = IType.ITEMS;
|
private int type = IType.ITEMS;
|
||||||
private boolean pickupItem = false;
|
private boolean pickupItem = false;
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
|
|||||||
if (entity instanceof ItemEntity) {
|
if (entity instanceof ItemEntity) {
|
||||||
ItemStack droppedItem = ((ItemEntity) entity).getItem();
|
ItemStack droppedItem = ((ItemEntity) entity).getItem();
|
||||||
|
|
||||||
if (IFilterable.acceptsItem(itemFilters, mode, compare, droppedItem) && network.insertItem(droppedItem, droppedItem.getCount(), Action.SIMULATE) == null) {
|
if (IWhitelistBlacklist.acceptsItem(itemFilters, mode, compare, droppedItem) && network.insertItem(droppedItem, droppedItem.getCount(), Action.SIMULATE) == null) {
|
||||||
network.insertItemTracked(droppedItem.copy(), droppedItem.getCount());
|
network.insertItemTracked(droppedItem.copy(), droppedItem.getCount());
|
||||||
|
|
||||||
// TODO world.removeEntity(entity);
|
// TODO world.removeEntity(entity);
|
||||||
@@ -135,7 +135,7 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (!frontStack.isEmpty()) {
|
if (!frontStack.isEmpty()) {
|
||||||
if (IFilterable.acceptsItem(itemFilters, mode, compare, frontStack) && frontBlockState.getBlockHardness(world, front) != -1.0) {
|
if (IWhitelistBlacklist.acceptsItem(itemFilters, mode, compare, frontStack) && frontBlockState.getBlockHardness(world, front) != -1.0) {
|
||||||
NonNullList<ItemStack> drops = NonNullList.create();
|
NonNullList<ItemStack> drops = NonNullList.create();
|
||||||
|
|
||||||
/* TODO if (frontBlock instanceof ShulkerBoxTileEntity) {
|
/* TODO if (frontBlock instanceof ShulkerBoxTileEntity) {
|
||||||
@@ -192,7 +192,7 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
|
|||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
FluidStack stack = handler.drain(Fluid.BUCKET_VOLUME, false);
|
FluidStack stack = handler.drain(Fluid.BUCKET_VOLUME, false);
|
||||||
|
|
||||||
if (stack != null && IFilterable.acceptsFluid(fluidFilters, mode, compare, stack) && network.insertFluid(stack, stack.amount, Action.SIMULATE) == null) {
|
if (stack != null && IWhitelistBlacklist.acceptsFluid(fluidFilters, mode, compare, stack) && network.insertFluid(stack, stack.amount, Action.SIMULATE) == null) {
|
||||||
FluidStack drained = handler.drain(Fluid.BUCKET_VOLUME, true);
|
FluidStack drained = handler.drain(Fluid.BUCKET_VOLUME, true);
|
||||||
|
|
||||||
network.insertFluidTracked(drained, drained.amount);
|
network.insertFluidTracked(drained, drained.amount);
|
||||||
@@ -215,12 +215,12 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMode() {
|
public int getWhitelistBlacklistMode() {
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setMode(int mode) {
|
public void setWhitelistBlacklistMode(int mode) {
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
|
|
||||||
markDirty();
|
markDirty();
|
||||||
|
@@ -37,7 +37,7 @@ import javax.annotation.Nullable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
public class NetworkNodeExternalStorage extends NetworkNode implements IStorageProvider, IGuiStorage, IComparable, IFilterable, IPrioritizable, IType, IAccessType, IExternalStorageContext, ICoverable {
|
public class NetworkNodeExternalStorage extends NetworkNode implements IStorageProvider, IStorageScreen, IComparable, IWhitelistBlacklist, IPrioritizable, IType, IAccessType, IExternalStorageContext, ICoverable {
|
||||||
public static final String ID = "external_storage";
|
public static final String ID = "external_storage";
|
||||||
|
|
||||||
private static final String NBT_PRIORITY = "Priority";
|
private static final String NBT_PRIORITY = "Priority";
|
||||||
@@ -52,7 +52,7 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
|
|||||||
|
|
||||||
private int priority = 0;
|
private int priority = 0;
|
||||||
private int compare = IComparer.COMPARE_NBT;
|
private int compare = IComparer.COMPARE_NBT;
|
||||||
private int mode = IFilterable.BLACKLIST;
|
private int mode = IWhitelistBlacklist.BLACKLIST;
|
||||||
private int type = IType.ITEMS;
|
private int type = IType.ITEMS;
|
||||||
private AccessType accessType = AccessType.INSERT_EXTRACT;
|
private AccessType accessType = AccessType.INSERT_EXTRACT;
|
||||||
private int networkTicks;
|
private int networkTicks;
|
||||||
@@ -99,9 +99,9 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @TODO @Override
|
||||||
protected void onDirectionChanged() {
|
protected void onDirectionChanged() {
|
||||||
super.onDirectionChanged();
|
// super.onDirectionChanged();
|
||||||
|
|
||||||
if (network != null) {
|
if (network != null) {
|
||||||
updateStorage(network);
|
updateStorage(network);
|
||||||
@@ -191,12 +191,12 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMode() {
|
public int getWhitelistBlacklistMode() {
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setMode(int mode) {
|
public void setWhitelistBlacklistMode(int mode) {
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
|
|
||||||
markDirty();
|
markDirty();
|
||||||
@@ -275,7 +275,7 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileDataParameter<Integer, ?> getFilterParameter() {
|
public TileDataParameter<Integer, ?> getWhitelistBlacklistParameter() {
|
||||||
return TileExternalStorage.MODE;
|
return TileExternalStorage.MODE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -306,12 +306,12 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean acceptsItem(ItemStack stack) {
|
public boolean acceptsItem(ItemStack stack) {
|
||||||
return IFilterable.acceptsItem(itemFilters, mode, compare, stack);
|
return IWhitelistBlacklist.acceptsItem(itemFilters, mode, compare, stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean acceptsFluid(FluidStack stack) {
|
public boolean acceptsFluid(FluidStack stack) {
|
||||||
return IFilterable.acceptsFluid(fluidFilters, mode, compare, stack);
|
return IWhitelistBlacklist.acceptsFluid(fluidFilters, mode, compare, stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -11,8 +11,8 @@ import com.raoulvdberge.refinedstorage.inventory.listener.ListenerNetworkNode;
|
|||||||
import com.raoulvdberge.refinedstorage.tile.DiskDriveTile;
|
import com.raoulvdberge.refinedstorage.tile.DiskDriveTile;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileImporter;
|
import com.raoulvdberge.refinedstorage.tile.TileImporter;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@@ -31,7 +31,7 @@ import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
|||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class NetworkNodeImporter extends NetworkNode implements IComparable, IFilterable, IType, ICoverable {
|
public class NetworkNodeImporter extends NetworkNode implements IComparable, IWhitelistBlacklist, IType, ICoverable {
|
||||||
public static final String ID = "importer";
|
public static final String ID = "importer";
|
||||||
|
|
||||||
private static final String NBT_COMPARE = "Compare";
|
private static final String NBT_COMPARE = "Compare";
|
||||||
@@ -46,7 +46,7 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
|
|||||||
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ListenerNetworkNode(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK*/);
|
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ListenerNetworkNode(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK*/);
|
||||||
|
|
||||||
private int compare = IComparer.COMPARE_NBT;
|
private int compare = IComparer.COMPARE_NBT;
|
||||||
private int mode = IFilterable.BLACKLIST;
|
private int mode = IWhitelistBlacklist.BLACKLIST;
|
||||||
private int type = IType.ITEMS;
|
private int type = IType.ITEMS;
|
||||||
|
|
||||||
private CoverManager coverManager = new CoverManager(this);
|
private CoverManager coverManager = new CoverManager(this);
|
||||||
@@ -89,7 +89,7 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
|
|||||||
|
|
||||||
ItemStack stack = handler.getStackInSlot(currentSlot);
|
ItemStack stack = handler.getStackInSlot(currentSlot);
|
||||||
|
|
||||||
if (!IFilterable.acceptsItem(itemFilters, mode, compare, stack)) {
|
if (!IWhitelistBlacklist.acceptsItem(itemFilters, mode, compare, stack)) {
|
||||||
currentSlot++;
|
currentSlot++;
|
||||||
} else if (ticks % upgrades.getSpeed() == 0) {
|
} else if (ticks % upgrades.getSpeed() == 0) {
|
||||||
ItemStack result = handler.extractItem(currentSlot, upgrades.getItemInteractCount(), true);
|
ItemStack result = handler.extractItem(currentSlot, upgrades.getItemInteractCount(), true);
|
||||||
@@ -111,7 +111,7 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
|
|||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
FluidStack stack = handler.drain(FluidAttributes.BUCKET_VOLUME, IFluidHandler.FluidAction.SIMULATE);
|
FluidStack stack = handler.drain(FluidAttributes.BUCKET_VOLUME, IFluidHandler.FluidAction.SIMULATE);
|
||||||
|
|
||||||
if (stack != null && IFilterable.acceptsFluid(fluidFilters, mode, compare, stack) && network.insertFluid(stack, stack.getAmount(), Action.SIMULATE) == null) {
|
if (stack != null && IWhitelistBlacklist.acceptsFluid(fluidFilters, mode, compare, stack) && network.insertFluid(stack, stack.getAmount(), Action.SIMULATE) == null) {
|
||||||
FluidStack toDrain = handler.drain(FluidAttributes.BUCKET_VOLUME * upgrades.getItemInteractCount(), IFluidHandler.FluidAction.EXECUTE); // TODO: is this execute?
|
FluidStack toDrain = handler.drain(FluidAttributes.BUCKET_VOLUME * upgrades.getItemInteractCount(), IFluidHandler.FluidAction.EXECUTE); // TODO: is this execute?
|
||||||
|
|
||||||
if (toDrain != null) {
|
if (toDrain != null) {
|
||||||
@@ -141,12 +141,12 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMode() {
|
public int getWhitelistBlacklistMode() {
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setMode(int mode) {
|
public void setWhitelistBlacklistMode(int mode) {
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
|
|
||||||
markDirty();
|
markDirty();
|
||||||
|
@@ -3,9 +3,9 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node.cover;
|
|||||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.CableNetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCable;
|
|
||||||
import net.minecraft.block.*;
|
import net.minecraft.block.*;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
@@ -61,7 +61,7 @@ public class CoverManager {
|
|||||||
public boolean setCover(Direction facing, @Nullable Cover cover) {
|
public boolean setCover(Direction facing, @Nullable Cover cover) {
|
||||||
if (cover == null || (isValidCover(cover.getStack()) && !hasCover(facing))) {
|
if (cover == null || (isValidCover(cover.getStack()) && !hasCover(facing))) {
|
||||||
if (cover != null) {
|
if (cover != null) {
|
||||||
if (facing == node.getDirection() && !(node instanceof NetworkNodeCable) && cover.getType() != CoverType.HOLLOW) {
|
if (facing == node.getDirection() && !(node instanceof CableNetworkNode) && cover.getType() != CoverType.HOLLOW) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -8,7 +8,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
|
|||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiStorage;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IStorageScreen;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
|
||||||
@@ -27,15 +27,13 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.server.ServerWorld;
|
import net.minecraft.world.server.ServerWorld;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
import net.minecraftforge.fml.LogicalSide;
|
|
||||||
import net.minecraftforge.fml.common.thread.EffectiveSide;
|
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IStorageProvider, IComparable, IFilterable, IPrioritizable, IType, IAccessType, IStorageDiskContainerContext {
|
public class DiskDriveNetworkNode extends NetworkNode implements IStorageScreen, IStorageProvider, IComparable, IWhitelistBlacklist, IPrioritizable, IType, IAccessType, IStorageDiskContainerContext {
|
||||||
public static final Predicate<ItemStack> VALIDATOR_STORAGE_DISK = s -> s.getItem() instanceof IStorageDiskProvider && ((IStorageDiskProvider) s.getItem()).isValid(s);
|
public static final Predicate<ItemStack> VALIDATOR_STORAGE_DISK = s -> s.getItem() instanceof IStorageDiskProvider && ((IStorageDiskProvider) s.getItem()).isValid(s);
|
||||||
|
|
||||||
public static final String ID = "disk_drive";
|
public static final String ID = "disk_drive";
|
||||||
@@ -56,15 +54,15 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
|
|||||||
protected void onContentsChanged(int slot) {
|
protected void onContentsChanged(int slot) {
|
||||||
super.onContentsChanged(slot);
|
super.onContentsChanged(slot);
|
||||||
|
|
||||||
if (EffectiveSide.get() == LogicalSide.SERVER) { // TODO : correct?
|
if (!world.isRemote) {
|
||||||
StackUtils.createStorages(
|
StackUtils.createStorages(
|
||||||
(ServerWorld) world,
|
(ServerWorld) world,
|
||||||
getStackInSlot(slot),
|
getStackInSlot(slot),
|
||||||
slot,
|
slot,
|
||||||
itemDisks,
|
itemDisks,
|
||||||
fluidDisks,
|
fluidDisks,
|
||||||
s -> new StorageDiskItemDriveWrapper(NetworkNodeDiskDrive.this, s),
|
s -> new StorageDiskItemDriveWrapper(DiskDriveNetworkNode.this, s),
|
||||||
s -> new StorageDiskFluidDriveWrapper(NetworkNodeDiskDrive.this, s)
|
s -> new StorageDiskFluidDriveWrapper(DiskDriveNetworkNode.this, s)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (network != null) {
|
if (network != null) {
|
||||||
@@ -86,10 +84,10 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
|
|||||||
private AccessType accessType = AccessType.INSERT_EXTRACT;
|
private AccessType accessType = AccessType.INSERT_EXTRACT;
|
||||||
private int priority = 0;
|
private int priority = 0;
|
||||||
private int compare = IComparer.COMPARE_NBT;
|
private int compare = IComparer.COMPARE_NBT;
|
||||||
private int mode = IFilterable.BLACKLIST;
|
private int mode = IWhitelistBlacklist.BLACKLIST;
|
||||||
private int type = IType.ITEMS;
|
private int type = IType.ITEMS;
|
||||||
|
|
||||||
public NetworkNodeDiskDrive(World world, BlockPos pos) {
|
public DiskDriveNetworkNode(World world, BlockPos pos) {
|
||||||
super(world, pos);
|
super(world, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -251,12 +249,12 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMode() {
|
public int getWhitelistBlacklistMode() {
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setMode(int mode) {
|
public void setWhitelistBlacklistMode(int mode) {
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
|
|
||||||
markDirty();
|
markDirty();
|
||||||
@@ -283,8 +281,8 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileDataParameter<Integer, ?> getFilterParameter() {
|
public TileDataParameter<Integer, ?> getWhitelistBlacklistParameter() {
|
||||||
return DiskDriveTile.MODE;
|
return DiskDriveTile.WHITELIST_BLACKLIST;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
@@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerCon
|
|||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||||
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
@@ -17,11 +17,11 @@ import javax.annotation.Nullable;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
public class StorageDiskFluidDriveWrapper implements IStorageDisk<FluidStack> {
|
public class StorageDiskFluidDriveWrapper implements IStorageDisk<FluidStack> {
|
||||||
private NetworkNodeDiskDrive diskDrive;
|
private DiskDriveNetworkNode diskDrive;
|
||||||
private IStorageDisk<FluidStack> parent;
|
private IStorageDisk<FluidStack> parent;
|
||||||
private int lastState;
|
private int lastState;
|
||||||
|
|
||||||
public StorageDiskFluidDriveWrapper(NetworkNodeDiskDrive diskDrive, IStorageDisk<FluidStack> parent) {
|
public StorageDiskFluidDriveWrapper(DiskDriveNetworkNode diskDrive, IStorageDisk<FluidStack> parent) {
|
||||||
this.diskDrive = diskDrive;
|
this.diskDrive = diskDrive;
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
this.setSettings(
|
this.setSettings(
|
||||||
@@ -57,7 +57,7 @@ public class StorageDiskFluidDriveWrapper implements IStorageDisk<FluidStack> {
|
|||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public FluidStack insert(@Nonnull FluidStack stack, int size, Action action) {
|
public FluidStack insert(@Nonnull FluidStack stack, int size, Action action) {
|
||||||
if (!IFilterable.acceptsFluid(diskDrive.getFluidFilters(), diskDrive.getMode(), diskDrive.getCompare(), stack)) {
|
if (!IWhitelistBlacklist.acceptsFluid(diskDrive.getFluidFilters(), diskDrive.getWhitelistBlacklistMode(), diskDrive.getCompare(), stack)) {
|
||||||
return StackUtils.copy(stack, size);
|
return StackUtils.copy(stack, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerCon
|
|||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||||
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
@@ -17,11 +17,11 @@ import javax.annotation.Nullable;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
public class StorageDiskItemDriveWrapper implements IStorageDisk<ItemStack> {
|
public class StorageDiskItemDriveWrapper implements IStorageDisk<ItemStack> {
|
||||||
private NetworkNodeDiskDrive diskDrive;
|
private DiskDriveNetworkNode diskDrive;
|
||||||
private IStorageDisk<ItemStack> parent;
|
private IStorageDisk<ItemStack> parent;
|
||||||
private int lastState;
|
private int lastState;
|
||||||
|
|
||||||
public StorageDiskItemDriveWrapper(NetworkNodeDiskDrive diskDrive, IStorageDisk<ItemStack> parent) {
|
public StorageDiskItemDriveWrapper(DiskDriveNetworkNode diskDrive, IStorageDisk<ItemStack> parent) {
|
||||||
this.diskDrive = diskDrive;
|
this.diskDrive = diskDrive;
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
this.setSettings(
|
this.setSettings(
|
||||||
@@ -57,7 +57,7 @@ public class StorageDiskItemDriveWrapper implements IStorageDisk<ItemStack> {
|
|||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public ItemStack insert(@Nonnull ItemStack stack, int size, Action action) {
|
public ItemStack insert(@Nonnull ItemStack stack, int size, Action action) {
|
||||||
if (!IFilterable.acceptsItem(diskDrive.getItemFilters(), diskDrive.getMode(), diskDrive.getCompare(), stack)) {
|
if (!IWhitelistBlacklist.acceptsItem(diskDrive.getItemFilters(), diskDrive.getWhitelistBlacklistMode(), diskDrive.getCompare(), stack)) {
|
||||||
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -7,7 +7,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerCon
|
|||||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.NetworkNodeDiskDrive;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
|
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerProxy;
|
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerProxy;
|
||||||
@@ -15,8 +15,8 @@ import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerUpgrade;
|
|||||||
import com.raoulvdberge.refinedstorage.inventory.listener.ListenerNetworkNode;
|
import com.raoulvdberge.refinedstorage.inventory.listener.ListenerNetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator;
|
import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@@ -35,7 +35,7 @@ import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class NetworkNodeDiskManipulator extends NetworkNode implements IComparable, IFilterable, IType, IStorageDiskContainerContext {
|
public class NetworkNodeDiskManipulator extends NetworkNode implements IComparable, IWhitelistBlacklist, IType, IStorageDiskContainerContext {
|
||||||
public static final String ID = "disk_manipulator";
|
public static final String ID = "disk_manipulator";
|
||||||
|
|
||||||
public static final int IO_MODE_INSERT = 0;
|
public static final int IO_MODE_INSERT = 0;
|
||||||
@@ -48,7 +48,7 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
|
|||||||
private static final String NBT_FLUID_FILTERS = "FluidFilters";
|
private static final String NBT_FLUID_FILTERS = "FluidFilters";
|
||||||
|
|
||||||
private int compare = IComparer.COMPARE_NBT;
|
private int compare = IComparer.COMPARE_NBT;
|
||||||
private int mode = IFilterable.BLACKLIST;
|
private int mode = IWhitelistBlacklist.BLACKLIST;
|
||||||
private int type = IType.ITEMS;
|
private int type = IType.ITEMS;
|
||||||
private int ioMode = IO_MODE_INSERT;
|
private int ioMode = IO_MODE_INSERT;
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private ItemHandlerBase inputDisks = new ItemHandlerBase(3, new ListenerNetworkNode(this), NetworkNodeDiskDrive.VALIDATOR_STORAGE_DISK) {
|
private ItemHandlerBase inputDisks = new ItemHandlerBase(3, new ListenerNetworkNode(this), DiskDriveNetworkNode.VALIDATOR_STORAGE_DISK) {
|
||||||
@Override
|
@Override
|
||||||
protected void onContentsChanged(int slot) {
|
protected void onContentsChanged(int slot) {
|
||||||
super.onContentsChanged(slot);
|
super.onContentsChanged(slot);
|
||||||
@@ -89,7 +89,7 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private ItemHandlerBase outputDisks = new ItemHandlerBase(3, new ListenerNetworkNode(this), NetworkNodeDiskDrive.VALIDATOR_STORAGE_DISK) {
|
private ItemHandlerBase outputDisks = new ItemHandlerBase(3, new ListenerNetworkNode(this), DiskDriveNetworkNode.VALIDATOR_STORAGE_DISK) {
|
||||||
@Override
|
@Override
|
||||||
protected void onContentsChanged(int slot) {
|
protected void onContentsChanged(int slot) {
|
||||||
super.onContentsChanged(slot);
|
super.onContentsChanged(slot);
|
||||||
@@ -416,12 +416,12 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setMode(int mode) {
|
public void setWhitelistBlacklistMode(int mode) {
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMode() {
|
public int getWhitelistBlacklistMode() {
|
||||||
return this.mode;
|
return this.mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerCon
|
|||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||||
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
@@ -68,7 +68,7 @@ public class StorageDiskFluidManipulatorWrapper implements IStorageDisk<FluidSta
|
|||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public FluidStack insert(@Nonnull FluidStack stack, int size, Action action) {
|
public FluidStack insert(@Nonnull FluidStack stack, int size, Action action) {
|
||||||
if (!IFilterable.acceptsFluid(diskManipulator.getFluidFilters(), diskManipulator.getMode(), diskManipulator.getCompare(), stack)) {
|
if (!IWhitelistBlacklist.acceptsFluid(diskManipulator.getFluidFilters(), diskManipulator.getWhitelistBlacklistMode(), diskManipulator.getCompare(), stack)) {
|
||||||
return StackUtils.copy(stack, size);
|
return StackUtils.copy(stack, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ public class StorageDiskFluidManipulatorWrapper implements IStorageDisk<FluidSta
|
|||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public FluidStack extract(@Nonnull FluidStack stack, int size, int flags, Action action) {
|
public FluidStack extract(@Nonnull FluidStack stack, int size, int flags, Action action) {
|
||||||
if (!IFilterable.acceptsFluid(diskManipulator.getFluidFilters(), diskManipulator.getMode(), diskManipulator.getCompare(), stack)) {
|
if (!IWhitelistBlacklist.acceptsFluid(diskManipulator.getFluidFilters(), diskManipulator.getWhitelistBlacklistMode(), diskManipulator.getCompare(), stack)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerCon
|
|||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||||
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
@@ -63,7 +63,7 @@ public class StorageDiskItemManipulatorWrapper implements IStorageDisk<ItemStack
|
|||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public ItemStack insert(@Nonnull ItemStack stack, int size, Action action) {
|
public ItemStack insert(@Nonnull ItemStack stack, int size, Action action) {
|
||||||
if (!IFilterable.acceptsItem(diskManipulator.getItemFilters(), diskManipulator.getMode(), diskManipulator.getCompare(), stack)) {
|
if (!IWhitelistBlacklist.acceptsItem(diskManipulator.getItemFilters(), diskManipulator.getWhitelistBlacklistMode(), diskManipulator.getCompare(), stack)) {
|
||||||
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ public class StorageDiskItemManipulatorWrapper implements IStorageDisk<ItemStack
|
|||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public ItemStack extract(@Nonnull ItemStack stack, int size, int flags, Action action) {
|
public ItemStack extract(@Nonnull ItemStack stack, int size, int flags, Action action) {
|
||||||
if (!IFilterable.acceptsItem(diskManipulator.getItemFilters(), diskManipulator.getMode(), diskManipulator.getCompare(), stack)) {
|
if (!IWhitelistBlacklist.acceptsItem(diskManipulator.getItemFilters(), diskManipulator.getWhitelistBlacklistMode(), diskManipulator.getCompare(), stack)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -10,7 +10,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
|
|||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiStorage;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IStorageScreen;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
|
||||||
import com.raoulvdberge.refinedstorage.block.BlockFluidStorage;
|
import com.raoulvdberge.refinedstorage.block.BlockFluidStorage;
|
||||||
@@ -20,8 +20,8 @@ import com.raoulvdberge.refinedstorage.inventory.listener.ListenerNetworkNode;
|
|||||||
import com.raoulvdberge.refinedstorage.tile.TileFluidStorage;
|
import com.raoulvdberge.refinedstorage.tile.TileFluidStorage;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
|
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IPrioritizable;
|
import com.raoulvdberge.refinedstorage.tile.config.IPrioritizable;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import com.raoulvdberge.refinedstorage.util.AccessTypeUtils;
|
import com.raoulvdberge.refinedstorage.util.AccessTypeUtils;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
@@ -35,7 +35,7 @@ import net.minecraftforge.fluids.FluidStack;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage, IStorageProvider, IComparable, IFilterable, IPrioritizable, IAccessType, IStorageDiskContainerContext {
|
public class NetworkNodeFluidStorage extends NetworkNode implements IStorageScreen, IStorageProvider, IComparable, IWhitelistBlacklist, IPrioritizable, IAccessType, IStorageDiskContainerContext {
|
||||||
public static final String ID = "fluid_storage";
|
public static final String ID = "fluid_storage";
|
||||||
|
|
||||||
private static final String NBT_PRIORITY = "Priority";
|
private static final String NBT_PRIORITY = "Priority";
|
||||||
@@ -51,7 +51,7 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
|
|||||||
private AccessType accessType = AccessType.INSERT_EXTRACT;
|
private AccessType accessType = AccessType.INSERT_EXTRACT;
|
||||||
private int priority = 0;
|
private int priority = 0;
|
||||||
private int compare = IComparer.COMPARE_NBT;
|
private int compare = IComparer.COMPARE_NBT;
|
||||||
private int mode = IFilterable.BLACKLIST;
|
private int mode = IWhitelistBlacklist.BLACKLIST;
|
||||||
|
|
||||||
private UUID storageId = UUID.randomUUID();
|
private UUID storageId = UUID.randomUUID();
|
||||||
private IStorageDisk<FluidStack> storage;
|
private IStorageDisk<FluidStack> storage;
|
||||||
@@ -198,12 +198,12 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMode() {
|
public int getWhitelistBlacklistMode() {
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setMode(int mode) {
|
public void setWhitelistBlacklistMode(int mode) {
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
|
|
||||||
markDirty();
|
markDirty();
|
||||||
@@ -234,7 +234,7 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileDataParameter<Integer, ?> getFilterParameter() {
|
public TileDataParameter<Integer, ?> getWhitelistBlacklistParameter() {
|
||||||
return TileFluidStorage.MODE;
|
return TileFluidStorage.MODE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -10,7 +10,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
|
|||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiStorage;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IStorageScreen;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
|
||||||
import com.raoulvdberge.refinedstorage.block.BlockStorage;
|
import com.raoulvdberge.refinedstorage.block.BlockStorage;
|
||||||
@@ -20,8 +20,8 @@ import com.raoulvdberge.refinedstorage.inventory.listener.ListenerNetworkNode;
|
|||||||
import com.raoulvdberge.refinedstorage.tile.TileStorage;
|
import com.raoulvdberge.refinedstorage.tile.TileStorage;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
|
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IPrioritizable;
|
import com.raoulvdberge.refinedstorage.tile.config.IPrioritizable;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import com.raoulvdberge.refinedstorage.util.AccessTypeUtils;
|
import com.raoulvdberge.refinedstorage.util.AccessTypeUtils;
|
||||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
@@ -36,7 +36,7 @@ import net.minecraftforge.fluids.FluidStack;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, IStorageProvider, IComparable, IFilterable, IPrioritizable, IAccessType, IStorageDiskContainerContext {
|
public class NetworkNodeStorage extends NetworkNode implements IStorageScreen, IStorageProvider, IComparable, IWhitelistBlacklist, IPrioritizable, IAccessType, IStorageDiskContainerContext {
|
||||||
public static final String ID = "storage";
|
public static final String ID = "storage";
|
||||||
|
|
||||||
private static final String NBT_PRIORITY = "Priority";
|
private static final String NBT_PRIORITY = "Priority";
|
||||||
@@ -51,7 +51,7 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
|
|||||||
private AccessType accessType = AccessType.INSERT_EXTRACT;
|
private AccessType accessType = AccessType.INSERT_EXTRACT;
|
||||||
private int priority = 0;
|
private int priority = 0;
|
||||||
private int compare = IComparer.COMPARE_NBT;
|
private int compare = IComparer.COMPARE_NBT;
|
||||||
private int mode = IFilterable.BLACKLIST;
|
private int mode = IWhitelistBlacklist.BLACKLIST;
|
||||||
|
|
||||||
private UUID storageId = UUID.randomUUID();
|
private UUID storageId = UUID.randomUUID();
|
||||||
private IStorageDisk<ItemStack> storage;
|
private IStorageDisk<ItemStack> storage;
|
||||||
@@ -197,12 +197,12 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMode() {
|
public int getWhitelistBlacklistMode() {
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setMode(int mode) {
|
public void setWhitelistBlacklistMode(int mode) {
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
|
|
||||||
markDirty();
|
markDirty();
|
||||||
@@ -233,7 +233,7 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileDataParameter<Integer, ?> getFilterParameter() {
|
public TileDataParameter<Integer, ?> getWhitelistBlacklistParameter() {
|
||||||
return TileStorage.MODE;
|
return TileStorage.MODE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
|
|||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
@@ -43,7 +43,7 @@ public class StorageDiskFluidStorageWrapper implements IStorageDisk<FluidStack>
|
|||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public FluidStack insert(@Nonnull FluidStack stack, int size, Action action) {
|
public FluidStack insert(@Nonnull FluidStack stack, int size, Action action) {
|
||||||
if (!IFilterable.acceptsFluid(storage.getFilters(), storage.getMode(), storage.getCompare(), stack)) {
|
if (!IWhitelistBlacklist.acceptsFluid(storage.getFilters(), storage.getWhitelistBlacklistMode(), storage.getCompare(), stack)) {
|
||||||
return StackUtils.copy(stack, size);
|
return StackUtils.copy(stack, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
|
|||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
@@ -43,7 +43,7 @@ public class StorageDiskItemStorageWrapper implements IStorageDisk<ItemStack> {
|
|||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public ItemStack insert(@Nonnull ItemStack stack, int size, Action action) {
|
public ItemStack insert(@Nonnull ItemStack stack, int size, Action action) {
|
||||||
if (!IFilterable.acceptsItem(storage.getFilters(), storage.getMode(), storage.getCompare(), stack)) {
|
if (!IWhitelistBlacklist.acceptsItem(storage.getFilters(), storage.getWhitelistBlacklistMode(), storage.getCompare(), stack)) {
|
||||||
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -112,6 +112,7 @@ public class ControllerBlock extends Block {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) {
|
public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openContainer(new INamedContainerProvider() {
|
player.openContainer(new INamedContainerProvider() {
|
||||||
@@ -120,7 +121,6 @@ public class ControllerBlock extends Block {
|
|||||||
return new TranslationTextComponent("gui.refinedstorage." + (ControllerBlock.this.getType() == Type.CREATIVE ? "creative_" : "") + "controller");
|
return new TranslationTextComponent("gui.refinedstorage." + (ControllerBlock.this.getType() == Type.CREATIVE ? "creative_" : "") + "controller");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
@Override
|
||||||
public Container createMenu(int i, PlayerInventory playerInventory, PlayerEntity player) {
|
public Container createMenu(int i, PlayerInventory playerInventory, PlayerEntity player) {
|
||||||
return new ControllerContainer((ControllerTile) world.getTileEntity(pos), player, i);
|
return new ControllerContainer((ControllerTile) world.getTileEntity(pos), player, i);
|
||||||
|
@@ -2,11 +2,21 @@ package com.raoulvdberge.refinedstorage.block;
|
|||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
|
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
|
||||||
|
import com.raoulvdberge.refinedstorage.container.DiskDriveContainer;
|
||||||
|
import com.raoulvdberge.refinedstorage.container.factory.PositionalTileContainerProvider;
|
||||||
import com.raoulvdberge.refinedstorage.tile.DiskDriveTile;
|
import com.raoulvdberge.refinedstorage.tile.DiskDriveTile;
|
||||||
import com.raoulvdberge.refinedstorage.util.BlockUtils;
|
import com.raoulvdberge.refinedstorage.util.BlockUtils;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.Hand;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.BlockRayTraceResult;
|
||||||
|
import net.minecraft.util.text.TranslationTextComponent;
|
||||||
import net.minecraft.world.IBlockReader;
|
import net.minecraft.world.IBlockReader;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.fml.network.NetworkHooks;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
@@ -35,6 +45,24 @@ public class DiskDriveBlock extends NodeBlock {
|
|||||||
return new DiskDriveTile();
|
return new DiskDriveTile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) {
|
||||||
|
if (!world.isRemote) {
|
||||||
|
NetworkHooks.openGui(
|
||||||
|
(ServerPlayerEntity) player,
|
||||||
|
new PositionalTileContainerProvider<DiskDriveTile>(
|
||||||
|
new TranslationTextComponent("gui.refinedstorage.disk_drive"),
|
||||||
|
(tile, windowId, inventory, p) -> new DiskDriveContainer(tile, p, windowId),
|
||||||
|
pos
|
||||||
|
),
|
||||||
|
pos
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/* TODO
|
/* TODO
|
||||||
@Override
|
@Override
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
@@ -45,7 +45,7 @@ public enum BlockDirection {
|
|||||||
case HORIZONTAL:
|
case HORIZONTAL:
|
||||||
return previous.rotateYCCW();
|
return previous.rotateYCCW();
|
||||||
default:
|
default:
|
||||||
return previous;
|
throw new RuntimeException("Unknown direction type");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,13 +1,12 @@
|
|||||||
package com.raoulvdberge.refinedstorage.container;
|
package com.raoulvdberge.refinedstorage.container;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RSContainers;
|
|
||||||
import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot;
|
import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileStorage;
|
import com.raoulvdberge.refinedstorage.tile.TileStorage;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
|
||||||
public class StorageContainer extends BaseContainer {
|
public class StorageContainer extends BaseContainer {
|
||||||
public StorageContainer(TileStorage storage, PlayerEntity player, int windowId) {
|
public StorageContainer(TileStorage storage, PlayerEntity player, int windowId) {
|
||||||
super(RSContainers.STORAGE, storage, player, windowId);
|
super(/*RSContainers.STORAGE*/null, storage, player, windowId);
|
||||||
|
|
||||||
for (int i = 0; i < 9; ++i) {
|
for (int i = 0; i < 9; ++i) {
|
||||||
addSlot(new FilterSlot(storage.getNode().getFilters(), i, 8 + (18 * i), 20));
|
addSlot(new FilterSlot(storage.getNode().getFilters(), i, 8 + (18 * i), 20));
|
||||||
|
@@ -0,0 +1,29 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.container.factory;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
|
import net.minecraft.inventory.container.Container;
|
||||||
|
import net.minecraft.network.PacketBuffer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraftforge.fml.network.IContainerFactory;
|
||||||
|
|
||||||
|
public class PositionalTileContainerFactory<C extends Container, T extends TileEntity> implements IContainerFactory<C> {
|
||||||
|
public interface Factory<C, T> {
|
||||||
|
C create(int windowId, PlayerInventory inv, T tile);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final Factory<C, T> factory;
|
||||||
|
|
||||||
|
public PositionalTileContainerFactory(Factory<C, T> factory) {
|
||||||
|
this.factory = factory;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public C create(int windowId, PlayerInventory inv, PacketBuffer data) {
|
||||||
|
BlockPos pos = data.readBlockPos();
|
||||||
|
|
||||||
|
T tile = (T) inv.player.world.getTileEntity(pos);
|
||||||
|
|
||||||
|
return factory.create(windowId, inv, tile);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,40 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.container.factory;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
|
import net.minecraft.inventory.container.Container;
|
||||||
|
import net.minecraft.inventory.container.INamedContainerProvider;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.text.ITextComponent;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
public class PositionalTileContainerProvider<T extends TileEntity> implements INamedContainerProvider {
|
||||||
|
public interface Provider<T> {
|
||||||
|
Container create(T tile, int windowId, PlayerInventory inventory, PlayerEntity player);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final ITextComponent name;
|
||||||
|
private final Provider<T> provider;
|
||||||
|
private final BlockPos pos;
|
||||||
|
|
||||||
|
public PositionalTileContainerProvider(ITextComponent name, Provider<T> provider, BlockPos pos) {
|
||||||
|
this.name = name;
|
||||||
|
this.provider = provider;
|
||||||
|
this.pos = pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITextComponent getDisplayName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public Container createMenu(int windowId, PlayerInventory inventory, PlayerEntity player) {
|
||||||
|
T tile = (T) player.world.getTileEntity(pos);
|
||||||
|
|
||||||
|
return provider.create(tile, windowId, inventory, player);
|
||||||
|
}
|
||||||
|
}
|
@@ -17,6 +17,8 @@ public class ItemHandlerBase extends ItemStackHandler {
|
|||||||
|
|
||||||
protected Predicate<ItemStack>[] validators;
|
protected Predicate<ItemStack>[] validators;
|
||||||
|
|
||||||
|
private boolean reading;
|
||||||
|
|
||||||
public ItemHandlerBase(int size, @Nullable Consumer<Integer> listener, Predicate<ItemStack>... validators) {
|
public ItemHandlerBase(int size, @Nullable Consumer<Integer> listener, Predicate<ItemStack>... validators) {
|
||||||
super(size);
|
super(size);
|
||||||
|
|
||||||
@@ -48,7 +50,7 @@ public class ItemHandlerBase extends ItemStackHandler {
|
|||||||
protected void onContentsChanged(int slot) {
|
protected void onContentsChanged(int slot) {
|
||||||
super.onContentsChanged(slot);
|
super.onContentsChanged(slot);
|
||||||
|
|
||||||
if (listener != null) {
|
if (!reading && listener != null) {
|
||||||
listener.accept(slot);
|
listener.accept(slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,4 +67,8 @@ public class ItemHandlerBase extends ItemStackHandler {
|
|||||||
public boolean isEmpty() {
|
public boolean isEmpty() {
|
||||||
return empty;
|
return empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setReading(boolean reading) {
|
||||||
|
this.reading = reading;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.item.blockitem;
|
package com.raoulvdberge.refinedstorage.item.blockitem;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.block.BaseBlock;
|
import com.raoulvdberge.refinedstorage.block.BaseBlock;
|
||||||
|
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.item.BlockItem;
|
import net.minecraft.item.BlockItem;
|
||||||
import net.minecraft.item.BlockItemUseContext;
|
import net.minecraft.item.BlockItemUseContext;
|
||||||
@@ -18,7 +19,7 @@ public class BaseBlockItem extends BlockItem {
|
|||||||
protected boolean placeBlock(BlockItemUseContext context, BlockState state) {
|
protected boolean placeBlock(BlockItemUseContext context, BlockState state) {
|
||||||
boolean result = super.placeBlock(context, state);
|
boolean result = super.placeBlock(context, state);
|
||||||
|
|
||||||
if (result && block.getDirection() != null) {
|
if (result && block.getDirection() != BlockDirection.NONE) {
|
||||||
context.getWorld().setBlockState(context.getPos(), state.with(block.getDirection().getProperty(), block.getDirection().getFrom(
|
context.getWorld().setBlockState(context.getPos(), state.with(block.getDirection().getProperty(), block.getDirection().getFrom(
|
||||||
context.getFace(),
|
context.getFace(),
|
||||||
context.getPos(),
|
context.getPos(),
|
||||||
|
@@ -0,0 +1,33 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.screen;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.container.DiskDriveContainer;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.DiskDriveTile;
|
||||||
|
import net.minecraft.client.resources.I18n;
|
||||||
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
|
import net.minecraft.util.text.ITextComponent;
|
||||||
|
|
||||||
|
public class DiskDriveScreen extends StorageScreen<DiskDriveContainer> {
|
||||||
|
public DiskDriveScreen(DiskDriveContainer container, PlayerInventory inventory, ITextComponent title) {
|
||||||
|
super(
|
||||||
|
container,
|
||||||
|
inventory,
|
||||||
|
title,
|
||||||
|
"gui/disk_drive.png",
|
||||||
|
DiskDriveTile.TYPE,
|
||||||
|
DiskDriveTile.REDSTONE_MODE,
|
||||||
|
DiskDriveTile.COMPARE,
|
||||||
|
DiskDriveTile.WHITELIST_BLACKLIST,
|
||||||
|
DiskDriveTile.PRIORITY,
|
||||||
|
DiskDriveTile.ACCESS_TYPE,
|
||||||
|
DiskDriveTile.STORED::getValue,
|
||||||
|
DiskDriveTile.CAPACITY::getValue
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderForeground(int mouseX, int mouseY) {
|
||||||
|
renderString(79, 42, I18n.format("gui.refinedstorage.disk_drive.disks"));
|
||||||
|
|
||||||
|
super.renderForeground(mouseX, mouseY);
|
||||||
|
}
|
||||||
|
}
|
@@ -1,117 +0,0 @@
|
|||||||
package com.raoulvdberge.refinedstorage.screen;
|
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiStorage;
|
|
||||||
import com.raoulvdberge.refinedstorage.container.BaseContainer;
|
|
||||||
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*;
|
|
||||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
|
||||||
import net.minecraft.client.gui.widget.button.Button;
|
|
||||||
import net.minecraft.client.resources.I18n;
|
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
|
||||||
import net.minecraft.util.text.TextFormatting;
|
|
||||||
|
|
||||||
public class GuiStorage extends BaseScreen<BaseContainer> {
|
|
||||||
private IGuiStorage gui;
|
|
||||||
private String texture;
|
|
||||||
|
|
||||||
private Button priorityButton;
|
|
||||||
|
|
||||||
private int barX = 8;
|
|
||||||
private int barY = 54;
|
|
||||||
private int barWidth = 16;
|
|
||||||
private int barHeight = 70;
|
|
||||||
|
|
||||||
public GuiStorage(BaseContainer container, IGuiStorage gui, String texture, PlayerInventory inventory) {
|
|
||||||
super(container, 176, 223, inventory, null);
|
|
||||||
|
|
||||||
this.gui = gui;
|
|
||||||
this.texture = texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GuiStorage(BaseContainer container, IGuiStorage gui, PlayerInventory inventory) {
|
|
||||||
this(container, gui, "gui/storage.png", inventory);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void init(int x, int y) {
|
|
||||||
if (gui.getRedstoneModeParameter() != null) {
|
|
||||||
addSideButton(new SideButtonRedstoneMode(this, gui.getRedstoneModeParameter()));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gui.getTypeParameter() != null) {
|
|
||||||
addSideButton(new SideButtonType(this, gui.getTypeParameter()));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gui.getFilterParameter() != null) {
|
|
||||||
addSideButton(new SideButtonMode(this, gui.getFilterParameter()));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gui.getCompareParameter() != null) {
|
|
||||||
addSideButton(new SideButtonCompare(this, gui.getCompareParameter(), IComparer.COMPARE_NBT));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gui.getAccessTypeParameter() != null) {
|
|
||||||
addSideButton(new SideButtonAccessType(this, gui.getAccessTypeParameter()));
|
|
||||||
}
|
|
||||||
|
|
||||||
int buttonWidth = 10 + font.getStringWidth(I18n.format("misc.refinedstorage:priority"));
|
|
||||||
|
|
||||||
priorityButton = addButton(x + 169 - buttonWidth, y + 41, buttonWidth, 20, I18n.format("misc.refinedstorage:priority"), true, true, btn -> {
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void tick(int x, int y) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void renderBackground(int x, int y, int mouseX, int mouseY) {
|
|
||||||
bindTexture(RS.ID, texture);
|
|
||||||
|
|
||||||
blit(x, y, 0, 0, xSize, ySize);
|
|
||||||
|
|
||||||
int barHeightNew = (int) ((float) gui.getStored() / (float) gui.getCapacity() * (float) barHeight);
|
|
||||||
|
|
||||||
blit(x + barX, y + barY + barHeight - barHeightNew, 179, barHeight - barHeightNew, barWidth, barHeightNew);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void renderForeground(int mouseX, int mouseY) {
|
|
||||||
renderString(7, 7, I18n.format(gui.getGuiTitle()));
|
|
||||||
renderString(7, 42, gui.getCapacity() == -1 ?
|
|
||||||
I18n.format("misc.refinedstorage.storage.stored_minimal", API.instance().getQuantityFormatter().formatWithUnits(gui.getStored())) :
|
|
||||||
I18n.format("misc.refinedstorage.storage.stored_capacity_minimal", API.instance().getQuantityFormatter().formatWithUnits(gui.getStored()), API.instance().getQuantityFormatter().formatWithUnits(gui.getCapacity()))
|
|
||||||
);
|
|
||||||
|
|
||||||
if (texture.contains("disk_drive")) { // HACK!
|
|
||||||
renderString(79, 42, I18n.format("gui.refinedstorage:disk_drive.disks"));
|
|
||||||
}
|
|
||||||
|
|
||||||
renderString(7, 129, I18n.format("container.inventory"));
|
|
||||||
|
|
||||||
if (RenderUtils.inBounds(barX, barY, barWidth, barHeight, mouseX, mouseY)) {
|
|
||||||
int full = 0;
|
|
||||||
|
|
||||||
if (gui.getCapacity() >= 0) {
|
|
||||||
full = (int) ((float) gui.getStored() / (float) gui.getCapacity() * 100f);
|
|
||||||
}
|
|
||||||
|
|
||||||
renderTooltip(mouseX, mouseY, (gui.getCapacity() == -1 ?
|
|
||||||
I18n.format("misc.refinedstorage.storage.stored_minimal", API.instance().getQuantityFormatter().format(gui.getStored())) :
|
|
||||||
I18n.format("misc.refinedstorage.storage.stored_capacity_minimal", API.instance().getQuantityFormatter().format(gui.getStored()), API.instance().getQuantityFormatter().format(gui.getCapacity()))
|
|
||||||
) + "\n" + TextFormatting.GRAY + I18n.format("misc.refinedstorage.storage.full", full));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TODO
|
|
||||||
@Override
|
|
||||||
protected void actionPerformed(GuiButton button) throws IOException {
|
|
||||||
super.actionPerformed(button);
|
|
||||||
|
|
||||||
if (button == priorityButton) {
|
|
||||||
FMLCommonHandler.instance().showGuiScreen(new GuiPriority(this, gui.getPriorityParameter()));
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
|
@@ -0,0 +1,138 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.screen;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
|
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||||
|
import net.minecraft.client.gui.widget.button.Button;
|
||||||
|
import net.minecraft.client.resources.I18n;
|
||||||
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
|
import net.minecraft.inventory.container.Container;
|
||||||
|
import net.minecraft.util.text.ITextComponent;
|
||||||
|
import net.minecraft.util.text.TextFormatting;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class StorageScreen<T extends Container> extends BaseScreen<T> {
|
||||||
|
private static final int BAR_X = 8;
|
||||||
|
private static final int BAR_Y = 54;
|
||||||
|
private static final int BAR_WIDTH = 16;
|
||||||
|
private static final int BAR_HEIGHT = 70;
|
||||||
|
|
||||||
|
private String texture;
|
||||||
|
private TileDataParameter<Integer, ?> typeParameter;
|
||||||
|
private TileDataParameter<Integer, ?> redstoneModeParameter;
|
||||||
|
private TileDataParameter<Integer, ?> compareParameter;
|
||||||
|
private TileDataParameter<Integer, ?> filterParameter;
|
||||||
|
private TileDataParameter<Integer, ?> priorityParameter;
|
||||||
|
private TileDataParameter<AccessType, ?> accessTypeParameter;
|
||||||
|
private Supplier<Long> storedSupplier;
|
||||||
|
private Supplier<Long> capacitySupplier;
|
||||||
|
|
||||||
|
private Button priorityButton;
|
||||||
|
|
||||||
|
public StorageScreen(T container,
|
||||||
|
PlayerInventory inventory,
|
||||||
|
ITextComponent title,
|
||||||
|
String texture,
|
||||||
|
@Nullable TileDataParameter<Integer, ?> typeParameter,
|
||||||
|
@Nullable TileDataParameter<Integer, ?> redstoneModeParameter,
|
||||||
|
@Nullable TileDataParameter<Integer, ?> compareParameter,
|
||||||
|
@Nullable TileDataParameter<Integer, ?> filterParameter,
|
||||||
|
TileDataParameter<Integer, ?> priorityParameter,
|
||||||
|
@Nullable TileDataParameter<AccessType, ?> accessTypeParameter,
|
||||||
|
Supplier<Long> storedSupplier, Supplier<Long> capacitySupplier) {
|
||||||
|
super(container, 176, 223, inventory, title);
|
||||||
|
|
||||||
|
this.texture = texture;
|
||||||
|
this.typeParameter = typeParameter;
|
||||||
|
this.redstoneModeParameter = redstoneModeParameter;
|
||||||
|
this.compareParameter = compareParameter;
|
||||||
|
this.filterParameter = filterParameter;
|
||||||
|
this.priorityParameter = priorityParameter;
|
||||||
|
this.accessTypeParameter = accessTypeParameter;
|
||||||
|
this.storedSupplier = storedSupplier;
|
||||||
|
this.capacitySupplier = capacitySupplier;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(int x, int y) {
|
||||||
|
if (redstoneModeParameter != null) {
|
||||||
|
addSideButton(new SideButtonRedstoneMode(this, redstoneModeParameter));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeParameter != null) {
|
||||||
|
addSideButton(new SideButtonType(this, typeParameter));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filterParameter != null) {
|
||||||
|
addSideButton(new SideButtonMode(this, filterParameter));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (compareParameter != null) {
|
||||||
|
addSideButton(new SideButtonCompare(this, compareParameter, IComparer.COMPARE_NBT));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (accessTypeParameter != null) {
|
||||||
|
addSideButton(new SideButtonAccessType(this, accessTypeParameter));
|
||||||
|
}
|
||||||
|
|
||||||
|
int buttonWidth = 10 + font.getStringWidth(I18n.format("misc.refinedstorage:priority"));
|
||||||
|
|
||||||
|
priorityButton = addButton(x + 169 - buttonWidth, y + 41, buttonWidth, 20, I18n.format("misc.refinedstorage:priority"), true, true, btn -> {
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick(int x, int y) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderBackground(int x, int y, int mouseX, int mouseY) {
|
||||||
|
bindTexture(RS.ID, texture);
|
||||||
|
|
||||||
|
blit(x, y, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
|
int barHeightNew = (int) ((float) storedSupplier.get() / (float) capacitySupplier.get() * (float) BAR_HEIGHT);
|
||||||
|
|
||||||
|
blit(x + BAR_X, y + BAR_Y + BAR_HEIGHT - barHeightNew, 179, BAR_HEIGHT - barHeightNew, BAR_WIDTH, barHeightNew);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderForeground(int mouseX, int mouseY) {
|
||||||
|
renderString(7, 7, title.getFormattedText());
|
||||||
|
renderString(7, 42, capacitySupplier.get() == -1 ?
|
||||||
|
I18n.format("misc.refinedstorage.storage.stored_minimal", API.instance().getQuantityFormatter().formatWithUnits(storedSupplier.get())) :
|
||||||
|
I18n.format("misc.refinedstorage.storage.stored_capacity_minimal", API.instance().getQuantityFormatter().formatWithUnits(storedSupplier.get()), API.instance().getQuantityFormatter().formatWithUnits(capacitySupplier.get()))
|
||||||
|
);
|
||||||
|
|
||||||
|
renderString(7, 129, I18n.format("container.inventory"));
|
||||||
|
|
||||||
|
if (RenderUtils.inBounds(BAR_X, BAR_Y, BAR_WIDTH, BAR_HEIGHT, mouseX, mouseY)) {
|
||||||
|
int full = 0;
|
||||||
|
|
||||||
|
if (capacitySupplier.get() >= 0) {
|
||||||
|
full = (int) ((float) storedSupplier.get() / (float) capacitySupplier.get() * 100f);
|
||||||
|
}
|
||||||
|
|
||||||
|
renderTooltip(mouseX, mouseY, (capacitySupplier.get() == -1 ?
|
||||||
|
I18n.format("misc.refinedstorage.storage.stored_minimal", API.instance().getQuantityFormatter().format(storedSupplier.get())) :
|
||||||
|
I18n.format("misc.refinedstorage.storage.stored_capacity_minimal", API.instance().getQuantityFormatter().format(storedSupplier.get()), API.instance().getQuantityFormatter().format(capacitySupplier.get()))
|
||||||
|
) + "\n" + TextFormatting.GRAY + I18n.format("misc.refinedstorage.storage.full", full));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO
|
||||||
|
@Override
|
||||||
|
protected void actionPerformed(GuiButton button) throws IOException {
|
||||||
|
super.actionPerformed(button);
|
||||||
|
|
||||||
|
if (button == priorityButton) {
|
||||||
|
FMLCommonHandler.instance().showGuiScreen(new GuiPriority(this, gui.getPriorityParameter()));
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
}
|
@@ -1,7 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.screen.widget.sidebutton;
|
package com.raoulvdberge.refinedstorage.screen.widget.sidebutton;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
@@ -18,16 +18,16 @@ public class SideButtonMode extends SideButton {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTooltip() {
|
public String getTooltip() {
|
||||||
return I18n.format("sidebutton.refinedstorage.mode") + "\n" + TextFormatting.GRAY + I18n.format("sidebutton.refinedstorage.mode." + (parameter.getValue() == IFilterable.WHITELIST ? "whitelist" : "blacklist"));
|
return I18n.format("sidebutton.refinedstorage.mode") + "\n" + TextFormatting.GRAY + I18n.format("sidebutton.refinedstorage.mode." + (parameter.getValue() == IWhitelistBlacklist.WHITELIST ? "whitelist" : "blacklist"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void renderButtonIcon(int x, int y) {
|
protected void renderButtonIcon(int x, int y) {
|
||||||
screen.blit(x, y, parameter.getValue() == IFilterable.WHITELIST ? 0 : 16, 64, 16, 16);
|
screen.blit(x, y, parameter.getValue() == IWhitelistBlacklist.WHITELIST ? 0 : 16, 64, 16, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPress() {
|
public void onPress() {
|
||||||
TileDataManager.setParameter(parameter, parameter.getValue() == IFilterable.WHITELIST ? IFilterable.BLACKLIST : IFilterable.WHITELIST);
|
TileDataManager.setParameter(parameter, parameter.getValue() == IWhitelistBlacklist.WHITELIST ? IWhitelistBlacklist.BLACKLIST : IWhitelistBlacklist.WHITELIST);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,20 +1,20 @@
|
|||||||
package com.raoulvdberge.refinedstorage.tile;
|
package com.raoulvdberge.refinedstorage.tile;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RSTiles;
|
import com.raoulvdberge.refinedstorage.RSTiles;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCable;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.CableNetworkNode;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
public class CableTile extends NetworkNodeTile<NetworkNodeCable> {
|
public class CableTile extends NetworkNodeTile<CableNetworkNode> {
|
||||||
public CableTile() {
|
public CableTile() {
|
||||||
super(RSTiles.CABLE);
|
super(RSTiles.CABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public NetworkNodeCable createNode(World world, BlockPos pos) {
|
public CableNetworkNode createNode(World world, BlockPos pos) {
|
||||||
return new NetworkNodeCable(world, pos);
|
return new CableNetworkNode(world, pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.tile;
|
|||||||
import com.raoulvdberge.refinedstorage.RSTiles;
|
import com.raoulvdberge.refinedstorage.RSTiles;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.NetworkNodeDiskDrive;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.*;
|
import com.raoulvdberge.refinedstorage.tile.config.*;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
||||||
@@ -14,10 +14,10 @@ import net.minecraft.world.World;
|
|||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
public class DiskDriveTile extends NetworkNodeTile<NetworkNodeDiskDrive> {
|
public class DiskDriveTile extends NetworkNodeTile<DiskDriveNetworkNode> {
|
||||||
public static final TileDataParameter<Integer, DiskDriveTile> PRIORITY = IPrioritizable.createParameter();
|
public static final TileDataParameter<Integer, DiskDriveTile> PRIORITY = IPrioritizable.createParameter();
|
||||||
public static final TileDataParameter<Integer, DiskDriveTile> COMPARE = IComparable.createParameter();
|
public static final TileDataParameter<Integer, DiskDriveTile> COMPARE = IComparable.createParameter();
|
||||||
public static final TileDataParameter<Integer, DiskDriveTile> MODE = IFilterable.createParameter();
|
public static final TileDataParameter<Integer, DiskDriveTile> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter();
|
||||||
public static final TileDataParameter<Integer, DiskDriveTile> TYPE = IType.createParameter();
|
public static final TileDataParameter<Integer, DiskDriveTile> TYPE = IType.createParameter();
|
||||||
public static final TileDataParameter<AccessType, DiskDriveTile> ACCESS_TYPE = IAccessType.createParameter();
|
public static final TileDataParameter<AccessType, DiskDriveTile> ACCESS_TYPE = IAccessType.createParameter();
|
||||||
public static final TileDataParameter<Long, DiskDriveTile> STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> {
|
public static final TileDataParameter<Long, DiskDriveTile> STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> {
|
||||||
@@ -72,7 +72,7 @@ public class DiskDriveTile extends NetworkNodeTile<NetworkNodeDiskDrive> {
|
|||||||
|
|
||||||
dataManager.addWatchedParameter(PRIORITY);
|
dataManager.addWatchedParameter(PRIORITY);
|
||||||
dataManager.addWatchedParameter(COMPARE);
|
dataManager.addWatchedParameter(COMPARE);
|
||||||
dataManager.addWatchedParameter(MODE);
|
dataManager.addWatchedParameter(WHITELIST_BLACKLIST);
|
||||||
dataManager.addWatchedParameter(TYPE);
|
dataManager.addWatchedParameter(TYPE);
|
||||||
dataManager.addWatchedParameter(ACCESS_TYPE);
|
dataManager.addWatchedParameter(ACCESS_TYPE);
|
||||||
dataManager.addWatchedParameter(STORED);
|
dataManager.addWatchedParameter(STORED);
|
||||||
@@ -149,7 +149,7 @@ public class DiskDriveTile extends NetworkNodeTile<NetworkNodeDiskDrive> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public NetworkNodeDiskDrive createNode(World world, BlockPos pos) {
|
public DiskDriveNetworkNode createNode(World world, BlockPos pos) {
|
||||||
return new NetworkNodeDiskDrive(world, pos);
|
return new DiskDriveNetworkNode(world, pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -3,8 +3,8 @@ package com.raoulvdberge.refinedstorage.tile;
|
|||||||
import com.raoulvdberge.refinedstorage.RSTiles;
|
import com.raoulvdberge.refinedstorage.RSTiles;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeDestructor;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeDestructor;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import net.minecraft.network.datasync.DataSerializers;
|
import net.minecraft.network.datasync.DataSerializers;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@@ -14,7 +14,7 @@ import javax.annotation.Nonnull;
|
|||||||
|
|
||||||
public class TileDestructor extends NetworkNodeTile<NetworkNodeDestructor> {
|
public class TileDestructor extends NetworkNodeTile<NetworkNodeDestructor> {
|
||||||
public static final TileDataParameter<Integer, TileDestructor> COMPARE = IComparable.createParameter();
|
public static final TileDataParameter<Integer, TileDestructor> COMPARE = IComparable.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileDestructor> MODE = IFilterable.createParameter();
|
public static final TileDataParameter<Integer, TileDestructor> MODE = IWhitelistBlacklist.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileDestructor> TYPE = IType.createParameter();
|
public static final TileDataParameter<Integer, TileDestructor> TYPE = IType.createParameter();
|
||||||
public static final TileDataParameter<Boolean, TileDestructor> PICKUP = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isPickupItem(), (t, v) -> {
|
public static final TileDataParameter<Boolean, TileDestructor> PICKUP = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isPickupItem(), (t, v) -> {
|
||||||
t.getNode().setPickupItem(v);
|
t.getNode().setPickupItem(v);
|
||||||
|
@@ -3,8 +3,8 @@ package com.raoulvdberge.refinedstorage.tile;
|
|||||||
import com.raoulvdberge.refinedstorage.RSTiles;
|
import com.raoulvdberge.refinedstorage.RSTiles;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskmanipulator.NetworkNodeDiskManipulator;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskmanipulator.NetworkNodeDiskManipulator;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.network.datasync.DataSerializers;
|
import net.minecraft.network.datasync.DataSerializers;
|
||||||
@@ -15,7 +15,7 @@ import javax.annotation.Nonnull;
|
|||||||
|
|
||||||
public class TileDiskManipulator extends NetworkNodeTile<NetworkNodeDiskManipulator> {
|
public class TileDiskManipulator extends NetworkNodeTile<NetworkNodeDiskManipulator> {
|
||||||
public static final TileDataParameter<Integer, TileDiskManipulator> COMPARE = IComparable.createParameter();
|
public static final TileDataParameter<Integer, TileDiskManipulator> COMPARE = IComparable.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileDiskManipulator> MODE = IFilterable.createParameter();
|
public static final TileDataParameter<Integer, TileDiskManipulator> MODE = IWhitelistBlacklist.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileDiskManipulator> TYPE = IType.createParameter();
|
public static final TileDataParameter<Integer, TileDiskManipulator> TYPE = IType.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileDiskManipulator> IO_MODE = new TileDataParameter<>(DataSerializers.VARINT, NetworkNodeDiskManipulator.IO_MODE_INSERT, t -> t.getNode().getIoMode(), (t, v) -> {
|
public static final TileDataParameter<Integer, TileDiskManipulator> IO_MODE = new TileDataParameter<>(DataSerializers.VARINT, NetworkNodeDiskManipulator.IO_MODE_INSERT, t -> t.getNode().getIoMode(), (t, v) -> {
|
||||||
t.getNode().setIoMode(v);
|
t.getNode().setIoMode(v);
|
||||||
|
@@ -17,7 +17,7 @@ import javax.annotation.Nonnull;
|
|||||||
public class TileExternalStorage extends NetworkNodeTile<NetworkNodeExternalStorage> {
|
public class TileExternalStorage extends NetworkNodeTile<NetworkNodeExternalStorage> {
|
||||||
public static final TileDataParameter<Integer, TileExternalStorage> PRIORITY = IPrioritizable.createParameter();
|
public static final TileDataParameter<Integer, TileExternalStorage> PRIORITY = IPrioritizable.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileExternalStorage> COMPARE = IComparable.createParameter();
|
public static final TileDataParameter<Integer, TileExternalStorage> COMPARE = IComparable.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileExternalStorage> MODE = IFilterable.createParameter();
|
public static final TileDataParameter<Integer, TileExternalStorage> MODE = IWhitelistBlacklist.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileExternalStorage> TYPE = IType.createParameter();
|
public static final TileDataParameter<Integer, TileExternalStorage> TYPE = IType.createParameter();
|
||||||
public static final TileDataParameter<AccessType, TileExternalStorage> ACCESS_TYPE = IAccessType.createParameter();
|
public static final TileDataParameter<AccessType, TileExternalStorage> ACCESS_TYPE = IAccessType.createParameter();
|
||||||
public static final TileDataParameter<Long, TileExternalStorage> STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> {
|
public static final TileDataParameter<Long, TileExternalStorage> STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> {
|
||||||
|
@@ -5,8 +5,8 @@ import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeFluidStorage;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeFluidStorage;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
|
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IPrioritizable;
|
import com.raoulvdberge.refinedstorage.tile.config.IPrioritizable;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@@ -17,7 +17,7 @@ import javax.annotation.Nonnull;
|
|||||||
public class TileFluidStorage extends NetworkNodeTile<NetworkNodeFluidStorage> {
|
public class TileFluidStorage extends NetworkNodeTile<NetworkNodeFluidStorage> {
|
||||||
public static final TileDataParameter<Integer, TileFluidStorage> PRIORITY = IPrioritizable.createParameter();
|
public static final TileDataParameter<Integer, TileFluidStorage> PRIORITY = IPrioritizable.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileFluidStorage> COMPARE = IComparable.createParameter();
|
public static final TileDataParameter<Integer, TileFluidStorage> COMPARE = IComparable.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileFluidStorage> MODE = IFilterable.createParameter();
|
public static final TileDataParameter<Integer, TileFluidStorage> MODE = IWhitelistBlacklist.createParameter();
|
||||||
public static final TileDataParameter<AccessType, TileFluidStorage> ACCESS_TYPE = IAccessType.createParameter();
|
public static final TileDataParameter<AccessType, TileFluidStorage> ACCESS_TYPE = IAccessType.createParameter();
|
||||||
public static final TileDataParameter<Long, TileFluidStorage> STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0);
|
public static final TileDataParameter<Long, TileFluidStorage> STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0);
|
||||||
|
|
||||||
|
@@ -3,8 +3,8 @@ package com.raoulvdberge.refinedstorage.tile;
|
|||||||
import com.raoulvdberge.refinedstorage.RSTiles;
|
import com.raoulvdberge.refinedstorage.RSTiles;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeImporter;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeImporter;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@@ -13,7 +13,7 @@ import javax.annotation.Nonnull;
|
|||||||
|
|
||||||
public class TileImporter extends NetworkNodeTile<NetworkNodeImporter> {
|
public class TileImporter extends NetworkNodeTile<NetworkNodeImporter> {
|
||||||
public static final TileDataParameter<Integer, TileImporter> COMPARE = IComparable.createParameter();
|
public static final TileDataParameter<Integer, TileImporter> COMPARE = IComparable.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileImporter> MODE = IFilterable.createParameter();
|
public static final TileDataParameter<Integer, TileImporter> MODE = IWhitelistBlacklist.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileImporter> TYPE = IType.createParameter();
|
public static final TileDataParameter<Integer, TileImporter> TYPE = IType.createParameter();
|
||||||
|
|
||||||
public TileImporter() {
|
public TileImporter() {
|
||||||
|
@@ -5,8 +5,8 @@ import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
|
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IPrioritizable;
|
import com.raoulvdberge.refinedstorage.tile.config.IPrioritizable;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@@ -17,7 +17,7 @@ import javax.annotation.Nonnull;
|
|||||||
public class TileStorage extends NetworkNodeTile<NetworkNodeStorage> {
|
public class TileStorage extends NetworkNodeTile<NetworkNodeStorage> {
|
||||||
public static final TileDataParameter<Integer, TileStorage> PRIORITY = IPrioritizable.createParameter();
|
public static final TileDataParameter<Integer, TileStorage> PRIORITY = IPrioritizable.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileStorage> COMPARE = IComparable.createParameter();
|
public static final TileDataParameter<Integer, TileStorage> COMPARE = IComparable.createParameter();
|
||||||
public static final TileDataParameter<Integer, TileStorage> MODE = IFilterable.createParameter();
|
public static final TileDataParameter<Integer, TileStorage> MODE = IWhitelistBlacklist.createParameter();
|
||||||
public static final TileDataParameter<AccessType, TileStorage> ACCESS_TYPE = IAccessType.createParameter();
|
public static final TileDataParameter<AccessType, TileStorage> ACCESS_TYPE = IAccessType.createParameter();
|
||||||
public static final TileDataParameter<Long, TileStorage> STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0);
|
public static final TileDataParameter<Long, TileStorage> STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0);
|
||||||
|
|
||||||
|
@@ -10,14 +10,14 @@ import net.minecraft.tileentity.TileEntity;
|
|||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
|
||||||
public interface IFilterable {
|
public interface IWhitelistBlacklist {
|
||||||
int WHITELIST = 0;
|
int WHITELIST = 0;
|
||||||
int BLACKLIST = 1;
|
int BLACKLIST = 1;
|
||||||
|
|
||||||
static <T extends TileEntity & INetworkNodeProxy> TileDataParameter<Integer, T> createParameter() {
|
static <T extends TileEntity & INetworkNodeProxy> TileDataParameter<Integer, T> createParameter() {
|
||||||
return new TileDataParameter<>(DataSerializers.VARINT, 0, t -> ((IFilterable) t.getNode()).getMode(), (t, v) -> {
|
return new TileDataParameter<>(DataSerializers.VARINT, 0, t -> ((IWhitelistBlacklist) t.getNode()).getWhitelistBlacklistMode(), (t, v) -> {
|
||||||
if (v == WHITELIST || v == BLACKLIST) {
|
if (v == WHITELIST || v == BLACKLIST) {
|
||||||
((IFilterable) t.getNode()).setMode(v);
|
((IWhitelistBlacklist) t.getNode()).setWhitelistBlacklistMode(v);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -74,7 +74,7 @@ public interface IFilterable {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setMode(int mode);
|
void setWhitelistBlacklistMode(int mode);
|
||||||
|
|
||||||
int getMode();
|
int getWhitelistBlacklistMode();
|
||||||
}
|
}
|
@@ -18,7 +18,7 @@ import com.raoulvdberge.refinedstorage.api.util.IFilter;
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.FluidGridHandlerPortable;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.FluidGridHandlerPortable;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.ItemGridHandlerPortable;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.ItemGridHandlerPortable;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.NetworkNodeDiskDrive;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.*;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.*;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFluidPortable;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFluidPortable;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskItemPortable;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskItemPortable;
|
||||||
@@ -84,7 +84,7 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
|
|||||||
StackUtils.writeItems(this, 0, stack.getTag());
|
StackUtils.writeItems(this, 0, stack.getTag());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
private ItemHandlerBase disk = new ItemHandlerBase(1, NetworkNodeDiskDrive.VALIDATOR_STORAGE_DISK) {
|
private ItemHandlerBase disk = new ItemHandlerBase(1, DiskDriveNetworkNode.VALIDATOR_STORAGE_DISK) {
|
||||||
@Override
|
@Override
|
||||||
protected void onContentsChanged(int slot) {
|
protected void onContentsChanged(int slot) {
|
||||||
super.onContentsChanged(slot);
|
super.onContentsChanged(slot);
|
||||||
|
@@ -18,7 +18,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.API;
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.FluidGridHandlerPortable;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.FluidGridHandlerPortable;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.ItemGridHandlerPortable;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.ItemGridHandlerPortable;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.NetworkNodeDiskDrive;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.*;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.*;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFluidPortable;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFluidPortable;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskItemPortable;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskItemPortable;
|
||||||
@@ -129,7 +129,7 @@ public class TilePortableGrid extends BaseTile implements IGrid, IPortableGrid,
|
|||||||
private List<IFilter> filters = new ArrayList<>();
|
private List<IFilter> filters = new ArrayList<>();
|
||||||
private List<IGridTab> tabs = new ArrayList<>();
|
private List<IGridTab> tabs = new ArrayList<>();
|
||||||
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, tabs, new ListenerTile(this));
|
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, tabs, new ListenerTile(this));
|
||||||
private ItemHandlerBase disk = new ItemHandlerBase(1, new ListenerTile(this), NetworkNodeDiskDrive.VALIDATOR_STORAGE_DISK) {
|
private ItemHandlerBase disk = new ItemHandlerBase(1, new ListenerTile(this), DiskDriveNetworkNode.VALIDATOR_STORAGE_DISK) {
|
||||||
@Override
|
@Override
|
||||||
protected void onContentsChanged(int slot) {
|
protected void onContentsChanged(int slot) {
|
||||||
super.onContentsChanged(slot);
|
super.onContentsChanged(slot);
|
||||||
|
@@ -6,6 +6,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
|
|||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerEntry;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerEntry;
|
||||||
|
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackFluid;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackFluid;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
@@ -224,6 +225,14 @@ public final class StackUtils {
|
|||||||
readItems(handler, id, tag, ItemStack::read);
|
readItems(handler, id, tag, ItemStack::read);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void readItems(ItemHandlerBase handler, int id, CompoundNBT tag) {
|
||||||
|
handler.setReading(true);
|
||||||
|
|
||||||
|
readItems(handler, id, tag, ItemStack::read);
|
||||||
|
|
||||||
|
handler.setReading(false);
|
||||||
|
}
|
||||||
|
|
||||||
public static void writeItems(IInventory inventory, int id, CompoundNBT tag) {
|
public static void writeItems(IInventory inventory, int id, CompoundNBT tag) {
|
||||||
ListNBT tagList = new ListNBT();
|
ListNBT tagList = new ListNBT();
|
||||||
|
|
||||||
|
@@ -17,8 +17,8 @@
|
|||||||
"gui.refinedstorage:fluid_grid": "Fluid Grid",
|
"gui.refinedstorage:fluid_grid": "Fluid Grid",
|
||||||
"gui.refinedstorage:item_amount": "Item amount",
|
"gui.refinedstorage:item_amount": "Item amount",
|
||||||
"gui.refinedstorage:fluid_amount": "Fluid amount in mB",
|
"gui.refinedstorage:fluid_amount": "Fluid amount in mB",
|
||||||
"gui.refinedstorage:disk_drive": "Drive",
|
"gui.refinedstorage.disk_drive": "Disk Drive",
|
||||||
"gui.refinedstorage:disk_drive.disks": "Disks",
|
"gui.refinedstorage.disk_drive.disks": "Disks",
|
||||||
"gui.refinedstorage:external_storage": "External Storage",
|
"gui.refinedstorage:external_storage": "External Storage",
|
||||||
"gui.refinedstorage:importer": "Importer",
|
"gui.refinedstorage:importer": "Importer",
|
||||||
"gui.refinedstorage:exporter": "Exporter",
|
"gui.refinedstorage:exporter": "Exporter",
|
||||||
|
Reference in New Issue
Block a user