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;
import com.raoulvdberge.refinedstorage.container.ControllerContainer;
import com.raoulvdberge.refinedstorage.render.BakedModelOverrideRegistry;
import com.raoulvdberge.refinedstorage.render.model.baked.DiskDriveBakedModel;
import com.raoulvdberge.refinedstorage.render.model.baked.FullbrightBakedModel;
import com.raoulvdberge.refinedstorage.screen.ControllerScreen;
import com.raoulvdberge.refinedstorage.screen.DiskDriveScreen;
import com.raoulvdberge.refinedstorage.screen.FilterScreen;
import net.minecraft.client.gui.ScreenManager;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.client.event.ModelBakeEvent;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.eventbus.api.SubscribeEvent;
@@ -54,12 +52,8 @@ public class ClientSetup {
@SubscribeEvent
public void onClientSetup(FMLClientSetupEvent e) {
ScreenManager.registerFactory(RSContainers.FILTER, FilterScreen::new);
ScreenManager.registerFactory(RSContainers.CONTROLLER, new ScreenManager.IScreenFactory<ControllerContainer, ControllerScreen>() {
@Override
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_);
}
});
ScreenManager.registerFactory(RSContainers.CONTROLLER, ControllerScreen::new);
ScreenManager.registerFactory(RSContainers.DISK_DRIVE, DiskDriveScreen::new);
}
@SubscribeEvent

View File

