diff --git a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java index 968f73cf5..b684b8e66 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java @@ -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() { - @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 diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RS.java b/src/main/java/com/raoulvdberge/refinedstorage/RS.java index 6c8fabe0e..2612a1bd6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RS.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RS.java @@ -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> 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((windowId, inv, tile) -> new DiskDriveContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "disk_drive")); } @SubscribeEvent diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java b/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java index 2a538e0ba..81d4ae192 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java @@ -21,8 +21,7 @@ public final class RSContainers { public static final ContainerType DESTRUCTOR = null; //@ObjectHolder(RS.ID + ":detector") public static final ContainerType DETECTOR = null; - //@ObjectHolder(RS.ID + ":disk_drive") - public static final ContainerType DISK_DRIVE = null; + //@ObjectHolder(RS.ID + ":disk_manipulator") public static final ContainerType DISK_MANIPULATOR = null; //@ObjectHolder(RS.ID + ":exporter") @@ -51,8 +50,10 @@ public final class RSContainers { public static final ContainerType RELAY = null; //@ObjectHolder(RS.ID + ":security_manager") public static final ContainerType SECURITY_MANAGER = null; - //@ObjectHolder(RS.ID + ":storage") - public static final ContainerType STORAGE = null; + + @ObjectHolder(RS.ID + ":disk_drive") + public static final ContainerType DISK_DRIVE = null; + //@ObjectHolder(RS.ID + ":storage_monitor") public static final ContainerType STORAGE_MONITOR = null; //@ObjectHolder(RS.ID + ":wireless_transmitter") diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/node/INetworkNodeCable.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/node/INetworkNodeCable.java deleted file mode 100644 index 4059e0171..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/node/INetworkNodeCable.java +++ /dev/null @@ -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 { -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeManager.java index 53be9017d..279839eac 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeManager.java @@ -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 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); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/CableNetworkNode.java old mode 100755 new mode 100644 similarity index 87% rename from src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java rename to src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/CableNetworkNode.java index 226497ce1..bf981fa01 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/CableNetworkNode.java @@ -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); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/IGuiStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/IStorageScreen.java similarity index 84% rename from src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/IGuiStorage.java rename to src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/IStorageScreen.java index 6e1a45b5f..08ed960e1 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/IGuiStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/IStorageScreen.java @@ -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 getTypeParameter(); @@ -12,7 +12,7 @@ public interface IGuiStorage { TileDataParameter getCompareParameter(); - TileDataParameter getFilterParameter(); + TileDataParameter getWhitelistBlacklistParameter(); TileDataParameter getPriorityParameter(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java index dd6c18e46..8c4bf2d6e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java @@ -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(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java index 9737574c2..6fdb74169 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java @@ -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 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(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExternalStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExternalStorage.java index eec40eca8..f7f30124f 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExternalStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExternalStorage.java @@ -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 getFilterParameter() { + public TileDataParameter 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 diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java index 3a3181de6..1380d708c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java @@ -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(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java index 4f7d28045..f846b359d 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java @@ -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; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/NetworkNodeDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/DiskDriveNetworkNode.java similarity index 91% rename from src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/NetworkNodeDiskDrive.java rename to src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/DiskDriveNetworkNode.java index f78ef59aa..4e4bc39da 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/NetworkNodeDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/DiskDriveNetworkNode.java @@ -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 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 getFilterParameter() { - return DiskDriveTile.MODE; + public TileDataParameter getWhitelistBlacklistParameter() { + return DiskDriveTile.WHITELIST_BLACKLIST; } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/StorageDiskFluidDriveWrapper.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/StorageDiskFluidDriveWrapper.java index 8c7ba7db2..d5379c47b 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/StorageDiskFluidDriveWrapper.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/StorageDiskFluidDriveWrapper.java @@ -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 { - private NetworkNodeDiskDrive diskDrive; + private DiskDriveNetworkNode diskDrive; private IStorageDisk parent; private int lastState; - public StorageDiskFluidDriveWrapper(NetworkNodeDiskDrive diskDrive, IStorageDisk parent) { + public StorageDiskFluidDriveWrapper(DiskDriveNetworkNode diskDrive, IStorageDisk parent) { this.diskDrive = diskDrive; this.parent = parent; this.setSettings( @@ -57,7 +57,7 @@ public class StorageDiskFluidDriveWrapper implements IStorageDisk { @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); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/StorageDiskItemDriveWrapper.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/StorageDiskItemDriveWrapper.java index b6c4576d0..57a1cede7 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/StorageDiskItemDriveWrapper.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/StorageDiskItemDriveWrapper.java @@ -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 { - private NetworkNodeDiskDrive diskDrive; + private DiskDriveNetworkNode diskDrive; private IStorageDisk parent; private int lastState; - public StorageDiskItemDriveWrapper(NetworkNodeDiskDrive diskDrive, IStorageDisk parent) { + public StorageDiskItemDriveWrapper(DiskDriveNetworkNode diskDrive, IStorageDisk parent) { this.diskDrive = diskDrive; this.parent = parent; this.setSettings( @@ -57,7 +57,7 @@ public class StorageDiskItemDriveWrapper implements IStorageDisk { @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); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/NetworkNodeDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/NetworkNodeDiskManipulator.java index 0a7295819..a7916aa13 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/NetworkNodeDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/NetworkNodeDiskManipulator.java @@ -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; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/StorageDiskFluidManipulatorWrapper.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/StorageDiskFluidManipulatorWrapper.java index b1cb0ed10..cd7200b55 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/StorageDiskFluidManipulatorWrapper.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/StorageDiskFluidManipulatorWrapper.java @@ -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 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 getFilterParameter() { + public TileDataParameter getWhitelistBlacklistParameter() { return TileFluidStorage.MODE; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/NetworkNodeStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/NetworkNodeStorage.java index 264c80dea..542a5cd5c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/NetworkNodeStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/NetworkNodeStorage.java @@ -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 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 getFilterParameter() { + public TileDataParameter getWhitelistBlacklistParameter() { return TileStorage.MODE; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/StorageDiskFluidStorageWrapper.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/StorageDiskFluidStorageWrapper.java index 157df9ee9..e7b2ba059 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/StorageDiskFluidStorageWrapper.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/StorageDiskFluidStorageWrapper.java @@ -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 @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); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/StorageDiskItemStorageWrapper.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/StorageDiskItemStorageWrapper.java index 881df4f2c..15513e77b 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/StorageDiskItemStorageWrapper.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/StorageDiskItemStorageWrapper.java @@ -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 { @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); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/ControllerBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/ControllerBlock.java index 6a7492d3a..3a11d42c2 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/ControllerBlock.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/ControllerBlock.java @@ -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); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/DiskDriveBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/DiskDriveBlock.java index 2875866d7..7d1dfe0b0 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/DiskDriveBlock.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/DiskDriveBlock.java @@ -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( + new TranslationTextComponent("gui.refinedstorage.disk_drive"), + (tile, windowId, inventory, p) -> new DiskDriveContainer(tile, p, windowId), + pos + ), + pos + ); + } + + return true; + } + /* TODO @Override @OnlyIn(Dist.CLIENT) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockDirection.java b/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockDirection.java index 2d1f56255..a532a4338 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockDirection.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockDirection.java @@ -45,7 +45,7 @@ public enum BlockDirection { case HORIZONTAL: return previous.rotateYCCW(); default: - return previous; + throw new RuntimeException("Unknown direction type"); } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/StorageContainer.java b/src/main/java/com/raoulvdberge/refinedstorage/container/StorageContainer.java index a5d311250..2173b4a18 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/StorageContainer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/StorageContainer.java @@ -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)); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/factory/PositionalTileContainerFactory.java b/src/main/java/com/raoulvdberge/refinedstorage/container/factory/PositionalTileContainerFactory.java new file mode 100644 index 000000000..8d18c9ec4 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/factory/PositionalTileContainerFactory.java @@ -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 implements IContainerFactory { + public interface Factory { + C create(int windowId, PlayerInventory inv, T tile); + } + + private final Factory factory; + + public PositionalTileContainerFactory(Factory 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); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/factory/PositionalTileContainerProvider.java b/src/main/java/com/raoulvdberge/refinedstorage/container/factory/PositionalTileContainerProvider.java new file mode 100644 index 000000000..6a09c93ea --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/factory/PositionalTileContainerProvider.java @@ -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 implements INamedContainerProvider { + public interface Provider { + Container create(T tile, int windowId, PlayerInventory inventory, PlayerEntity player); + } + + private final ITextComponent name; + private final Provider provider; + private final BlockPos pos; + + public PositionalTileContainerProvider(ITextComponent name, Provider 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); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/ItemHandlerBase.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/ItemHandlerBase.java index 628418d96..6b4905175 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/ItemHandlerBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/ItemHandlerBase.java @@ -17,6 +17,8 @@ public class ItemHandlerBase extends ItemStackHandler { protected Predicate[] validators; + private boolean reading; + public ItemHandlerBase(int size, @Nullable Consumer listener, Predicate... 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; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/BaseBlockItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/BaseBlockItem.java index 84e27f819..cc1da1047 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/BaseBlockItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/BaseBlockItem.java @@ -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(), diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/DiskDriveScreen.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/DiskDriveScreen.java new file mode 100644 index 000000000..df3c1e069 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/DiskDriveScreen.java @@ -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 { + 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); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiStorage.java deleted file mode 100644 index f1d503d74..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiStorage.java +++ /dev/null @@ -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 { - 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())); - } - }*/ -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/StorageScreen.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/StorageScreen.java new file mode 100644 index 000000000..aa19240aa --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/StorageScreen.java @@ -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 extends BaseScreen { + 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 typeParameter; + private TileDataParameter redstoneModeParameter; + private TileDataParameter compareParameter; + private TileDataParameter filterParameter; + private TileDataParameter priorityParameter; + private TileDataParameter accessTypeParameter; + private Supplier storedSupplier; + private Supplier capacitySupplier; + + private Button priorityButton; + + public StorageScreen(T container, + PlayerInventory inventory, + ITextComponent title, + String texture, + @Nullable TileDataParameter typeParameter, + @Nullable TileDataParameter redstoneModeParameter, + @Nullable TileDataParameter compareParameter, + @Nullable TileDataParameter filterParameter, + TileDataParameter priorityParameter, + @Nullable TileDataParameter accessTypeParameter, + Supplier storedSupplier, Supplier 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())); + } + }*/ +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/SideButtonMode.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/SideButtonMode.java index 7fad67eef..1927db010 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/SideButtonMode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/SideButtonMode.java @@ -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); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/CableTile.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/CableTile.java index 38075b68b..3df889540 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/CableTile.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/CableTile.java @@ -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 { +public class CableTile extends NetworkNodeTile { 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); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/DiskDriveTile.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/DiskDriveTile.java index 01ec92faa..f8660f238 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/DiskDriveTile.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/DiskDriveTile.java @@ -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 { +public class DiskDriveTile extends NetworkNodeTile { public static final TileDataParameter PRIORITY = IPrioritizable.createParameter(); public static final TileDataParameter COMPARE = IComparable.createParameter(); - public static final TileDataParameter MODE = IFilterable.createParameter(); + public static final TileDataParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); public static final TileDataParameter TYPE = IType.createParameter(); public static final TileDataParameter ACCESS_TYPE = IAccessType.createParameter(); public static final TileDataParameter STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> { @@ -72,7 +72,7 @@ public class DiskDriveTile extends NetworkNodeTile { 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 { @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); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDestructor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDestructor.java index b9339ac76..f48336172 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDestructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDestructor.java @@ -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 { public static final TileDataParameter COMPARE = IComparable.createParameter(); - public static final TileDataParameter MODE = IFilterable.createParameter(); + public static final TileDataParameter MODE = IWhitelistBlacklist.createParameter(); public static final TileDataParameter TYPE = IType.createParameter(); public static final TileDataParameter PICKUP = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isPickupItem(), (t, v) -> { t.getNode().setPickupItem(v); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java index a9f8424b9..d52e06902 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java @@ -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 { public static final TileDataParameter COMPARE = IComparable.createParameter(); - public static final TileDataParameter MODE = IFilterable.createParameter(); + public static final TileDataParameter MODE = IWhitelistBlacklist.createParameter(); public static final TileDataParameter TYPE = IType.createParameter(); public static final TileDataParameter IO_MODE = new TileDataParameter<>(DataSerializers.VARINT, NetworkNodeDiskManipulator.IO_MODE_INSERT, t -> t.getNode().getIoMode(), (t, v) -> { t.getNode().setIoMode(v); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExternalStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExternalStorage.java index 3489960f6..d2a4c8352 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExternalStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExternalStorage.java @@ -17,7 +17,7 @@ import javax.annotation.Nonnull; public class TileExternalStorage extends NetworkNodeTile { public static final TileDataParameter PRIORITY = IPrioritizable.createParameter(); public static final TileDataParameter COMPARE = IComparable.createParameter(); - public static final TileDataParameter MODE = IFilterable.createParameter(); + public static final TileDataParameter MODE = IWhitelistBlacklist.createParameter(); public static final TileDataParameter TYPE = IType.createParameter(); public static final TileDataParameter ACCESS_TYPE = IAccessType.createParameter(); public static final TileDataParameter STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidStorage.java index 54a9b6606..0ccebe58f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidStorage.java @@ -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 { public static final TileDataParameter PRIORITY = IPrioritizable.createParameter(); public static final TileDataParameter COMPARE = IComparable.createParameter(); - public static final TileDataParameter MODE = IFilterable.createParameter(); + public static final TileDataParameter MODE = IWhitelistBlacklist.createParameter(); public static final TileDataParameter ACCESS_TYPE = IAccessType.createParameter(); public static final TileDataParameter STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java index 174fa808d..9ae5f23d4 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java @@ -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 { public static final TileDataParameter COMPARE = IComparable.createParameter(); - public static final TileDataParameter MODE = IFilterable.createParameter(); + public static final TileDataParameter MODE = IWhitelistBlacklist.createParameter(); public static final TileDataParameter TYPE = IType.createParameter(); public TileImporter() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorage.java index 23a1ea514..fd8fb673c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileStorage.java @@ -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 { public static final TileDataParameter PRIORITY = IPrioritizable.createParameter(); public static final TileDataParameter COMPARE = IComparable.createParameter(); - public static final TileDataParameter MODE = IFilterable.createParameter(); + public static final TileDataParameter MODE = IWhitelistBlacklist.createParameter(); public static final TileDataParameter ACCESS_TYPE = IAccessType.createParameter(); public static final TileDataParameter STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/config/IFilterable.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/config/IWhitelistBlacklist.java old mode 100755 new mode 100644 similarity index 89% rename from src/main/java/com/raoulvdberge/refinedstorage/tile/config/IFilterable.java rename to src/main/java/com/raoulvdberge/refinedstorage/tile/config/IWhitelistBlacklist.java index cfbf1947f..d24575e11 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/config/IFilterable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/config/IWhitelistBlacklist.java @@ -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 TileDataParameter 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(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java index 282d3e234..0a8389fc0 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java @@ -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); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java index fa96b3a40..5155382f9 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java @@ -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 filters = new ArrayList<>(); private List 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); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/util/StackUtils.java b/src/main/java/com/raoulvdberge/refinedstorage/util/StackUtils.java index 934305dfe..288378a82 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/util/StackUtils.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/util/StackUtils.java @@ -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(); diff --git a/src/main/resources/assets/refinedstorage/lang/en_us.json b/src/main/resources/assets/refinedstorage/lang/en_us.json index b4636c9ce..3e781e596 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_us.json +++ b/src/main/resources/assets/refinedstorage/lang/en_us.json @@ -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",