Disk drive GUI + container

This commit is contained in:
raoulvdberge
2019-10-03 13:12:14 +02:00
parent d241ad7769
commit ead03378d7
47 changed files with 436 additions and 267 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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")

View File

@@ -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 {
}

View File

@@ -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);
} }
} }

View File

@@ -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);
} }

View File

@@ -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();

View File

@@ -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();

View File

@@ -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();

View File

@@ -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

View File

@@ -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();

View File

@@ -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;
} }
} }

View File

@@ -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

View File

@@ -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);
} }

View File

@@ -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);
} }

View File

@@ -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;
} }

View File

@@ -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;
} }

View File

@@ -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;
} }

View File

@@ -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;
} }

View File

@@ -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;
} }

View File

@@ -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);
} }

View File

@@ -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);
} }

View File

@@ -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);

View File

@@ -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)

View File

@@ -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");
} }
} }
} }

View File

@@ -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));

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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;
}
} }

View File

@@ -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(),

View File

@@ -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);
}
}

View File

@@ -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()));
}
}*/
}

View File

@@ -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()));
}
}*/
}

View File

@@ -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);
} }
} }

View File

@@ -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);
} }
} }

View File

@@ -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);
} }
} }

View File

@@ -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);

View File

@@ -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);

View File

@@ -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 -> {

View File

@@ -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);

View File

@@ -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() {

View File

@@ -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);

View File

@@ -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();
} }

View File

@@ -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);

View File

@@ -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);

View File

@@ -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();

View File

@@ -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",