@@ -2,6 +2,8 @@ package com.raoulvdberge.refinedstorage;
import com.raoulvdberge.refinedstorage.apiimpl.API;
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.ItemStorageType;
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.config.ServerConfig;
import com.raoulvdberge.refinedstorage.container.ControllerContainer;
import com.raoulvdberge.refinedstorage.container.DiskDriveContainer;
import com.raoulvdberge.refinedstorage.container.FilterContainer;
import com.raoulvdberge.refinedstorage.container.factory.PositionalTileContainerFactory;
import com.raoulvdberge.refinedstorage.item.*;
import com.raoulvdberge.refinedstorage.item.blockitem.ControllerBlockItem;
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(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
@@ -120,6 +132,7 @@ public final class RS {
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 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

View File

@@ -21,8 +21,7 @@ public final class RSContainers {
public static final ContainerType<DestructorContainer> DESTRUCTOR = null;
//@ObjectHolder(RS.ID + ":detector")
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")
public static final ContainerType<DiskManipulatorContainer> DISK_MANIPULATOR = null;
//@ObjectHolder(RS.ID + ":exporter")
@@ -51,8 +50,10 @@ public final class RSContainers {
public static final ContainerType<RelayContainer> RELAY = null;
//@ObjectHolder(RS.ID + ":security_manager")
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")
public static final ContainerType<StorageMonitorContainer> STORAGE_MONITOR = null;
//@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.storage.WorldSavedData;
import net.minecraftforge.common.util.Constants;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import javax.annotation.Nullable;
import java.util.Collection;
@@ -25,6 +27,8 @@ public class NetworkNodeManager extends WorldSavedData implements INetworkNodeMa
private final World world;
private Logger logger = LogManager.getLogger(getClass());
private ConcurrentHashMap<BlockPos, INetworkNode> nodes = new ConcurrentHashMap<>();
public NetworkNodeManager(String name, World world) {
@@ -55,12 +59,14 @@ public class NetworkNodeManager extends WorldSavedData implements INetworkNodeMa
try {
node = factory.create(data, world, pos);
} catch (Throwable t) {
t.printStackTrace();
logger.error("Could not read network node", t);
}
if (node != null) {
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);
} catch (Throwable t) {
t.printStackTrace();
logger.error("Error while saving", t);
}
}

View File

@@ -1,6 +1,5 @@
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 net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.Direction;
@@ -11,14 +10,14 @@ import net.minecraftforge.items.IItemHandler;
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";
private static final String NBT_COVERS = "Covers";
private CoverManager coverManager = new CoverManager(this);
public NetworkNodeCable(World world, BlockPos pos) {
public CableNetworkNode(World world, BlockPos 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.tile.data.TileDataParameter;
public interface IGuiStorage {
public interface IStorageScreen {
String getGuiTitle();
TileDataParameter<Integer, ?> getTypeParameter();
@@ -12,7 +12,7 @@ public interface IGuiStorage {
TileDataParameter<Integer, ?> getCompareParameter();
TileDataParameter<Integer, ?> getFilterParameter();
TileDataParameter<Integer, ?> getWhitelistBlacklistParameter();
TileDataParameter<Integer, ?> getPriorityParameter();

View File

@@ -165,7 +165,7 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
.forEach(task -> network.getCraftingManager().cancel(task.getId()));
}
@Override
// @TODO @Override
protected void onDirectionChanged() {
if (network != null) {
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.tile.TileDestructor;
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.IWhitelistBlacklist;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
@@ -44,7 +44,7 @@ import java.util.ArrayList;
import java.util.List;
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";
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 int compare = IComparer.COMPARE_NBT;
private int mode = IFilterable.BLACKLIST;
private int mode = IWhitelistBlacklist.BLACKLIST;
private int type = IType.ITEMS;
private boolean pickupItem = false;
@@ -112,7 +112,7 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
if (entity instanceof ItemEntity) {
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());
// TODO world.removeEntity(entity);
@@ -135,7 +135,7 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
);
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();
/* TODO if (frontBlock instanceof ShulkerBoxTileEntity) {
@@ -192,7 +192,7 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
if (handler != null) {
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);
network.insertFluidTracked(drained, drained.amount);
@@ -215,12 +215,12 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
}
@Override
public int getMode() {
public int getWhitelistBlacklistMode() {
return mode;
}
@Override
public void setMode(int mode) {
public void setWhitelistBlacklistMode(int mode) {
this.mode = mode;
markDirty();

View File

@@ -37,7 +37,7 @@ import javax.annotation.Nullable;
import java.util.List;
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";
private static final String NBT_PRIORITY = "Priority";
@@ -52,7 +52,7 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
private int priority = 0;
private int compare = IComparer.COMPARE_NBT;
private int mode = IFilterable.BLACKLIST;
private int mode = IWhitelistBlacklist.BLACKLIST;
private int type = IType.ITEMS;
private AccessType accessType = AccessType.INSERT_EXTRACT;
private int networkTicks;
@@ -99,9 +99,9 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
}
}
@Override
// @TODO @Override
protected void onDirectionChanged() {
super.onDirectionChanged();
// super.onDirectionChanged();
if (network != null) {
updateStorage(network);
@@ -191,12 +191,12 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
}
@Override
public int getMode() {
public int getWhitelistBlacklistMode() {
return mode;
}
@Override
public void setMode(int mode) {
public void setWhitelistBlacklistMode(int mode) {
this.mode = mode;
markDirty();
@@ -275,7 +275,7 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
}
@Override
public TileDataParameter<Integer, ?> getFilterParameter() {
public TileDataParameter<Integer, ?> getWhitelistBlacklistParameter() {
return TileExternalStorage.MODE;
}
@@ -306,12 +306,12 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
@Override
public boolean acceptsItem(ItemStack stack) {
return IFilterable.acceptsItem(itemFilters, mode, compare, stack);
return IWhitelistBlacklist.acceptsItem(itemFilters, mode, compare, stack);
}
@Override
public boolean acceptsFluid(FluidStack stack) {
return IFilterable.acceptsFluid(fluidFilters, mode, compare, stack);
return IWhitelistBlacklist.acceptsFluid(fluidFilters, mode, compare, stack);
}
@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.TileImporter;
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.IWhitelistBlacklist;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.item.ItemStack;
@@ -31,7 +31,7 @@ import net.minecraftforge.items.wrapper.CombinedInvWrapper;
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";
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 int compare = IComparer.COMPARE_NBT;
private int mode = IFilterable.BLACKLIST;
private int mode = IWhitelistBlacklist.BLACKLIST;
private int type = IType.ITEMS;
private CoverManager coverManager = new CoverManager(this);
@@ -89,7 +89,7 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
ItemStack stack = handler.getStackInSlot(currentSlot);
if (!IFilterable.acceptsItem(itemFilters, mode, compare, stack)) {
if (!IWhitelistBlacklist.acceptsItem(itemFilters, mode, compare, stack)) {
currentSlot++;
} else if (ticks % upgrades.getSpeed() == 0) {
ItemStack result = handler.extractItem(currentSlot, upgrades.getItemInteractCount(), true);
@@ -111,7 +111,7 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
if (handler != null) {
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?
if (toDrain != null) {
@@ -141,12 +141,12 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
}
@Override
public int getMode() {
public int getWhitelistBlacklistMode() {
return mode;
}
@Override
public void setMode(int mode) {
public void setWhitelistBlacklistMode(int mode) {
this.mode = mode;
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.util.Action;
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.NetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCable;
import net.minecraft.block.*;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
@@ -61,7 +61,7 @@ public class CoverManager {
public boolean setCover(Direction facing, @Nullable Cover cover) {
if (cover == null || (isValidCover(cover.getStack()) && !hasCover(facing))) {
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;
}
}

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.IStorageDiskProvider;
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.storage.StorageCacheFluid;
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.server.ServerWorld;
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.IItemHandlerModifiable;
import java.util.List;
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 String ID = "disk_drive";
@@ -56,15 +54,15 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
protected void onContentsChanged(int slot) {
super.onContentsChanged(slot);
if (EffectiveSide.get() == LogicalSide.SERVER) { // TODO : correct?
if (!world.isRemote) {
StackUtils.createStorages(
(ServerWorld) world,
getStackInSlot(slot),
slot,
itemDisks,
fluidDisks,
s -> new StorageDiskItemDriveWrapper(NetworkNodeDiskDrive.this, s),
s -> new StorageDiskFluidDriveWrapper(NetworkNodeDiskDrive.this, s)
s -> new StorageDiskItemDriveWrapper(DiskDriveNetworkNode.this, s),
s -> new StorageDiskFluidDriveWrapper(DiskDriveNetworkNode.this, s)
);
if (network != null) {
@@ -86,10 +84,10 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
private AccessType accessType = AccessType.INSERT_EXTRACT;
private int priority = 0;
private int compare = IComparer.COMPARE_NBT;
private int mode = IFilterable.BLACKLIST;
private int mode = IWhitelistBlacklist.BLACKLIST;
private int type = IType.ITEMS;
public NetworkNodeDiskDrive(World world, BlockPos pos) {
public DiskDriveNetworkNode(World world, BlockPos pos) {
super(world, pos);
}
@@ -251,12 +249,12 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
}
@Override
public int getMode() {
public int getWhitelistBlacklistMode() {
return mode;
}
@Override
public void setMode(int mode) {
public void setWhitelistBlacklistMode(int mode) {
this.mode = mode;
markDirty();
@@ -283,8 +281,8 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
}
@Override
public TileDataParameter<Integer, ?> getFilterParameter() {
return DiskDriveTile.MODE;
public TileDataParameter<Integer, ?> getWhitelistBlacklistParameter() {
return DiskDriveTile.WHITELIST_BLACKLIST;
}
@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.util.Action;
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 net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.ResourceLocation;
@@ -17,11 +17,11 @@ import javax.annotation.Nullable;
import java.util.Collection;
public class StorageDiskFluidDriveWrapper implements IStorageDisk<FluidStack> {
private NetworkNodeDiskDrive diskDrive;
private DiskDriveNetworkNode diskDrive;
private IStorageDisk<FluidStack> parent;
private int lastState;
public StorageDiskFluidDriveWrapper(NetworkNodeDiskDrive diskDrive, IStorageDisk<FluidStack> parent) {
public StorageDiskFluidDriveWrapper(DiskDriveNetworkNode diskDrive, IStorageDisk<FluidStack> parent) {
this.diskDrive = diskDrive;
this.parent = parent;
this.setSettings(
@@ -57,7 +57,7 @@ public class StorageDiskFluidDriveWrapper implements IStorageDisk<FluidStack> {
@Override
@Nullable
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);
}

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.util.Action;
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.nbt.CompoundNBT;
import net.minecraft.util.ResourceLocation;
@@ -17,11 +17,11 @@ import javax.annotation.Nullable;
import java.util.Collection;
public class StorageDiskItemDriveWrapper implements IStorageDisk<ItemStack> {
private NetworkNodeDiskDrive diskDrive;
private DiskDriveNetworkNode diskDrive;
private IStorageDisk<ItemStack> parent;
private int lastState;
public StorageDiskItemDriveWrapper(NetworkNodeDiskDrive diskDrive, IStorageDisk<ItemStack> parent) {
public StorageDiskItemDriveWrapper(DiskDriveNetworkNode diskDrive, IStorageDisk<ItemStack> parent) {
this.diskDrive = diskDrive;
this.parent = parent;
this.setSettings(
@@ -57,7 +57,7 @@ public class StorageDiskItemDriveWrapper implements IStorageDisk<ItemStack> {
@Override
@Nullable
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);
}

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.IComparer;
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.item.ItemHandlerBase;
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.tile.TileDiskManipulator;
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.IWhitelistBlacklist;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.item.ItemStack;
@@ -35,7 +35,7 @@ import net.minecraftforge.items.wrapper.CombinedInvWrapper;
import java.util.ArrayList;
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 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 int compare = IComparer.COMPARE_NBT;
private int mode = IFilterable.BLACKLIST;
private int mode = IWhitelistBlacklist.BLACKLIST;
private int type = IType.ITEMS;
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
protected void onContentsChanged(int 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
protected void onContentsChanged(int slot) {
super.onContentsChanged(slot);
@@ -416,12 +416,12 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
}
@Override
public void setMode(int mode) {
public void setWhitelistBlacklistMode(int mode) {
this.mode = mode;
}
@Override
public int getMode() {
public int getWhitelistBlacklistMode() {
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.util.Action;
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.WorldUtils;
import net.minecraft.nbt.CompoundNBT;
@@ -68,7 +68,7 @@ public class StorageDiskFluidManipulatorWrapper implements IStorageDisk<FluidSta
@Override
@Nullable
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);
}
@@ -78,7 +78,7 @@ public class StorageDiskFluidManipulatorWrapper implements IStorageDisk<FluidSta
@Override
@Nullable
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;
}

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.util.Action;
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 net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
@@ -63,7 +63,7 @@ public class StorageDiskItemManipulatorWrapper implements IStorageDisk<ItemStack
@Override
@Nullable
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);
}
@@ -73,7 +73,7 @@ public class StorageDiskItemManipulatorWrapper implements IStorageDisk<ItemStack
@Override
@Nullable
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;
}

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.util.IComparer;
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.storage.StorageCacheFluid;
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.config.IAccessType;
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.IWhitelistBlacklist;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import com.raoulvdberge.refinedstorage.util.AccessTypeUtils;
import net.minecraft.block.BlockState;
@@ -35,7 +35,7 @@ import net.minecraftforge.fluids.FluidStack;
import java.util.List;
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";
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 int priority = 0;
private int compare = IComparer.COMPARE_NBT;
private int mode = IFilterable.BLACKLIST;
private int mode = IWhitelistBlacklist.BLACKLIST;
private UUID storageId = UUID.randomUUID();
private IStorageDisk<FluidStack> storage;
@@ -198,12 +198,12 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
}
@Override
public int getMode() {
public int getWhitelistBlacklistMode() {
return mode;
}
@Override
public void setMode(int mode) {
public void setWhitelistBlacklistMode(int mode) {
this.mode = mode;
markDirty();
@@ -234,7 +234,7 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
}
@Override
public TileDataParameter<Integer, ?> getFilterParameter() {
public TileDataParameter<Integer, ?> getWhitelistBlacklistParameter() {
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.util.IComparer;
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.storage.StorageCacheItem;
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.config.IAccessType;
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.IWhitelistBlacklist;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import com.raoulvdberge.refinedstorage.util.AccessTypeUtils;
import com.raoulvdberge.refinedstorage.util.StackUtils;
@@ -36,7 +36,7 @@ import net.minecraftforge.fluids.FluidStack;
import java.util.List;
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";
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 int priority = 0;
private int compare = IComparer.COMPARE_NBT;
private int mode = IFilterable.BLACKLIST;
private int mode = IWhitelistBlacklist.BLACKLIST;
private UUID storageId = UUID.randomUUID();
private IStorageDisk<ItemStack> storage;
@@ -197,12 +197,12 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
}
@Override
public int getMode() {
public int getWhitelistBlacklistMode() {
return mode;
}
@Override
public void setMode(int mode) {
public void setWhitelistBlacklistMode(int mode) {
this.mode = mode;
markDirty();
@@ -233,7 +233,7 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
}
@Override
public TileDataParameter<Integer, ?> getFilterParameter() {
public TileDataParameter<Integer, ?> getWhitelistBlacklistParameter() {
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.IStorageDiskListener;
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 net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.ResourceLocation;
@@ -43,7 +43,7 @@ public class StorageDiskFluidStorageWrapper implements IStorageDisk<FluidStack>
@Override
@Nullable
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);
}

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.IStorageDiskListener;
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.nbt.CompoundNBT;
import net.minecraft.util.ResourceLocation;
@@ -43,7 +43,7 @@ public class StorageDiskItemStorageWrapper implements IStorageDisk<ItemStack> {
@Override
@Nullable
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);
}

View File

@@ -112,6 +112,7 @@ public class ControllerBlock extends Block {
}
@Override
@SuppressWarnings("deprecation")
public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) {
if (!world.isRemote) {
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");
}
@Nullable
@Override
public Container createMenu(int i, PlayerInventory playerInventory, PlayerEntity player) {
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.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.util.BlockUtils;
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.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.World;
import net.minecraftforge.fml.network.NetworkHooks;
import javax.annotation.Nullable;
@@ -35,6 +45,24 @@ public class DiskDriveBlock extends NodeBlock {
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
@Override
@OnlyIn(Dist.CLIENT)

View File

@@ -45,7 +45,7 @@ public enum BlockDirection {
case HORIZONTAL:
return previous.rotateYCCW();
default:
return previous;
throw new RuntimeException("Unknown direction type");
}
}
}

View File

@@ -1,13 +1,12 @@
package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.RSContainers;
import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot;
import com.raoulvdberge.refinedstorage.tile.TileStorage;
import net.minecraft.entity.player.PlayerEntity;
public class StorageContainer extends BaseContainer {
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) {
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;
private boolean reading;
public ItemHandlerBase(int size, @Nullable Consumer<Integer> listener, Predicate<ItemStack>... validators) {
super(size);
@@ -48,7 +50,7 @@ public class ItemHandlerBase extends ItemStackHandler {
protected void onContentsChanged(int slot) {
super.onContentsChanged(slot);
if (listener != null) {
if (!reading && listener != null) {
listener.accept(slot);
}
@@ -65,4 +67,8 @@ public class ItemHandlerBase extends ItemStackHandler {
public boolean isEmpty() {
return empty;
}
public void setReading(boolean reading) {
this.reading = reading;
}
}

View File

@@ -1,6 +1,7 @@
package com.raoulvdberge.refinedstorage.item.blockitem;
import com.raoulvdberge.refinedstorage.block.BaseBlock;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import net.minecraft.block.BlockState;
import net.minecraft.item.BlockItem;
import net.minecraft.item.BlockItemUseContext;
@@ -18,7 +19,7 @@ public class BaseBlockItem extends BlockItem {
protected boolean placeBlock(BlockItemUseContext context, BlockState 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.getFace(),
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;
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.TileDataParameter;
import net.minecraft.client.resources.I18n;
@@ -18,16 +18,16 @@ public class SideButtonMode extends SideButton {
@Override
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
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
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;
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.world.World;
import javax.annotation.Nonnull;
public class CableTile extends NetworkNodeTile<NetworkNodeCable> {
public class CableTile extends NetworkNodeTile<CableNetworkNode> {
public CableTile() {
super(RSTiles.CABLE);
}
@Override
@Nonnull
public NetworkNodeCable createNode(World world, BlockPos pos) {
return new NetworkNodeCable(world, pos);
public CableNetworkNode createNode(World world, BlockPos 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.api.storage.AccessType;
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.tile.config.*;
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
@@ -14,10 +14,10 @@ import net.minecraft.world.World;
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> 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<AccessType, DiskDriveTile> ACCESS_TYPE = IAccessType.createParameter();
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(COMPARE);
dataManager.addWatchedParameter(MODE);
dataManager.addWatchedParameter(WHITELIST_BLACKLIST);
dataManager.addWatchedParameter(TYPE);
dataManager.addWatchedParameter(ACCESS_TYPE);
dataManager.addWatchedParameter(STORED);
@@ -149,7 +149,7 @@ public class DiskDriveTile extends NetworkNodeTile<NetworkNodeDiskDrive> {
@Override
@Nonnull
public NetworkNodeDiskDrive createNode(World world, BlockPos pos) {
return new NetworkNodeDiskDrive(world, pos);
public DiskDriveNetworkNode createNode(World world, BlockPos 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.apiimpl.network.node.NetworkNodeDestructor;
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.IWhitelistBlacklist;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.util.math.BlockPos;
@@ -14,7 +14,7 @@ import javax.annotation.Nonnull;
public class TileDestructor extends NetworkNodeTile<NetworkNodeDestructor> {
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<Boolean, TileDestructor> PICKUP = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isPickupItem(), (t, 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.apiimpl.network.node.diskmanipulator.NetworkNodeDiskManipulator;
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.IWhitelistBlacklist;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.network.datasync.DataSerializers;
@@ -15,7 +15,7 @@ import javax.annotation.Nonnull;
public class TileDiskManipulator extends NetworkNodeTile<NetworkNodeDiskManipulator> {
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> IO_MODE = new TileDataParameter<>(DataSerializers.VARINT, NetworkNodeDiskManipulator.IO_MODE_INSERT, t -> t.getNode().getIoMode(), (t, v) -> {
t.getNode().setIoMode(v);

View File

@@ -17,7 +17,7 @@ import javax.annotation.Nonnull;
public class TileExternalStorage extends NetworkNodeTile<NetworkNodeExternalStorage> {
public static final TileDataParameter<Integer, TileExternalStorage> PRIORITY = IPrioritizable.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<AccessType, TileExternalStorage> ACCESS_TYPE = IAccessType.createParameter();
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.tile.config.IAccessType;
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.IWhitelistBlacklist;
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.util.math.BlockPos;
@@ -17,7 +17,7 @@ import javax.annotation.Nonnull;
public class TileFluidStorage extends NetworkNodeTile<NetworkNodeFluidStorage> {
public static final TileDataParameter<Integer, TileFluidStorage> PRIORITY = IPrioritizable.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<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.apiimpl.network.node.NetworkNodeImporter;
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.IWhitelistBlacklist;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
@@ -13,7 +13,7 @@ import javax.annotation.Nonnull;
public class TileImporter extends NetworkNodeTile<NetworkNodeImporter> {
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 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.tile.config.IAccessType;
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.IWhitelistBlacklist;
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.util.math.BlockPos;
@@ -17,7 +17,7 @@ import javax.annotation.Nonnull;
public class TileStorage extends NetworkNodeTile<NetworkNodeStorage> {
public static final TileDataParameter<Integer, TileStorage> PRIORITY = IPrioritizable.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<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.items.IItemHandler;
public interface IFilterable {
public interface IWhitelistBlacklist {
int WHITELIST = 0;
int BLACKLIST = 1;
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) {
((IFilterable) t.getNode()).setMode(v);
((IWhitelistBlacklist) t.getNode()).setWhitelistBlacklistMode(v);
}
});
}
@@ -74,7 +74,7 @@ public interface IFilterable {
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.network.grid.handler.FluidGridHandlerPortable;
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.disk.StorageDiskFluidPortable;
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());
}
};
private ItemHandlerBase disk = new ItemHandlerBase(1, NetworkNodeDiskDrive.VALIDATOR_STORAGE_DISK) {
private ItemHandlerBase disk = new ItemHandlerBase(1, DiskDriveNetworkNode.VALIDATOR_STORAGE_DISK) {
@Override
protected void onContentsChanged(int 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.ItemGridHandlerPortable;
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.disk.StorageDiskFluidPortable;
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<IGridTab> tabs = new ArrayList<>();
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
protected void onContentsChanged(int 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.apiimpl.API;
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.GridStackItem;
import net.minecraft.inventory.IInventory;
@@ -224,6 +225,14 @@ public final class StackUtils {
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) {
ListNBT tagList = new ListNBT();

View File

@@ -17,8 +17,8 @@
"gui.refinedstorage:fluid_grid": "Fluid Grid",
"gui.refinedstorage:item_amount": "Item amount",
"gui.refinedstorage:fluid_amount": "Fluid amount in mB",
"gui.refinedstorage:disk_drive": "Drive",
"gui.refinedstorage:disk_drive.disks": "Disks",
"gui.refinedstorage.disk_drive": "Disk Drive",
"gui.refinedstorage.disk_drive.disks": "Disks",
"gui.refinedstorage:external_storage": "External Storage",
"gui.refinedstorage:importer": "Importer",
"gui.refinedstorage:exporter": "Exporter",