From 2bad9164f170aed8ecd17dec7bd2c3fd742a863e Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sun, 12 Nov 2023 14:10:54 +0100 Subject: [PATCH 01/19] docs: add changelog for v1.11.7 --- CHANGELOG.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf91a25750..72d1658001 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,17 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Fixed GUI side buttons not working sometimes when using Refined Storage with addons. +## [1.11.7] - 2023-11-12 + +### Fixed + +- Various world corruption issues if Refined Storage blocks were removed unexpectedly or with another mod. +- Fixed JEI transfer crash for larger processing recipes. +- Fixed rare autocrafting crash. +- Fixed duplication bug with the Crafting Grid. +- Fixed fluid duplication bug with the Importer and GregTechCEu machines. +- Attempted to fix issue where Grid doesn't load items and requires a client restart. + ## [1.11.6] - 2023-03-30 ### Fixed @@ -3505,7 +3516,9 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). [1.12.1]: https://github.com/refinedmods/refinedstorage/compare/v1.12.0...v1.12.1 -[1.12.0]: https://github.com/refinedmods/refinedstorage/compare/v1.11.6...v1.12.0 +[1.12.0]: https://github.com/refinedmods/refinedstorage/compare/v1.11.7...v1.12.0 + +[1.11.7]: https://github.com/refinedmods/refinedstorage/compare/v1.11.6...v1.11.7 [1.11.6]: https://github.com/refinedmods/refinedstorage/compare/v1.11.5...v1.11.6 From c9caef8217fa23b8f7824b1ec5ca4e841b4a2856 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sat, 18 Nov 2023 15:10:00 +0100 Subject: [PATCH 02/19] docs: support for mc 1.18.2 --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 1399640c81..d0d432d3f3 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -35,6 +35,7 @@ body: description: | If your Minecraft version isn't listed here, it means that it's no longer supported. In that case, don't create an issue. options: + - Minecraft 1.18.2 - Minecraft 1.19.2 - Minecraft 1.20.1 validations: From 2e331bac8120d08d843779690aad5124d5ec3b4b Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sun, 26 Nov 2023 13:07:39 +0100 Subject: [PATCH 03/19] chore: add changelog for v1.10.6 --- CHANGELOG.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72d1658001..b8429055a5 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -128,6 +128,19 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Ported to Minecraft 1.19.2. +## [1.10.6] - 2023-11-26 + +### Fixed + +- Fixed a bunch of issues where chunks would unintentionally be loaded by RS. +- Reduced block updates when a controller is turning on and off constantly. +- Various world corruption issues if Refined Storage blocks were removed unexpectedly or with another mod. +- Fixed JEI transfer crash for larger processing recipes. +- Fixed rare autocrafting crash. +- Fixed duplication bug with the Crafting Grid. +- Fixed fluid duplication bug with the Importer in certain situations. +- Attempted to fix issue where Grid doesn't load items and requires a client restart. + ## [1.10.5] - 2023-02-12 ### Fixed @@ -3532,7 +3545,9 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). [1.11.1]: https://github.com/refinedmods/refinedstorage/compare/v1.11.0...v1.11.1 -[1.11.0]: https://github.com/refinedmods/refinedstorage/compare/v1.10.5...v1.11.0 +[1.11.0]: https://github.com/refinedmods/refinedstorage/compare/v1.10.6...v1.11.0 + +[1.10.6]: https://github.com/refinedmods/refinedstorage/compare/v1.10.5...v1.10.6 [1.10.5]: https://github.com/refinedmods/refinedstorage/compare/v1.10.4...v1.10.5 From 27442fbfac7d0266212f88302af369176e2954b0 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sun, 26 Nov 2023 18:31:08 +0100 Subject: [PATCH 04/19] chore: note for inventory tweaks --- .../api/network/grid/IGrid.java | 40 ++++++++++--------- .../sorting/InventoryTweaksGridSorter.java | 1 + 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/refinedmods/refinedstorage/api/network/grid/IGrid.java b/src/main/java/com/refinedmods/refinedstorage/api/network/grid/IGrid.java index f1ed4d8943..6267710b2e 100644 --- a/src/main/java/com/refinedmods/refinedstorage/api/network/grid/IGrid.java +++ b/src/main/java/com/refinedmods/refinedstorage/api/network/grid/IGrid.java @@ -29,6 +29,8 @@ public interface IGrid { int SORTING_TYPE_QUANTITY = 0; int SORTING_TYPE_NAME = 1; int SORTING_TYPE_ID = 2; + // todo: remove in 1.21.x + @Deprecated int SORTING_TYPE_INVENTORYTWEAKS = 3; int SORTING_TYPE_LAST_MODIFIED = 4; @@ -50,38 +52,38 @@ public interface IGrid { static boolean isValidViewType(int type) { return type == VIEW_TYPE_NORMAL || - type == VIEW_TYPE_CRAFTABLES || - type == VIEW_TYPE_NON_CRAFTABLES; + type == VIEW_TYPE_CRAFTABLES || + type == VIEW_TYPE_NON_CRAFTABLES; } static boolean isValidSearchBoxMode(int mode) { return mode == SEARCH_BOX_MODE_NORMAL || - mode == SEARCH_BOX_MODE_NORMAL_AUTOSELECTED || - mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED || - mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED || - mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_2WAY || - mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_2WAY_AUTOSELECTED; + mode == SEARCH_BOX_MODE_NORMAL_AUTOSELECTED || + mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED || + mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED || + mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_2WAY || + mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_2WAY_AUTOSELECTED; } static boolean isSearchBoxModeWithAutoselection(int mode) { return mode == SEARCH_BOX_MODE_NORMAL_AUTOSELECTED || - mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED || - mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_2WAY_AUTOSELECTED; + mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED || + mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_2WAY_AUTOSELECTED; } static boolean doesSearchBoxModeUseJEI(int mode) { return mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED || - mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED || - mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_2WAY || - mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_2WAY_AUTOSELECTED; + mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED || + mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_2WAY || + mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_2WAY_AUTOSELECTED; } static boolean isValidSortingType(int type) { return type == SORTING_TYPE_QUANTITY || - type == SORTING_TYPE_NAME || - type == SORTING_TYPE_ID || - type == SORTING_TYPE_INVENTORYTWEAKS || - type == SORTING_TYPE_LAST_MODIFIED; + type == SORTING_TYPE_NAME || + type == SORTING_TYPE_ID || + type == SORTING_TYPE_INVENTORYTWEAKS || + type == SORTING_TYPE_LAST_MODIFIED; } static boolean isValidSortingDirection(int direction) { @@ -90,9 +92,9 @@ static boolean isValidSortingDirection(int direction) { static boolean isValidSize(int size) { return size == SIZE_STRETCH || - size == SIZE_SMALL || - size == SIZE_MEDIUM || - size == SIZE_LARGE; + size == SIZE_SMALL || + size == SIZE_MEDIUM || + size == SIZE_LARGE; } /** diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/grid/sorting/InventoryTweaksGridSorter.java b/src/main/java/com/refinedmods/refinedstorage/screen/grid/sorting/InventoryTweaksGridSorter.java index 99d03d8283..8aa56ae113 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/grid/sorting/InventoryTweaksGridSorter.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/grid/sorting/InventoryTweaksGridSorter.java @@ -3,6 +3,7 @@ import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.screen.grid.stack.IGridStack; +// TODO: remove in 1.20.x public class InventoryTweaksGridSorter implements IGridSorter { @Override public boolean isApplicable(IGrid grid) { From b489a3db8f59b0f7ed4e3f99f8213b0ef2e7873e Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sun, 26 Nov 2023 18:31:35 +0100 Subject: [PATCH 05/19] docs: add asciidoc docs for use with refinedsites --- docs/assets/1024k-fluid-storage-block.png | Bin 0 -> 3093 bytes docs/assets/1024k-fluid-storage-disk.png | Bin 0 -> 501 bytes docs/assets/1024k-fluid-storage-part.png | Bin 0 -> 635 bytes docs/assets/16k-storage-block.png | Bin 0 -> 3255 bytes docs/assets/16k-storage-disk.png | Bin 0 -> 478 bytes docs/assets/16k-storage-part.png | Bin 0 -> 703 bytes docs/assets/1k-storage-block.png | Bin 0 -> 3243 bytes docs/assets/1k-storage-disk.png | Bin 0 -> 479 bytes docs/assets/1k-storage-part.png | Bin 0 -> 353 bytes docs/assets/256k-fluid-storage-block.png | Bin 0 -> 3078 bytes docs/assets/256k-fluid-storage-disk.png | Bin 0 -> 509 bytes docs/assets/256k-fluid-storage-part.png | Bin 0 -> 437 bytes docs/assets/4096k-fluid-storage-block.png | Bin 0 -> 3092 bytes docs/assets/4096k-fluid-storage-disk.png | Bin 0 -> 501 bytes docs/assets/4096k-fluid-storage-part.png | Bin 0 -> 686 bytes docs/assets/4k-storage-block.png | Bin 0 -> 3262 bytes docs/assets/4k-storage-disk.png | Bin 0 -> 477 bytes docs/assets/4k-storage-part.png | Bin 0 -> 370 bytes docs/assets/64k-fluid-storage-block.png | Bin 0 -> 3064 bytes docs/assets/64k-fluid-storage-disk.png | Bin 0 -> 502 bytes docs/assets/64k-fluid-storage-part.png | Bin 0 -> 404 bytes docs/assets/64k-storage-block.png | Bin 0 -> 3274 bytes docs/assets/64k-storage-disk.png | Bin 0 -> 478 bytes docs/assets/64k-storage-part.png | Bin 0 -> 685 bytes docs/assets/advanced-processor.png | Bin 0 -> 470 bytes docs/assets/basic-processor.png | Bin 0 -> 456 bytes docs/assets/block-of-quartz-enriched-iron.png | Bin 0 -> 3642 bytes docs/assets/cable.png | Bin 0 -> 365 bytes docs/assets/construction-core.png | Bin 0 -> 516 bytes docs/assets/constructor.png | Bin 0 -> 1406 bytes docs/assets/controller.png | Bin 0 -> 2944 bytes docs/assets/cover.png | Bin 0 -> 1145 bytes docs/assets/crafter-manager.png | Bin 0 -> 3003 bytes docs/assets/crafter.png | Bin 0 -> 2946 bytes docs/assets/crafting-grid.png | Bin 0 -> 3036 bytes docs/assets/crafting-monitor.png | Bin 0 -> 3043 bytes docs/assets/crafting-upgrade.png | Bin 0 -> 561 bytes docs/assets/creative-fluid-storage-block.png | Bin 0 -> 2804 bytes docs/assets/creative-fluid-storage-disk.png | Bin 0 -> 472 bytes docs/assets/creative-portable-grid.png | Bin 0 -> 1695 bytes docs/assets/creative-storage-block.png | Bin 0 -> 2690 bytes docs/assets/creative-storage-disk.png | Bin 0 -> 477 bytes .../creative-wireless-crafting-monitor.png | Bin 0 -> 561 bytes docs/assets/creative-wireless-fluid-grid.png | Bin 0 -> 573 bytes docs/assets/creative-wireless-grid.png | Bin 0 -> 577 bytes docs/assets/cut-silicon.png | Bin 0 -> 524 bytes docs/assets/cutting-tool.png | Bin 0 -> 288 bytes docs/assets/destruction-core.png | Bin 0 -> 513 bytes docs/assets/destructor.png | Bin 0 -> 1284 bytes docs/assets/detector.png | Bin 0 -> 1825 bytes docs/assets/disk-drive.png | Bin 0 -> 2741 bytes docs/assets/disk-manipulator.png | Bin 0 -> 2708 bytes docs/assets/exporter.png | Bin 0 -> 543 bytes docs/assets/external-storage.png | Bin 0 -> 501 bytes docs/assets/filter.png | Bin 0 -> 491 bytes docs/assets/fluid-grid.png | Bin 0 -> 3066 bytes docs/assets/fluid-interface.png | Bin 0 -> 3036 bytes docs/assets/fortune-upgrade.png | Bin 0 -> 554 bytes docs/assets/grid.png | Bin 0 -> 3027 bytes docs/assets/hollow-cover.png | Bin 0 -> 1141 bytes docs/assets/importer.png | Bin 0 -> 507 bytes docs/assets/improved-processor.png | Bin 0 -> 490 bytes docs/assets/interdimensional-upgrade.png | Bin 0 -> 560 bytes docs/assets/interface.png | Bin 0 -> 3051 bytes docs/assets/machine-casing.png | Bin 0 -> 2862 bytes docs/assets/network-card.png | Bin 0 -> 555 bytes docs/assets/network-receiver.png | Bin 0 -> 2997 bytes docs/assets/network-transmitter.png | Bin 0 -> 3045 bytes docs/assets/pattern-grid.png | Bin 0 -> 3032 bytes docs/assets/pattern.png | Bin 0 -> 477 bytes docs/assets/portable-grid.png | Bin 0 -> 1695 bytes docs/assets/processing-pattern-encoder.png | Bin 0 -> 6210 bytes docs/assets/processor-binding.png | Bin 0 -> 499 bytes docs/assets/quartz-enriched-iron.png | Bin 0 -> 559 bytes docs/assets/range-upgrade.png | Bin 0 -> 564 bytes docs/assets/raw-advanced-processor.png | Bin 0 -> 286 bytes docs/assets/raw-basic-processor.png | Bin 0 -> 295 bytes docs/assets/raw-improved-processor.png | Bin 0 -> 331 bytes docs/assets/reader.png | Bin 0 -> 1091 bytes docs/assets/regulator-upgrade.png | Bin 0 -> 848 bytes docs/assets/relay.png | Bin 0 -> 2977 bytes docs/assets/security-card.png | Bin 0 -> 618 bytes docs/assets/security-manager.png | Bin 0 -> 3017 bytes docs/assets/silicon.png | Bin 0 -> 369 bytes docs/assets/silk-touch-upgrade.png | Bin 0 -> 563 bytes docs/assets/solderer.png | Bin 0 -> 5157 bytes docs/assets/speed-upgrade.png | Bin 0 -> 523 bytes docs/assets/stack-upgrade.png | Bin 0 -> 554 bytes docs/assets/storage-housing.png | Bin 0 -> 487 bytes docs/assets/storage-monitor.png | Bin 0 -> 2502 bytes docs/assets/upgrade.png | Bin 0 -> 524 bytes docs/assets/wireless-crafting-monitor.png | Bin 0 -> 561 bytes docs/assets/wireless-fluid-grid.png | Bin 0 -> 573 bytes docs/assets/wireless-grid.png | Bin 0 -> 577 bytes docs/assets/wireless-transmitter.png | Bin 0 -> 403 bytes docs/assets/wrench.png | Bin 0 -> 663 bytes docs/assets/writer.png | Bin 0 -> 1096 bytes docs/component.json | 9 + docs/nav.json | 427 ++++++++++++++++++ docs/pages/advanced-usage/commands.adoc | 76 ++++ docs/pages/advanced-usage/index.adoc | 8 + docs/pages/advanced-usage/profiling.adoc | 33 ++ docs/pages/advanced-usage/resource-packs.adoc | 25 + .../translating-refined-storage.adoc | 16 + .../using-development-builds.adoc | 15 + docs/pages/advanced-usage/using-the-api.adoc | 85 ++++ .../autocrafting-with-filled-buckets.adoc | 15 + docs/pages/autocrafting/crafter-manager.adoc | 32 ++ docs/pages/autocrafting/crafter.adoc | 37 ++ docs/pages/autocrafting/crafting-monitor.adoc | 31 ++ .../autocrafting/fluid-autocrafting.adoc | 27 ++ .../getting-started-with-autocrafting.adoc | 87 ++++ docs/pages/autocrafting/index.adoc | 15 + .../autocrafting/keeping-fluids-in-stock.adoc | 14 + .../autocrafting/keeping-items-in-stock.adoc | 10 + .../autocrafting/locking-and-unlocking.adoc | 68 +++ docs/pages/autocrafting/pattern-grid.adoc | 51 +++ docs/pages/autocrafting/pattern.adoc | 44 ++ .../processing-pattern-encoder.adoc | 21 + .../autocrafting/processing-recipes.adoc | 47 ++ docs/pages/faq.adoc | 68 +++ docs/pages/getting-started.adoc | 55 +++ docs/pages/how-to-install.adoc | 54 +++ docs/pages/index.adoc | 8 + docs/pages/input-and-output/constructor.adoc | 16 + docs/pages/input-and-output/destructor.adoc | 16 + .../input-and-output/disk-manipulator.adoc | 22 + docs/pages/input-and-output/exporter.adoc | 18 + .../input-and-output/fluid-interface.adoc | 26 ++ .../getting-items-in-and-out.adoc | 37 ++ docs/pages/input-and-output/importer.adoc | 18 + docs/pages/input-and-output/index.adoc | 12 + docs/pages/input-and-output/interface.adoc | 36 ++ docs/pages/input-and-output/reader.adoc | 24 + docs/pages/input-and-output/writer.adoc | 24 + docs/pages/networking/cable.adoc | 7 + docs/pages/networking/controller.adoc | 37 ++ .../pages/networking/creative-controller.adoc | 9 + docs/pages/networking/detector.adoc | 30 ++ docs/pages/networking/index.adoc | 7 + docs/pages/networking/relay.adoc | 9 + docs/pages/opencomputers-api.adoc | 27 ++ docs/pages/security/index.adoc | 4 + docs/pages/security/security-card.adoc | 7 + docs/pages/security/security-manager.adoc | 41 ++ .../storage/1024k-fluid-storage-block.adoc | 9 + .../storage/1024k-fluid-storage-disk.adoc | 9 + .../storage/1024k-fluid-storage-part.adoc | 5 + docs/pages/storage/16k-storage-block.adoc | 9 + docs/pages/storage/16k-storage-disk.adoc | 9 + docs/pages/storage/16k-storage-part.adoc | 5 + docs/pages/storage/1k-storage-block.adoc | 9 + docs/pages/storage/1k-storage-disk.adoc | 9 + docs/pages/storage/1k-storage-part.adoc | 5 + .../storage/256k-fluid-storage-block.adoc | 9 + .../storage/256k-fluid-storage-disk.adoc | 9 + .../storage/256k-fluid-storage-part.adoc | 5 + .../storage/4096k-fluid-storage-block.adoc | 9 + .../storage/4096k-fluid-storage-disk.adoc | 9 + .../storage/4096k-fluid-storage-part.adoc | 5 + docs/pages/storage/4k-storage-block.adoc | 9 + docs/pages/storage/4k-storage-disk.adoc | 9 + docs/pages/storage/4k-storage-part.adoc | 5 + .../storage/64k-fluid-storage-block.adoc | 9 + .../pages/storage/64k-fluid-storage-disk.adoc | 9 + .../pages/storage/64k-fluid-storage-part.adoc | 5 + docs/pages/storage/64k-storage-block.adoc | 9 + docs/pages/storage/64k-storage-disk.adoc | 9 + docs/pages/storage/64k-storage-part.adoc | 5 + .../storage/creative-fluid-storage-block.adoc | 11 + .../storage/creative-fluid-storage-disk.adoc | 11 + .../pages/storage/creative-storage-block.adoc | 11 + docs/pages/storage/creative-storage-disk.adoc | 11 + docs/pages/storage/disk-drive.adoc | 23 + docs/pages/storage/external-storage.adoc | 23 + docs/pages/storage/index.adoc | 61 +++ docs/pages/storage/storage-housing.adoc | 7 + docs/pages/storage/storing-externally.adoc | 32 ++ docs/pages/storage/storing-fluids.adoc | 25 + docs/pages/upgrades/crafting-upgrade.adoc | 7 + docs/pages/upgrades/fortune-upgrade.adoc | 13 + docs/pages/upgrades/index.adoc | 11 + .../upgrades/interdimensional-upgrade.adoc | 13 + docs/pages/upgrades/range-upgrade.adoc | 7 + docs/pages/upgrades/regulator-upgrade.adoc | 13 + docs/pages/upgrades/silk-touch-upgrade.adoc | 7 + docs/pages/upgrades/speed-upgrade.adoc | 7 + docs/pages/upgrades/stack-upgrade.adoc | 9 + docs/pages/upgrades/upgrade.adoc | 5 + docs/pages/utility/advanced-processor.adoc | 5 + docs/pages/utility/basic-processor.adoc | 5 + .../block-of-quartz-enriched-iron.adoc | 5 + docs/pages/utility/construction-core.adoc | 5 + docs/pages/utility/cover.adoc | 11 + docs/pages/utility/cut-silicon.adoc | 12 + docs/pages/utility/cutting-tool.adoc | 12 + docs/pages/utility/destruction-core.adoc | 5 + docs/pages/utility/filter.adoc | 31 ++ docs/pages/utility/hollow-cover.adoc | 12 + docs/pages/utility/improved-processor.adoc | 5 + docs/pages/utility/index.adoc | 34 ++ docs/pages/utility/machine-casing.adoc | 5 + docs/pages/utility/processor-binding.adoc | 5 + docs/pages/utility/quartz-enriched-iron.adoc | 7 + .../pages/utility/raw-advanced-processor.adoc | 5 + docs/pages/utility/raw-basic-processor.adoc | 5 + .../pages/utility/raw-improved-processor.adoc | 5 + docs/pages/utility/silicon.adoc | 7 + docs/pages/utility/solderer.adoc | 20 + docs/pages/utility/wrench.adoc | 10 + .../viewing-resources/crafting-grid.adoc | 19 + docs/pages/viewing-resources/fluid-grid.adoc | 23 + docs/pages/viewing-resources/grid.adoc | 93 ++++ .../how-to-view-resources.adoc | 33 ++ docs/pages/viewing-resources/index.adoc | 8 + .../viewing-resources/portable-grid.adoc | 28 ++ .../viewing-resources/storage-monitor.adoc | 24 + docs/pages/whats-new.adoc | 26 ++ .../creative-wireless-crafting-monitor.adoc | 7 + .../creative-wireless-fluid-grid.adoc | 7 + .../creative-wireless-grid.adoc | 7 + docs/pages/wireless-networking/index.adoc | 19 + .../wireless-networking/network-card.adoc | 7 + .../wireless-networking/network-receiver.adoc | 13 + .../network-transmitter.adoc | 15 + .../networks-over-long-distances.adoc | 46 ++ .../wireless-crafting-monitor.adoc | 39 ++ .../wireless-fluid-grid.adoc | 39 ++ .../wireless-networking/wireless-grid.adoc | 39 ++ .../wireless-transmitter.adoc | 31 ++ docs/partials/fluid-storage-block.adoc | 32 ++ docs/partials/fluid-storage-disk.adoc | 11 + docs/partials/processor.adoc | 1 + docs/partials/recoloring.adoc | 6 + docs/partials/search-box.adoc | 52 +++ docs/partials/storage-block.adoc | 32 ++ docs/partials/storage-disk.adoc | 11 + 237 files changed, 3175 insertions(+) create mode 100644 docs/assets/1024k-fluid-storage-block.png create mode 100644 docs/assets/1024k-fluid-storage-disk.png create mode 100644 docs/assets/1024k-fluid-storage-part.png create mode 100644 docs/assets/16k-storage-block.png create mode 100644 docs/assets/16k-storage-disk.png create mode 100644 docs/assets/16k-storage-part.png create mode 100644 docs/assets/1k-storage-block.png create mode 100644 docs/assets/1k-storage-disk.png create mode 100644 docs/assets/1k-storage-part.png create mode 100644 docs/assets/256k-fluid-storage-block.png create mode 100644 docs/assets/256k-fluid-storage-disk.png create mode 100644 docs/assets/256k-fluid-storage-part.png create mode 100644 docs/assets/4096k-fluid-storage-block.png create mode 100644 docs/assets/4096k-fluid-storage-disk.png create mode 100644 docs/assets/4096k-fluid-storage-part.png create mode 100644 docs/assets/4k-storage-block.png create mode 100644 docs/assets/4k-storage-disk.png create mode 100644 docs/assets/4k-storage-part.png create mode 100644 docs/assets/64k-fluid-storage-block.png create mode 100644 docs/assets/64k-fluid-storage-disk.png create mode 100644 docs/assets/64k-fluid-storage-part.png create mode 100644 docs/assets/64k-storage-block.png create mode 100644 docs/assets/64k-storage-disk.png create mode 100644 docs/assets/64k-storage-part.png create mode 100644 docs/assets/advanced-processor.png create mode 100644 docs/assets/basic-processor.png create mode 100644 docs/assets/block-of-quartz-enriched-iron.png create mode 100644 docs/assets/cable.png create mode 100644 docs/assets/construction-core.png create mode 100644 docs/assets/constructor.png create mode 100644 docs/assets/controller.png create mode 100644 docs/assets/cover.png create mode 100644 docs/assets/crafter-manager.png create mode 100644 docs/assets/crafter.png create mode 100644 docs/assets/crafting-grid.png create mode 100644 docs/assets/crafting-monitor.png create mode 100644 docs/assets/crafting-upgrade.png create mode 100644 docs/assets/creative-fluid-storage-block.png create mode 100644 docs/assets/creative-fluid-storage-disk.png create mode 100644 docs/assets/creative-portable-grid.png create mode 100644 docs/assets/creative-storage-block.png create mode 100644 docs/assets/creative-storage-disk.png create mode 100644 docs/assets/creative-wireless-crafting-monitor.png create mode 100644 docs/assets/creative-wireless-fluid-grid.png create mode 100644 docs/assets/creative-wireless-grid.png create mode 100644 docs/assets/cut-silicon.png create mode 100644 docs/assets/cutting-tool.png create mode 100644 docs/assets/destruction-core.png create mode 100644 docs/assets/destructor.png create mode 100644 docs/assets/detector.png create mode 100644 docs/assets/disk-drive.png create mode 100644 docs/assets/disk-manipulator.png create mode 100644 docs/assets/exporter.png create mode 100644 docs/assets/external-storage.png create mode 100644 docs/assets/filter.png create mode 100644 docs/assets/fluid-grid.png create mode 100644 docs/assets/fluid-interface.png create mode 100644 docs/assets/fortune-upgrade.png create mode 100644 docs/assets/grid.png create mode 100644 docs/assets/hollow-cover.png create mode 100644 docs/assets/importer.png create mode 100644 docs/assets/improved-processor.png create mode 100644 docs/assets/interdimensional-upgrade.png create mode 100644 docs/assets/interface.png create mode 100644 docs/assets/machine-casing.png create mode 100644 docs/assets/network-card.png create mode 100644 docs/assets/network-receiver.png create mode 100644 docs/assets/network-transmitter.png create mode 100644 docs/assets/pattern-grid.png create mode 100644 docs/assets/pattern.png create mode 100644 docs/assets/portable-grid.png create mode 100644 docs/assets/processing-pattern-encoder.png create mode 100644 docs/assets/processor-binding.png create mode 100644 docs/assets/quartz-enriched-iron.png create mode 100644 docs/assets/range-upgrade.png create mode 100644 docs/assets/raw-advanced-processor.png create mode 100644 docs/assets/raw-basic-processor.png create mode 100644 docs/assets/raw-improved-processor.png create mode 100644 docs/assets/reader.png create mode 100644 docs/assets/regulator-upgrade.png create mode 100644 docs/assets/relay.png create mode 100644 docs/assets/security-card.png create mode 100644 docs/assets/security-manager.png create mode 100644 docs/assets/silicon.png create mode 100644 docs/assets/silk-touch-upgrade.png create mode 100644 docs/assets/solderer.png create mode 100644 docs/assets/speed-upgrade.png create mode 100644 docs/assets/stack-upgrade.png create mode 100644 docs/assets/storage-housing.png create mode 100644 docs/assets/storage-monitor.png create mode 100644 docs/assets/upgrade.png create mode 100644 docs/assets/wireless-crafting-monitor.png create mode 100644 docs/assets/wireless-fluid-grid.png create mode 100644 docs/assets/wireless-grid.png create mode 100644 docs/assets/wireless-transmitter.png create mode 100644 docs/assets/wrench.png create mode 100644 docs/assets/writer.png create mode 100644 docs/component.json create mode 100644 docs/nav.json create mode 100644 docs/pages/advanced-usage/commands.adoc create mode 100644 docs/pages/advanced-usage/index.adoc create mode 100644 docs/pages/advanced-usage/profiling.adoc create mode 100644 docs/pages/advanced-usage/resource-packs.adoc create mode 100644 docs/pages/advanced-usage/translating-refined-storage.adoc create mode 100644 docs/pages/advanced-usage/using-development-builds.adoc create mode 100644 docs/pages/advanced-usage/using-the-api.adoc create mode 100644 docs/pages/autocrafting/autocrafting-with-filled-buckets.adoc create mode 100644 docs/pages/autocrafting/crafter-manager.adoc create mode 100644 docs/pages/autocrafting/crafter.adoc create mode 100644 docs/pages/autocrafting/crafting-monitor.adoc create mode 100644 docs/pages/autocrafting/fluid-autocrafting.adoc create mode 100644 docs/pages/autocrafting/getting-started-with-autocrafting.adoc create mode 100644 docs/pages/autocrafting/index.adoc create mode 100644 docs/pages/autocrafting/keeping-fluids-in-stock.adoc create mode 100644 docs/pages/autocrafting/keeping-items-in-stock.adoc create mode 100644 docs/pages/autocrafting/locking-and-unlocking.adoc create mode 100644 docs/pages/autocrafting/pattern-grid.adoc create mode 100644 docs/pages/autocrafting/pattern.adoc create mode 100644 docs/pages/autocrafting/processing-pattern-encoder.adoc create mode 100644 docs/pages/autocrafting/processing-recipes.adoc create mode 100644 docs/pages/faq.adoc create mode 100644 docs/pages/getting-started.adoc create mode 100644 docs/pages/how-to-install.adoc create mode 100644 docs/pages/index.adoc create mode 100644 docs/pages/input-and-output/constructor.adoc create mode 100644 docs/pages/input-and-output/destructor.adoc create mode 100644 docs/pages/input-and-output/disk-manipulator.adoc create mode 100644 docs/pages/input-and-output/exporter.adoc create mode 100644 docs/pages/input-and-output/fluid-interface.adoc create mode 100644 docs/pages/input-and-output/getting-items-in-and-out.adoc create mode 100644 docs/pages/input-and-output/importer.adoc create mode 100644 docs/pages/input-and-output/index.adoc create mode 100644 docs/pages/input-and-output/interface.adoc create mode 100644 docs/pages/input-and-output/reader.adoc create mode 100644 docs/pages/input-and-output/writer.adoc create mode 100644 docs/pages/networking/cable.adoc create mode 100644 docs/pages/networking/controller.adoc create mode 100644 docs/pages/networking/creative-controller.adoc create mode 100644 docs/pages/networking/detector.adoc create mode 100644 docs/pages/networking/index.adoc create mode 100644 docs/pages/networking/relay.adoc create mode 100644 docs/pages/opencomputers-api.adoc create mode 100644 docs/pages/security/index.adoc create mode 100644 docs/pages/security/security-card.adoc create mode 100644 docs/pages/security/security-manager.adoc create mode 100644 docs/pages/storage/1024k-fluid-storage-block.adoc create mode 100644 docs/pages/storage/1024k-fluid-storage-disk.adoc create mode 100644 docs/pages/storage/1024k-fluid-storage-part.adoc create mode 100644 docs/pages/storage/16k-storage-block.adoc create mode 100644 docs/pages/storage/16k-storage-disk.adoc create mode 100644 docs/pages/storage/16k-storage-part.adoc create mode 100644 docs/pages/storage/1k-storage-block.adoc create mode 100644 docs/pages/storage/1k-storage-disk.adoc create mode 100644 docs/pages/storage/1k-storage-part.adoc create mode 100644 docs/pages/storage/256k-fluid-storage-block.adoc create mode 100644 docs/pages/storage/256k-fluid-storage-disk.adoc create mode 100644 docs/pages/storage/256k-fluid-storage-part.adoc create mode 100644 docs/pages/storage/4096k-fluid-storage-block.adoc create mode 100644 docs/pages/storage/4096k-fluid-storage-disk.adoc create mode 100644 docs/pages/storage/4096k-fluid-storage-part.adoc create mode 100644 docs/pages/storage/4k-storage-block.adoc create mode 100644 docs/pages/storage/4k-storage-disk.adoc create mode 100644 docs/pages/storage/4k-storage-part.adoc create mode 100644 docs/pages/storage/64k-fluid-storage-block.adoc create mode 100644 docs/pages/storage/64k-fluid-storage-disk.adoc create mode 100644 docs/pages/storage/64k-fluid-storage-part.adoc create mode 100644 docs/pages/storage/64k-storage-block.adoc create mode 100644 docs/pages/storage/64k-storage-disk.adoc create mode 100644 docs/pages/storage/64k-storage-part.adoc create mode 100644 docs/pages/storage/creative-fluid-storage-block.adoc create mode 100644 docs/pages/storage/creative-fluid-storage-disk.adoc create mode 100644 docs/pages/storage/creative-storage-block.adoc create mode 100644 docs/pages/storage/creative-storage-disk.adoc create mode 100644 docs/pages/storage/disk-drive.adoc create mode 100644 docs/pages/storage/external-storage.adoc create mode 100644 docs/pages/storage/index.adoc create mode 100644 docs/pages/storage/storage-housing.adoc create mode 100644 docs/pages/storage/storing-externally.adoc create mode 100644 docs/pages/storage/storing-fluids.adoc create mode 100644 docs/pages/upgrades/crafting-upgrade.adoc create mode 100644 docs/pages/upgrades/fortune-upgrade.adoc create mode 100644 docs/pages/upgrades/index.adoc create mode 100644 docs/pages/upgrades/interdimensional-upgrade.adoc create mode 100644 docs/pages/upgrades/range-upgrade.adoc create mode 100644 docs/pages/upgrades/regulator-upgrade.adoc create mode 100644 docs/pages/upgrades/silk-touch-upgrade.adoc create mode 100644 docs/pages/upgrades/speed-upgrade.adoc create mode 100644 docs/pages/upgrades/stack-upgrade.adoc create mode 100644 docs/pages/upgrades/upgrade.adoc create mode 100644 docs/pages/utility/advanced-processor.adoc create mode 100644 docs/pages/utility/basic-processor.adoc create mode 100644 docs/pages/utility/block-of-quartz-enriched-iron.adoc create mode 100644 docs/pages/utility/construction-core.adoc create mode 100644 docs/pages/utility/cover.adoc create mode 100644 docs/pages/utility/cut-silicon.adoc create mode 100644 docs/pages/utility/cutting-tool.adoc create mode 100644 docs/pages/utility/destruction-core.adoc create mode 100644 docs/pages/utility/filter.adoc create mode 100644 docs/pages/utility/hollow-cover.adoc create mode 100644 docs/pages/utility/improved-processor.adoc create mode 100644 docs/pages/utility/index.adoc create mode 100644 docs/pages/utility/machine-casing.adoc create mode 100644 docs/pages/utility/processor-binding.adoc create mode 100644 docs/pages/utility/quartz-enriched-iron.adoc create mode 100644 docs/pages/utility/raw-advanced-processor.adoc create mode 100644 docs/pages/utility/raw-basic-processor.adoc create mode 100644 docs/pages/utility/raw-improved-processor.adoc create mode 100644 docs/pages/utility/silicon.adoc create mode 100644 docs/pages/utility/solderer.adoc create mode 100644 docs/pages/utility/wrench.adoc create mode 100644 docs/pages/viewing-resources/crafting-grid.adoc create mode 100644 docs/pages/viewing-resources/fluid-grid.adoc create mode 100644 docs/pages/viewing-resources/grid.adoc create mode 100644 docs/pages/viewing-resources/how-to-view-resources.adoc create mode 100644 docs/pages/viewing-resources/index.adoc create mode 100644 docs/pages/viewing-resources/portable-grid.adoc create mode 100644 docs/pages/viewing-resources/storage-monitor.adoc create mode 100644 docs/pages/whats-new.adoc create mode 100644 docs/pages/wireless-networking/creative-wireless-crafting-monitor.adoc create mode 100644 docs/pages/wireless-networking/creative-wireless-fluid-grid.adoc create mode 100644 docs/pages/wireless-networking/creative-wireless-grid.adoc create mode 100644 docs/pages/wireless-networking/index.adoc create mode 100644 docs/pages/wireless-networking/network-card.adoc create mode 100644 docs/pages/wireless-networking/network-receiver.adoc create mode 100644 docs/pages/wireless-networking/network-transmitter.adoc create mode 100644 docs/pages/wireless-networking/networks-over-long-distances.adoc create mode 100644 docs/pages/wireless-networking/wireless-crafting-monitor.adoc create mode 100644 docs/pages/wireless-networking/wireless-fluid-grid.adoc create mode 100644 docs/pages/wireless-networking/wireless-grid.adoc create mode 100644 docs/pages/wireless-networking/wireless-transmitter.adoc create mode 100644 docs/partials/fluid-storage-block.adoc create mode 100644 docs/partials/fluid-storage-disk.adoc create mode 100644 docs/partials/processor.adoc create mode 100644 docs/partials/recoloring.adoc create mode 100644 docs/partials/search-box.adoc create mode 100644 docs/partials/storage-block.adoc create mode 100644 docs/partials/storage-disk.adoc diff --git a/docs/assets/1024k-fluid-storage-block.png b/docs/assets/1024k-fluid-storage-block.png new file mode 100644 index 0000000000000000000000000000000000000000..61c2da63475eb8089fad8afd15e18454d5bbb196 GIT binary patch literal 3093 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 literal 0 HcmV?d00001 diff --git a/docs/assets/1024k-fluid-storage-part.png b/docs/assets/1024k-fluid-storage-part.png new file mode 100644 index 0000000000000000000000000000000000000000..5969df906b42ad8b0cb16fe8a20cbde35c5aa93b GIT binary patch literal 635 zcmV->0)+jEP)A5hdUE>XHp=obQlr61qh!PK={}|2oP(+fGJ3+uwc=YrZE<#bQY|*0&c)D zb!DoJH1RfY+@0qvWU^*48Q;k@Mk9$ zi>*Yv+fQu8<8fO~?@y&tfB_hQ0q*x7K0f~l{Ho8^>2wOt300y|*&5XPd z30N00QMp_Oni&LdzCQ=u9|}0SRYCjf9%z}UR4M_#vJK?#yY|f#126ystQDa9B?8*t z6fhVJK)2fk!{HEgIvvpZ`3k(ddI18~;z+~*48Q<)3m}iY0db=1AfL~J-fbB5dSJ0w zfZ1#YDwPU2Tq+=!%Yo5_4mQ4F!T=25@c@ZLVkJ5=E`fYA(_4l>zuyP*`5cVLW6*3i z!TY5Or!l0o>gWIQXoB{p%2DG#WtDG*GM6fV@z8ZT$^V=PC@IMRq{o z=_BC!N{|5NM@|n$Twe(?00Vd|faA^4??Vm(pLHP;$p;)x^ocF`^|B9! z0py3buAdNL00!`Q0C_T*%u2NGK}R|0x(6-q{iG-ZFo4Gc@E0QtzyJ)u;c))h`2|66 VAZ><+j7b0h002ovPDHLkV1jJN48{Ne literal 0 HcmV?d00001 diff --git a/docs/assets/16k-storage-block.png b/docs/assets/16k-storage-block.png new file mode 100644 index 0000000000000000000000000000000000000000..e719977f8b98abddecfe110be8ebd385435d8c36 GIT binary patch literal 3255 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 literal 0 HcmV?d00001 diff --git a/docs/assets/16k-storage-disk.png b/docs/assets/16k-storage-disk.png new file mode 100644 index 0000000000000000000000000000000000000000..db706e35795476804bf20dc88fea90c90c9ae61f GIT binary patch literal 478 zcmV<40U`d0P)&!H^K zppOF~00A@uP(9>a*M-6`gbs%T6vy$y8V5oE0%!&x7jU^;pxf;R?RGn8yH@sXfA-UlwiXizSv{)=4$8n&4e@GI50Ga~~hr{Z=q9~vwNuVGI zAi2Qf@d!zP&1M6QMk7e|q9oT#00I!;wXrO#y072wL#hRBw_8YFfJm_Mcnm#zI3fT6 z2=HEj!C+9`m!>Hs7ob}3d_IS4+lExX?{qrQWHN!?{vt#G0%#7PIvkx&C#cu!LGl7a zb(m2-h&&TI2Ak69LMqgA8sbrO~XT4;kY6?>c}%JE{5>n01_b5szV*{+o7x(W!EiDG%Qu#QC*THy(Fn9u6@6qaUa`Di({tBe?+md+pwgaR3g$0qh0neF%Z>CkbqSPl5Yiz2NDQAH4Z-52%MX z!Qw#GYvZnAO! z4!{BIjok~Owf8cp?*%~bPy+pv+hFxr2HMFT@W42S=+SNvTnjA$@0Ckn?pJ~wfCD%@ z0NtQy>3&e%^MOrcArr0dOQ60V0;=u<|J;TM2jBqzSpfPlwB2q4`XGWn7^zmPVC|g@ ztR9T0#%Dz3av4}X7@;q0*uF60035*K0jzF@>WTt}e_nDBxQ&HKL|<^|Ya>(i^VG}9 z1ke{Y=6*NG0XTre0$2rUG#bF_MMt`6NzZ3>JpDepXwUskQ4YWX93Fs9I-Q=0=KX_- lxi4}YfCF#<9v&X&%x?l@m#e;cYIgtt002ovPDHLkV1ffhGL!%S literal 0 HcmV?d00001 diff --git a/docs/assets/1k-storage-block.png b/docs/assets/1k-storage-block.png new file mode 100644 index 0000000000000000000000000000000000000000..e2e65a87b6b4fae141ce6626b118162d4e8ba7c2 GIT binary patch literal 3243 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 literal 0 HcmV?d00001 diff --git a/docs/assets/256k-fluid-storage-block.png b/docs/assets/256k-fluid-storage-block.png new file mode 100644 index 0000000000000000000000000000000000000000..24fb290a2b9a4638b1b3b3cbcdc8a9ba5107a320 GIT binary patch literal 3078 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 literal 0 HcmV?d00001 diff --git a/docs/assets/256k-fluid-storage-part.png b/docs/assets/256k-fluid-storage-part.png new file mode 100644 index 0000000000000000000000000000000000000000..d11be7babe6ec02356473925a3cfd31e9275ba25 GIT binary patch literal 437 zcmV;m0ZRUfP)+xeS9GR z0SMSHlgXs2;~y{H$ZX%wg%FgYD1_y5DTL3CP`<^2*YoxG1q%WYfPnonoldJdO#;ew zEQGH!VLqP=-q?gqB$O{5p-I4KG!hVi00iup!C+9;`Eeuk5DTG5CRZzWCHjzga8B}fCmx?KmY>TdMN3amc!vtX!;Rz^e;sbfPfPh fKnNj(kfX^r_fbW_s-Rn500000NkvXXu0mjfs&%sD literal 0 HcmV?d00001 diff --git a/docs/assets/4096k-fluid-storage-block.png b/docs/assets/4096k-fluid-storage-block.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba040a4e4b829f33dcbb9193cd020f2ab4ad3c2 GIT binary patch literal 3092 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%0AjYg3C5USVfkmESeOY#GqmLDJj5P$&d zO{rAMmRl?q&}1@!+U+(Z4>8~OAqmjwbf8M50?CDC=avHzfB*zoZ%ot7mMatrkm~Z% z?RFvg03yL`+lEvN%R`R<1R%g>0gA<9w%l|&h2)2l3Zz!6L6&7fs)diQZXomZ9oqPZ z5CI6FIe_YNG@H$!d_E7!2MpC^Ms>*DzkNYRmt|<{FG2($fMx)4OGGL$*tw zCon@WQmF3>zm-lh^Iv>?qod6xBO@cT!z2=k%{HggY0BsGnX)=QlgR)HAOR%6zrEmY zw+q~Ex2a?@Y0B#O!C(MRPfvjakN^_kZ6}>hZ??5sEl{u5L9ti_M~i2W%jHa|Ukt#( z83&BV<3IvP015EA;YH=_>3eh&EkrBVr~w`&jzg#e!)UylTk01{xgjgX=*f&IY%wOS2aUta?b zz!!XZc?n)Df)7jJczOmdmkYf4PEZ0!fCCS}UzDgHb-){?N~Hq$b^aoS7g65W@Q0*< zKmhFhZcqY9fd4!IUtq7-1AIctCk-uh^kWI^cPqeOjPRnWe$avAMgx&Z1n>hJyfKmh z57K;IXogZLO9}U1aFX3<)Z~(qQe!tZN6FWa4A^{}8fd{Y((&==7)q{?_ zi1OdFI-dU@FWP&5Qd9y+fCCS}lg(x~+pK=@;PrYAIHx*&gjexnHiVKWt(vqTcg~fa7=PZ>$0p%g-L~qkdoHzP&00YRq3`g zYJaZf-VlR9QYvG&%{9y|9HO7^LqYyKHtyl^ZveGPo}54vm!x*004lZ ztBd2$vK{?zA@Z_XaXe-m02J7+jt)NYBcE>18|ef!Wt_g& zX)0$XXZD6Oqu{w`3;lY`@1}j16fd38B4@Dk&{s;4-fkyM{tmj&3|AN;UonVuxfR0v zYv5yg$>QXPZ>?cPXUALR;&Wh!5!WKj^u>64*n@?tbJa?7a z#4pdJ-X6B9H%t#RvrbwrH^oeTAt)6V7JiEy<*B#CecI=`X;<9rL)|n_3Oy)Zj3Y9F z&QGcCfgZatT91lx6YCEZ-AQmmW1}XeCicC%95~t-Wu?chtbC3N22UN2o@7EcHZ}@u z!?HZgI`*GUD|0{Wii7n4Yr@?1zF#z@nTADAFLVwL4sJ+{-X1m1N4>qhQE_n6!fW)% zkt3+M=aRZ|(}^_uwfR@)g#}v=LP5-e#&%k%4V@#VWo8;_$UcpXDdU#@5${ z2{#j!t{8gs1rLyy3U4n)m8|^p^0s10Bh!e#Gs!&61>3nA)Yq9EJ7>s&GwORnhzxhy zPYMMcv~l$iad)cR1_eBca!+D<_T%5uW1~G5-N#u2)xlA8E{``LxtEExOSkRN6VYgn z@{rxGz+*0go_1OYUG#TU$R4PG5qyfynj3HB+|ed5rp+1FJLeY{H7J6h%Yf5CaqjvK zY93~mq7`B!Elpu)gLl@g!~Q#JQe@Y2dYn$$>R~+IzxhmgD)2FlDjxlm<+z+xC7PWi z2wjMHRhBozoJ1&@^VRlWz)t}QQpIE0FYg&B}s)HToLd+B#E`2K;1y`IZ^ z(l_GtL<@t#R>o>ELfa+(_~1i{Y`H0y;vvW&>t4EV+ujp)bNdk|(L3?Z?%{J+C_R(X zFgaJz9opm6+}x=zDYj}j_ccp*hXtx#yxK@~lbEAq*KFz}td=Lg>6uDC=V2vwdp)&w$D4A;o}K#xPQQJs zxqLUMq7J`_>G^@PEGaydpeCF$TiYX3)xhIvAWbt>EeaD?h`h}cu$Qi$Ku`MC zhRDcSujoYqi#-q~QZd7mTF%Y!Bq47fXUcb2bmO4S=iia#K$*i^Jp_06W-Guo>pJM0 zgt=A+z=|uHr64Q=7r~30W{NOB$ta9YH~$$2W>XoKq?)J+yFJj*Ei%{3cPG62`|_kb zB+AD%G&F2NNGr+grM=FO|3-o^0LueHagcNmB@74Qnc_9dRiM31HHV9Avi-He>o;t5 zu6><|yC2vx@In_2&otr(YserY#^agL^pfiDPHsm06llJq`?A&e4MO$Ij1b?u(2Awg zlAHK}0%E_$JOqHudl!JG1IPrrg+E~}^}g4+x>(Wv$@3H#@tRG*``nM6f}jt{0}?u?mHoBTKR zvKcQqmG8yrn~mF%zfPU_gG?_vdAU>Z%)==K1{x1Wq$2$VWY%h=;$jVY2-ACJ~H@E8bHXQVk&U-N;VK9GhhRFV33dt z3^dw*AO~UJTT!%YeyCHIwJZ?_2LaT7q1lM_+cBj6M;4ZK*G7n_9P8$D&#OA%$Oc~1~Yftq*e+=L@!_zX`!&Wphru*s_zooPwt z`slPx5KylGRxA^8F^;-xTa3F(8l#f&7H8fkv&*I{i{~)5=@%{V@UKdQ>8<VV`x zTVc06^mu&Cb)R7IrB~a@Bv&ji3EqFlZfscxG>(_OUvkT6Vz<3JKK!^b$5|k~rE^^m z#W^L^Q3Z$&w_5l5M7;?W&ah=X*#a6Ij@>4U7KCtJo2Lp6D!^s-B3EzmOsTWlI59kO z3&$Bf=`9v&?t}bS?f6w*zKSw;%M!pbVUJ8iTTwpn=LESFMm}{Q-105XSZ4zG{JmP2 zF6-s3-`PsgKiwQE_oL9F_p_Xe2FP1%|DhDu(DSX;Rv!#m|6W1oHX82W12J}>)kI=_ zDzKQq;GTDnptF8DY+$q-I-o&(es`O!j|%tB#Zrl`bI$$!7#G-w)!J=EXD7TU^u@Sq z@R_P?MFwl6;kc78@Tr!{y=zG7uhZGWp{dj~*L+qTCwh{7;^FC37x8m7?(K@oN+NVI zR1R{C^2?{t+x(DA0G@(O4|^Vq2UR-0;=^xU*@XC8T5V6mx@%=f`p|}ODnXY?9@mim zuX~4~i*^DG__J+09$IOXbw`go=j4D2pE$_lrVZvJlC{BNvAPOrQR)Cb_^M2t!-WSR zaG8FIvQPZ$)GT#q z-xj>~33{0eR3tp;#wMh!(APM5*p5591W}b)l%lQp=>)s&B+oav{HuTy0Co~RFLd6k zg(c^L(AeS;21CUf{;}L74daZ2ENA2U9~#@JIRo|r;+by;3_u z^(*??N1VBDkJ@I?Z6=$JrZD)xM(3ueg1~NQXk&epKOg&?qk~MZx%b_o!x>czkFEm6 zA=yBrhgP~ax3*cuUHm}#5D5p0V}|ftkO{acffZKA@S>YPfLhUXRB317j7(^eJX!D+ zfG(cuB$5boxFPLyHiHmemg)AOW@U{zbMh!0-m8o0X9G6FS-9x@3qXM*sitaYYby|W z7b)wIXWiTx)YXMEkVMUpNQ^NDRXOr05?TYYt}~(r8+@S{L3kOQ3kxt zm=Dw*KP#hSq_GZ%T;@j_cBR|4=S#auf)`H-o<=aTZoml;<92_2VJ6G^%mDFe zGTPOC?r6f-dhJ!q5BX`q5y$@vn3Ec4z6+5|WCPH#i4Sgop$#I6q(IW~9BlSv!}G;V zFW7Wn5a!8(NopYF;>E9cQETV7p#N#pN8cnK>kwM$!VY}k4?31^0wW9Gk$%hR;QP^9 z9?`t*49v$}dv6jgBJ@B)YV=siNsbDwW%Qq~Oq><;mqbe4zML zKar*6j7{`Bw|Ty5li|r?pht0scuCR|q>ct^02tj}xia;g3G989yJ%tYcIvanpfn@+ cQ}8;jw*nFStJb}c{YwDXz3z@xOjg?e0epV75dZ)H literal 0 HcmV?d00001 diff --git a/docs/assets/4k-storage-disk.png b/docs/assets/4k-storage-disk.png new file mode 100644 index 0000000000000000000000000000000000000000..adf82e0fd293973fc63c845720f4e4783c4bfbc1 GIT binary patch literal 477 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU|izq;uunK>+LPW)lC5s#|n4e zU$3-rrJcL;qzCR9>wROSl%%pZF1)0mWFoyp^WF6i>uld&@V+AY+D8A+@dtD6E6hut zcJyI^g{a@|yL$4j3`_zKcAMAij9GB|EnBTD2O~#ZhiQ@=N5cRbTzt^JmMNW46c_hOy_q8 zN#5hW@UrC8@4n;8D&h-tEjXA~+<)(U>;3GrY9>;>3%2j)5Nu#*W6o$_eEB8I&279V zxq03iEVg~3HktEEhRK3c`7L0tJvqUgTe~DWM4fsU^ck literal 0 HcmV?d00001 diff --git a/docs/assets/4k-storage-part.png b/docs/assets/4k-storage-part.png new file mode 100644 index 0000000000000000000000000000000000000000..718e9350fd6d30dc12215915f086458aa601bb0c GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV6^mfaSW-r^>&t_-(dp@x4BX~ zSfbmDc-+oSVC0)9oU&G{?cM_CE3zCy(-*7@*!`7dpG)NLT4(JgQ!ae4dzpLf|Lyz@ zIqHf6P8^CYB~w!0gD;=f`y1Yh5} zA;#>`;lFo5!q!*i895vdRPvkc)BMRYU(P%6UkvwZGmh70Tz2*J>ZrRwz#=hUkK#(AAv$Zr!pwE2sp7#%?~^6vZ&Mk++AQ;GI+ZB KxvXb`$#rszDUn!NpVdCXP3 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 oqE4~%DZd8u4m>RQmi3Rpe%&tF)?o(`*4n-j z&7NkD$y%MWr>?QudQsQq1Y^(*mLkr^0MUYis_$(whsAGhsaqewF;TVU*};<2|E`ME zhijirYY}kbP!vB^wYTqiiLD$Xhr@vlCpYPA3!JvpVE?|XqsM>OWX|H^aA08i<;$Ts zuXwf&OMa5?WsdLV-C;F*&OiV9$wpkDfq~`A?JqTr`sbH^*jFh!&*@TE|M#DJ;@w(wPw9#J-Cp|ObER#(|8xCdpp8dZEB-t^%5QY<$|FPZ zZ@>2zSje>en8|53|N7^zF*V{q%LP7|GsbH#T&1;eUAAH!3nSQ_O#f;Hs-n3H#iuMT zx@E`p*q&2~f$_1}gOA)D3-w+8G(CH?8>rKukTK3+=S=R{dI`-grw>(NzleT_4lddC t&oSu(yBko=f&NJ#VGhL>0i%C^7;;lCx-hdZWdw#cgQu&X%Q~loCIF1oqr(6I literal 0 HcmV?d00001 diff --git a/docs/assets/64k-storage-block.png b/docs/assets/64k-storage-block.png new file mode 100644 index 0000000000000000000000000000000000000000..ba10c0bbc6c47db0a53930a28cab9b70708a10d0 GIT binary patch literal 3274 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 literal 0 HcmV?d00001 diff --git a/docs/assets/64k-storage-disk.png b/docs/assets/64k-storage-disk.png new file mode 100644 index 0000000000000000000000000000000000000000..e866a471ba092d968eb3fd7e9dae176285719526 GIT binary patch literal 478 zcmV<40U`d0P)E>kw=G&4LK=0+!O}oP`ZrWl+_&LfdwxTQs2k>ae()WG zb3TK3ju{4r!{K~zy4`N|C;||G0L|X;>2!i_w;R+r5CRZDGXS}PpUW@gx-N7$9H9Mv z4}Bd70SKTOfa)RVI1aSgY@qde4Q;pEht&>*00htsKrY~TJVNL58H(c=S}vDRk|dA{ zBnSfN;~)eefMx)%Zg{a+Kyt%rnnLnLXg;4qa6|wC z5a7K4rfF996-5Eb1*jH0olYUkvLMy(+wC^wc^>rk7a;-=Kyv`q;ixQ2sMqU3@&ZG3 zm{C3CCX)%&YPFz`-v|+a0Ga{FksIFacF?mA$xf#O$qm=;%MbwwpgDjF#P@wj9e6}xRu-cxxKzvECLR|0XV?F zz2Hu#1H$3(R=HemE4SD8`+ZOi6e032YqQz#TRPR(W$G#U+1tyV!`I0ltUWh?dE z0yH>91E$kyzyUY_2kKs_6PWHJeQ zy&lMBvw#C|01n{oFhVyX^?Du1)7L;4TKxiI^#d(eK)ad)bu0Y9^e`pQOrT$mK`0agJKqU%01n{u0Q8Fz^~3;jG)DIa7zcH~kU5CiClENb0lgtY zZ<0nL5wQ2uAP3+8|9JpFY$OB&;axT>F>KeFtPK~AP3+8J`3O$q}^@< zw+9{RB1+%S?e+BU(M5ajPl|E?4&d_ubjs!O#%bUGFtPVVjstK24#301+! T=RDY*00000NkvXXu0mjf`dcU3 literal 0 HcmV?d00001 diff --git a/docs/assets/advanced-processor.png b/docs/assets/advanced-processor.png new file mode 100644 index 0000000000000000000000000000000000000000..25fe3d314339062388b8c951c5a1de76ca242a0e GIT binary patch literal 470 zcmV;{0V)28P)aFp8em6L2>OBv97Mvp?<0T_S*c59yJDc!PFDiy#0 z48Q=}wSK>^baIAwkK7wDole2l1z`XNh*$vM_mwVm;FkyR@%NeT@;d;=-8C4G$6(`v zFaQHYEI_N(Qo7KA{Tg^vKR_-PJb`ER1rir$Kt3dG+Xf8401U9&HJeSP3kA5n0)@o{ z#NG#BpcY{N(E*9%F&GYqz_KjB01UtYtDU^WtX8W)KBVGS5)?jP!CuV<@smR!FH}s^ z1jS+zFaQHEz-s3>j?x7|0OXIAP>|CDbbbVSy&lM9GN93DfK)047=Qs7V7-$Ep3P=J zem@$GfPAr$2ddZWAe+sCf4>o800xM7fMr4E^EoJ$N+6w1gLb;y()c^nh M07*qoM6N<$f)Dk?OaK4? literal 0 HcmV?d00001 diff --git a/docs/assets/basic-processor.png b/docs/assets/basic-processor.png new file mode 100644 index 0000000000000000000000000000000000000000..58b08900dc7e8c98d9f0ace51f8ff29737e18db8 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVC?sFaSW-r_4cOy>81dgqaWjD zTuS-BLM2KmBddGCQYJ^IY#qwMMu{LD?uKgs;?@%?Un;;NTw z-(!ou$2-h(_r_`8P20@KbAW;8L-g&u?OxMUC3oC^pI|kYi7kPF?Z>*-#1$pmZ}XN| z$zFI{cJN~bOT2gsqr`#)#zh)IyPkjMeA1{to!es)%L#?wf8}ao1lST9npi*7#=n&7 zXMgdv>Os}sCX2qt)W`#cG78M6+Mg6yuz)O^@ZRQpuvO*7%&k!m3M?ADmNHE{t@`5o z?*k^jKxGaPB~RSX+{|Hn;_M|?VI$Y*6W7%$AyMOZ)LB3$G5Os;`5$k5%kSjf9UoFr{ wto#b*GkvDKd(MA`0mzj(UMO?C_SruM&uvDm;w{UXficA3>FVdQ&MBb@0HPnlGXMYp literal 0 HcmV?d00001 diff --git a/docs/assets/block-of-quartz-enriched-iron.png b/docs/assets/block-of-quartz-enriched-iron.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba140d60e06aa529e82c8232b25e5b0881ac4b2 GIT binary patch literal 3642 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 F1OQmZmv;aF literal 0 HcmV?d00001 diff --git a/docs/assets/construction-core.png b/docs/assets/construction-core.png new file mode 100644 index 0000000000000000000000000000000000000000..c9dfb7193789f019eb2401d55f3dd4d2f3f43c4e GIT binary patch literal 516 zcmV+f0{i`mP)N3=2tWBvBe0Ns{}u%xg;?z0EWa2oE<2a5B)12d@3QQmdU;qY)u8qyjD(NZk z0etVTz~0{t7=Qs7;D62S@hIsb5CE083f-V3uNTxi`v3zl00TtUrsh3Ldix9ln{kwM zq|kyUdF>V~UZXbG5MTfXV1V$hcX&`qFUEsSvRo;kAFOXrGpR`$@qq2~3s6;44H$p{ z7$CIkaSbTx!S4qtE04fs93fq5^d)|yxVj-Qv#|*ZO00kZ7=QsnyV}cVB{dHAfmP!L zMoOIC0;$H4Qkq6Tct(97SxNcDMZgs8V*mz-@c+GaWw2OoTZtqXW#6L@A2yUd|!R8v5woz;CJBxK*rI*_T=|u{E(Ey zcYnYMeGh=MbF{T~jUJuP{d)3mH*(LEVT-zf+0}hflc}OjS%go&EN1?{R47bMO*t9QHJ6o@;lG6R z_~+^?TzA64il|FPpMrP7c6|;TdA+_)n`7?M=Q&->pqZMw2V#m&SA1&-O_~i33aY`j zFD&Q51 z0vGRDEAVY`I^qe9vGwi{vUagHW_phBdtw~1hzRvRLHb;sh?BESMYJOla=0t=txXzT zL9LvMHkB+wktJIiA@Yb===1Q8fzmNW8Uc$^ebpih=CLVC@P^K3{_H_&!z1{FtV?Ud z+ph*192;P}j#Jc}Kfc3}tp zOm}C?Bb)L_S}jeW=aACW2dSK2u_(qZ1sj67T%NJo3nMFO z2#(!-7RvN3v!Jo4i3>$5@BD=?YaM5TS4ZMgC$>;9Z9}tpUE0CfNI^L`e>?q8u_SeT zCJjZ$bV@M>{7~)6y2LtFP_6Qeo*5lb zp~M4z^=i36XB$3K9*~unVf{BrDnmrw*CuJdpmZV+gA?;hkO3Rq#7v+HX6s>MTy}!1 z$-!elHO?ABj7AlukXg^Pe&%vsF=_G8dx-$8da))jHb0ns;t!MZf8OVl`$dV-QG4pe zj1ls*paTsfn-AaIHJCw(j1Ux)&Q{%K;ZbhL`CGrCfC%8W4Y9JuFA3v0mmtr?xc+2?_32(yW_T1 IHtgho0blT6B>(^b literal 0 HcmV?d00001 diff --git a/docs/assets/controller.png b/docs/assets/controller.png new file mode 100644 index 0000000000000000000000000000000000000000..856d5f825c6c3914bca246d736f8a9d6ce64b584 GIT binary patch literal 2944 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 literal 0 HcmV?d00001 diff --git a/docs/assets/cover.png b/docs/assets/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..928f0ae739c66c6ce1e098fefc4d10070c7a021c GIT binary patch literal 1145 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 H7zzIe;Rts9 literal 0 HcmV?d00001 diff --git a/docs/assets/crafting-monitor.png b/docs/assets/crafting-monitor.png new file mode 100644 index 0000000000000000000000000000000000000000..6b9a169e083700f46a21ccd72adcf74df35a595c GIT binary patch literal 3043 zcmWlbdpuO>AIHx*&gjetGZQnL)Qn4%7<7?##W4~>&94iJVRY4P5i-f;xJ)WCk~S@6 zv|BBTB9dH=DO+0`qYSbd!zP4g&@js7H~Yu)Jb!&(pYQkcyuaV)xxm@(p-VC%0RW)u z<+)|2=0yKnh_+@gIT|Sg0G$%AEv~!y-DCMjqjL8cotuOAtoye;Z11|%(U%Ry0c0BC zATf_zT7& zM6PP}Rc2*nnR?;^9XcdvJTYS_?K^$;Pf&?$9PBDdkPiqbNZ^Pfy!K&g6$v z)6y%Cv|0qEsE2+NQb~#p2VcRh!uO0swMpdQ)Yw{9NJD{A&UVvsUYMO+>pb)E%9hyJ z*riEfkt4&yUOlxjYa%EAyj0=0@a3t3daZ($g?ULhhebd&lfLtwY4iq z`uQ8f6Hl8y3LBSCfBBH1>~GuQLNGxOCWq(3l7aGE$w>iSHu0!Itn+w4Z6FS7b&tLprd1k*>e?M!XOfge_$4{w}v zC{jL+Rcv3S?&=BFgomF56IjXu+DI$_-xiq zZ>6Gfq2Zq8Sa((F;@Tg-PET8YJ%g^p&noJ#ad^qt`^qE!7TCav;Izi;vI70l$<696 zl}v;?rK?h5Bqmb7?9$tGM&b{DNVzF-=KltTCK!FC(Zd^N4s$L8x*+_hs)}%i(sg9U zyJqC}2Glx!o6Vaa{Dq=s#^yK!rs&~AdtSluvLkoZO^XQ}Whfg$^j>5w*D;uVeqo8`BBqAsHvZg`mkkio zHL5KIn_Q((`y3Z&s(brc>j_-Hy>CSVvhB{y zBTc>9A(D@Sk$*Zs>tRZnGJ|Hbt&d_?`p`ve#``O0rIbh>8yoXNuczezZGkzMvF~LB zuX}t8O87Q>mlz^F`M%{rGgdK^#rie6h* z02CdifEd=CL0>fU%c1R^cij6-T!fSH@G85cW#H>>4^t;-zOC!pF-$x%w}zEMWww7q z$i~s19lSYo=9Hqh5Vj7iwnj1MmlFf8cQI+K(Vq6^gcbh0rb$&CWX9Wb)&xbLNdh$b z=d=_dmw^~Aor(BHj<$T-534H-K#xkuf-LFjF=nDeiSQrCt(>4b5lLK&Rh>))A=>gE zE+`T8ciGL|i%V&e?rx(R0L4viygmG}^CJs;m=35c<}v`+J^pIdNT&x6R>sje@9fD; z(S5rWOnKprREmtCj4h$zDK80WY1Rl-rzYOH)(J?ouOda2m0(`(4gioIAZ)A;j0f59hpByus*R&W7r?VMytzQ9CurYHjNNTLhM^n z8vxFjXnK{#VqvR=N>Yg=Q8nEOGePh~(5IFg%b2L*z7h#IboSZi_cFsw`k^k`4ht;RkdBk{Jn`A7 zA^^;&Ff2sT0}K4LSg^cZrP25KC(+!dyl@*9PgU7)ohuk&?=%ewd+8TXk-@VkLy|CzD`?YHUP5R8=zI!fTW&(gwU>Yd-nchZ(Ae7h7&-{l4 zUY~dBSXuzAuG8V)FR~PyiA?gfrw^7k#7EH4YaW1r2FBep1$~kb^!zkDHv$#Jdj^+F zMJ^VO^K6V%stHKsTZ_%)tub!N>He>&!DM4cLCHRJe&SIloHF{_>--w;_ldo3$Idgc z&|Erp0UOhL$IgH@x7VRC zvRNN=-lzjx2RvYEbZozC|L4GLi4YoDo5#v!V&0)F?7-uT1bj;~8DxhBVf)?_>|iq9 z8889m5y;Akn=%dKUA<;_xz;wIi3{wsqTxbs&Us5X>}OjdnUn<-ey-CVast3B_qEK? zJ}x?+)A>($BlomP?whRiYrFLq+IwlQ3)`*|UrH`gK(@(5#&SA7G6AhhVWE!+kbz$x z1$XWxsIUIsYv8nS#icj~WQPQ^(fN^RL}&)l9{{!1$7d*=0+Ya&L~B T8{E=--T^Q7?OV#&yp;a~Xjy2m literal 0 HcmV?d00001 diff --git a/docs/assets/crafting-upgrade.png b/docs/assets/crafting-upgrade.png new file mode 100644 index 0000000000000000000000000000000000000000..5c56cbb79a7d73629c2b169985f9702419179e4f GIT binary patch literal 561 zcmV-10?z%3P)pKj<01PnM3+{9}px^I< zi3`F244_zmXf$fsb-P`VPNzY;-3F~z3;eqv48Q=21#sHrB?7n|Vf$Pbq0HL$(D2;}igr4ool zB7gxHfB^=Zcsy>|g+d|Vbn_xlIIequ-!li!lRhB7UoMw{T(JDX7=Qs7V6X{?!GV9zPATyX6M*^Gc-x0)YU?X0u@E7eWlc0E!35oNAWcM`a4UKW9NO7zBkv0aUA1 z;IzrfO*og!0bSR@&>x5}00Sr<;PybX>^@&y;PGx6ygr#gZc6of9moY6h5_V)NB$I; z0T@8>0CFy)nq?=0ygf{Tvxo-drY7a{c_4%Q`P*OyU;xDfI0ZQ|ki0OGFIMD&<;~aF z|0|3E7(np=gT82y4>(+tJ`BJBiU;6uIAb+m?f1Q4hsf#|00000NkvXXu0mjfQ?K+Q literal 0 HcmV?d00001 diff --git a/docs/assets/creative-fluid-storage-block.png b/docs/assets/creative-fluid-storage-block.png new file mode 100644 index 0000000000000000000000000000000000000000..3962d1bbdb1b2ecc0552c8784ea975dfb74f02c0 GIT binary patch literal 2804 zcmWlbc{r2{7r@UuW|%S57@-C=F`=?%U(%5MmL=`Nh_Z#rlp@QUTv-yLnk!o=ONg!# z+2*Q{EGf&)GUh|0lv0zOd~^Re=RD8(=WM@oo|EY8Xe%jB5eEQCdpoNGLQDTo@S;Nf z(EltKK)lZ0%HrU~!Rb5xsR#RH<5$JRY1Caf3lgbWy-h8@L${rT^=a9NNA8_O88q51 zY#eOu;EC-|OO2dqo$aj3n4Bn&svFv2|ArZ&8uGlv^?X-&Uc=n+!0)d0v;Au^9$nol zi-NiXYq~9R>PO$selE&0I9|i_O6DFN7w|j3G}kW)UC+C6ce|ZiU7D4}vnIQuSad&e z`1I@Z`&VYqBW44n;O(MdGC6!=+0$*DBE>0jElL9B;?Ivt$jZ+*TGp_zIGLA>of+IO z8KQvjI{wnNW)G-gI4vpi$qVy;66Gie-H6>?B50?qO=LJd-@tEL7)!SCR|xv>_k*75 zpdpIa@4=^mDb>LvgLnap-{JqOeWT|SKbIp@SGPp_Ws(9?DEber{pU(68UuQ2S(B7g zaSgo+E~9OU(yEjkv+%z=d}sf6bxZZ9E9=eu^iFrMZDyArov3}6KwJD$(PYs6@P{zL zwM$gL77ys!SXchBykQVP$skWuQXqp{=xW0K4|WcaL<~Y#wAkSCWX#xT)7tM# z%AjDx%rEZRlpQ$#ZNwU*twl>X^UM^JzDaSs|7?fpJ3Pdj@oiH#kKhHzxY5hg&urLH zGdzm|Ri|9N<`uzYx4fd+#Y!oDRRHkb-rZ}>j#*has|>@9QFX=Mq&Ny+x7H`VbtQGr z?|<7WZL^M;hJE#OvEhu=U2yv~;2ERuFs{~}xVXAJZ`jVFVKc8JE^gf$|3r+jvhc%N zzoG2M)5GP*`-(MvRkW}P^{_%r}Uc^gki0;yf7IYd~$44AaQNR4@-Ge_mqqdsQfBjH(FM{=POzk5^ONvJsTpd6$3XFb z6TC0nA6Owy13m-ejG;JK)WXZKk3DN}?0RUD%df)pmcIM;8CiuAf?-!lsu;>5;n*Sa;EFo_ z0c|~VW3_tKqeW-LIdLkG;jZG4wWA0jl-7ybjEAu?yrp#x{QPV5N51PgE1BC}2c2T8 z?_7HVZ#kDm?#T0e)R25EgRlV%TSMv`3{5%*Hw>eT17fht9XzbmCP@4_q)2?AX z#_th$Z?u}!$#C-VO_2DU3p2leuPz(5EXw=muJA@N7uQzjlTAb!i_)lyH2RZGMjaq5 z9z!QUn?5|e@xAX{Qud!@4vL5*VHq-hMA&o?ZoSaEI_0jM`5if6xv(&v>IT$D8DN$Q z+Hv8CpX2!EFOq1Em+dKSxow!X8CiJ4!!i;#07cKwSp;-`5}*(4lGsw5p^&DLUES_i zXsFE2!&)`p&9 znS1D(c;JB$pOp;?7D(FXrq#J2Q80;IU=qlO+!z;xh2yFWjhF*`zq+iH@6Lyb8}8&+8i#2%Ub=%q~TNl z_l2UML?K&BLhS=d^jmd-3r3p|CYB!@dSV8T&fgDz`9uAtp5>z*I8MV8N%(;iMW}8J zsN5b)M#-qF4Gd!g1-bC6cLq-#z)|G6BEOIdx z>#TLv-9ns0J1RnoRq0&M_BBixC4hHz!{V?Dj7*Ew7>`AnP7A3tF3YQ=fvs`VfbA0> z8B#2ew(f-Mb&4veUVQkz$!NO!_B6>f$d15JN1xz0`gJhOBLOj+LN~BK-#4?-Fdfob zvCbi()cw9qo+8u<9B&rKP#w~N3!zwErX3h;oDDT9ZJBtTArA)n`mm;fc1+dtgPpQk z&tRAj37q1uc#xBgg~*PZp3Dugaxzv83bHVkjVWfKkU(8)VH59Rd3Hn&bKYEH5zDJ~ z8-mEp93aQtQ9PI&=Pbh1S3@I=v+dvRpu+7J1Zro-?a;=_Dw>>od;WduVF?+3l@@bG%#Uju)p1DeHO`|<1*mf_P2+S?%0>EyK}EPYRE z0CWvuontJN^GuI(cTuK_?6rLApOyTxe;e2y1_M(}+q^h^@2qYV^p46`R*>lZVMuRk z&(c@<0^x>{p}7+Db^;LYnu7U}Pv2a!V2aQ8)aANcQB!De7teWh6G-ma@Uu2H=v?&Y z=3TcS^2VZCW5YVCb~ZRm=66pml!8(d?zo7v*6z~z*;Lq6P)Nkl7~%b`XGhXy03gi5-GhC-qHXmoQ3PGc@Q*cU`ZR)fSDx)0Cl^A38V4@#dG z{^No3{02#DH6D-0d*kW4p5{dW0uZ3wgD;m0bi3W4(t!|w02Kp}1LRF66XI zUk5?}0#pp3=ppAg4zyaWpyhH2ZMWOpJ`RKc1gIE*{0GkGGn6C=6ow%*pUM!Rz%Jl0Sqz&x35+hJKP?NKq7s00bbwW7p|)(rnl37254~ z&|^*TfV0ubP_Gfgwi)^4|4RYt_ux^Lr4y`EDMqYRaJ!uKmY?Wk$0H=cf8s;nv81-{^(7v&Lpeg4&HohjO;EfZ|$l0IRq z!QJPps=unslamv*s6{PmQHxsCq87ENMJ;Mki(1CEnVA`HZf?$KZf-WdMezCgdGG4# z%3$zsAz*rX+Pk>8Fq)d0jBgw++a`&0C{YH8tg3US1kOy`7(*Z+tlc z80u$dXGUvl>x<#e;I4p{mKGyxgHKFMcqb<(27(~G3UGse8379m3*O=3p}`OY0tyNW z0)rP87Wz;ErDe@fKRP-x+S=L-4Ub?5?+Vc1St$S;nA6i!gY#MiXfPEJ6g)@(rc1{5 z_`$(}!Jbk9LBYa=C%L(~25Uw}t>eeX$A(sON+>ESGJ?YE@W*>WQ-S|3;{+f$tGaGn zD1gCT0Spv0|ATM^eEMpDs=l(aVz|3DP+VMWgb|Qz*~>@)@qo`DKD3|RZ7YMj0ul}V zWWBEv5SqVJ!l&&DRe(xx!zYpucKEx2Ge$sHR~Ih)yuQ9}q$A+9@EX|V!^87nf&wVv zH35m1z1M;#6Y!zIJ3Bi)0s&7?PoV^aS@u%x`O3;l<3oavjg5H(;qmB7ZmzFQ!s_a( z;Yvtn-UkJ*s;V;j`}^(ZyFalhu~^Ip!O2?-2nyfV*XPyO*V|8o2ZMuy#=FdMoW+sH z$44IozW)8&=i%W2>+my(?*(26NOkDDRUf^KT7%&Ee^uB|)*uQP8X7X*w7>yuZtm~z zjhmaBKYIP&yE`uy4QRo55iAQPWq%J zfCm)3P`t_;5C9+p;lV$@etFysxdOt@`||Q~LxXFN>zoH8BO`yHg&B|FN=gD68yoFI z^q2~-DIi|x3<$W3j{x8b0Q}q6=6-c`wV}aveghre2)nejWwY9YuL!I>@S#VHNQW8!;Jb0QYlrs3San za`%YW9UUEp3ebnKPy$p0FO1!x3gBxB02sm)u(PvcXn{h{>4_514GcqT(IPsx8Jh3m zH3h2x_bei@9>u-cAqfQl z?C4YgK((d-P7ey$-`_XfAx!~V(E;bTJ|HnPe&X-k@Cd8n-}Acw6Hr%IXQ%*xeLe-S z(o+CNh3+DCdH@zQ3gCK90eFuiM}w1h4emAyXlQ6KQ~>8T1#rov07{^Mva&LN=?Xdz z(85On?wRAKeK$w}6ruuZYikV(z(~Qer=tMjDFDy@5TZTKYEJ>~k$c8`ElvTbxcI38 zv|e!SXF)`G9D(uhL$|alK!SJP16bgy#-o7TeVQ^E)ekoMG z6fL%x7K5@CvL%X!E5ps$vgDiZk8{o+=Q+=Le!t&2=Q)4a+p*+jC^7&bZ*66MR1%s0 zH=>lp-#-)d89>I`+T6@3tWT7ACc){Ls-;*Vk&<*UD?cbv5T5h3l zJniwCS@xt<>=(p(UJc=#$k~5y(rHJ=$N95i#gh;FL#E1GO(Lg)Cq<>Ti>uwS;-^tR zr*k@26MrcG?mV-+EN)A3e#q|4-}7;y?9{smT4~Jc%6yLN^K;6^vA=2vuRh$hsoO}- zK%pvV*it7s$0+(X_-Dq_~RfNSr!yzpb!p>k=3&HnGR4KGqoaaW2M z`L!wUZtc;p3KhBBZu6ZUY1*~;$z-&5l)A#ciq3t~2mAA88&p}7${ z_GrZWKd(kp*KZpB7}RX|fe3L%LQUKB_F}u!2bk$c$`6puH@j-KmQcVTa?W2-I9MCq zPlVXzA1sG%Dp9Z5=X{e~^3TDTrT?aSB-2YbTHH{i`Lt%KY)f05n%=7uJKlNEvedoq zTpHPa&2}M+x3PCUcF(a$rE8{4(7pKWmOG{E+fJ79-Cpj|EyrScy<6`7aC!E{cj2Ee z7AJ5i5r5w42%c15tJe4IY`S6X;q0 z!ktnNkzi9pmVb`sN;IO&Vh(~VP}$|;qye)p!7kV2ga*9%k=}L(2SqsHfGiVe+W3?N zjd__AGFccbgHlKJg>-G~r+8E~gn((x1VC%9se7X==vdHl9fx0Ckxf!UQEbITaQ2C$ zfRHYDe{nFn+cQTjj!cU9g=gLq70YOVkb~Nz%tRhIWviE6dKKl&W9xaEL?$iy8#Mbh%kqC_8yagNJv0e= zHy9QqMaDvo20~4g4NE%SYY+d4F zP%H61>Uz>L@A`IZp!%XJ2_E+xg18F-U=Y)uXO^=m)?7;aF4^qqs9ENSM_QCGT?>fvwL|K)crxDEH z2ugd4PwDsESj0$*6}RYHL?e&(PTZFh=9|O%&l%5mC}K*mIM*Mr0pe4SK(Q3_X!F2V z1Sj<*y(0|$r_0Os$*gCwA4sp+sHKDzWCb zc39ik0u?mY`JP7u@q`pXxJ3ag`5cl$mNP5F!2i$XNThvB#fLXFw~Z0G^}2WJYfNSN zmAOI&i^X6~u_>?AEBn}BwENO|vwY$FV*ae1W&DW)?P`<@BiBMeo?$ug2 zPQXhjX6gkbWQoohLdg0OSC3bNGE|KBtiDpqwVT4+%^kOEPo0njc`}KHEHKs;NmCW) z2zk##7vS7HXO9z-`}vO^^vgM4|+G;Z++iSa3s&GxJL1&_}*AQdn@v(_Op4 zl!}aq3U@}&3Qoy0i5YZLPR;<;Z7tLJQYiF^q$?O-LkvY#QXEFf)FTbdKbbJ}Ta%X( zsP)QV^8;(vGGA2ObNv$f&SL`=F_^_OxuJNzUNw9gB73sLa|4OC&ZkU2@SpGLe4W4_h+2XYiG3de% z3G9x6!DBLh=m6rIHqn1#I#*V7WkCb+<>OCKUNJK+TP8 zP~v88a!TOZ;{x@xun0z$b-OkdZoMW^Tdv_S%Y#_ld0!%bj11F3M*U-- zls^Wdf$nCoGH1$~Hq%an3LA5RBD_5tRAx{q8H9nNReGoCZxXpo$UDHV0?K$7pWK>f zVEjOosfQ&yH!R`eLz7#)p9_VJKFZ@$9jp;?Bcso~GybBBUhRV7)RcQHPA04o0%vb7 RNq$SPwy-mQc!2Yt{{fzZvAX~O literal 0 HcmV?d00001 diff --git a/docs/assets/creative-storage-disk.png b/docs/assets/creative-storage-disk.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab6d8520ef3b87173369765b45de21942fca89a GIT binary patch literal 477 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU|izq;uunK>+Ox*rs@{QwPzHI0s~{+?*|GT3oQB;&SzF+U@T%&;GZDP!*=0oRjb}~?k}YZED8?i z7&gfj{jHO~mACyu+U7>ScIPa4b|(g=Cp->yjQ77UG~ikIw21R;nsLV7IOj-(PoMMI z!A5;}ad7fUmPzdI%d9>2ar7QfK2a#MB1FrvYmo!UX1Upk5+`#5MI4Vm7A%StpTxiM zZymp9!_OK%-gak?%O)%C<~bit5>#Sf;wuw~0wf^ZxlNe97zsTC!^rXAb zX2;bm$4?1N0u2o3Su@OLpUj>2-0_pECb!Ezjb1n96+tTo%8Z(gFH5X09GCZD zU=nzsCvbb4VrXda>Z@4@q0^fd%(tEaG}hr&+&^_SMh*vtzQ;TMzvB{uKbLh*2~7Ynion+LPu?5ISEV;^f4 ziY4oZdZ2~S7U>c7Dtzb#m=c=z0F;Vl$s)i*uMssc+P5bc=090 z_PT8f=W&%MyB?U^KKLO2#L}Ig&!X>f+{ZI%n=d6Xuq8lH!}ZM(I?J{kdT21=d8Z50 zlFOL_{l^>s?D0@xl4xL*NZ8-)w%BX+?YB)23pk#Aww!S`&3~5P@&p5khP2I`DGDHC zE|kZu56|p9o}BQbly@KhKjzavZGT+c&FpTUf3SVMUVz?oM*|5Ko&yX#3*J9*U3UL{ zv;O{khreOArjrm>6s3afu%}E z@n+6}s=aKt--@jX(>9ptiLV`GkHLYu`ZXn1a}PZK%=mLd()Qbpr=K!?x|6k) zsWQ)KCQu&al*JcUY{@Z`&M=W$5TVmlW5>Vhs@8<(Q@vOtbi{zZhp5^eps{3&)m*+C zZ_5&P#xxyGVtjJcy>8x~h?Cvn3IZUv@@%;Ow8(O)>i;iO&ZafmoKG=QnCa8xw2&ca urAWoc`c6Xz<~^SoWR4fg9N&A>mZ@vrs|gY><5Pf1fx*+&&t;ucLK6VSpz$35 literal 0 HcmV?d00001 diff --git a/docs/assets/creative-wireless-fluid-grid.png b/docs/assets/creative-wireless-fluid-grid.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8fc29f2eb38f4b4779a8c5c18b46b1cafbff0c GIT binary patch literal 573 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU}EufaSW-r_4d}@?5ISUqaXh` z-j$IRTB4w$8&nt&P*cCXt4YJPU{f03-mhIk)RyKDnQW9}zFMWAQajuc-lt~Nc z&Rh5WPg~w~wI?z^eD*2afA}fp>ywtp7VkLEXKmH8WlLayq6#bT<(IwmCwegatT3C+ zdNfHe#Yj@&zWz)fCXfn?cR?$sT$1K%PcWL-JkVyZQVlj?eW|UlF$Yz~hhLAh3AXKQ(T>_?Fwb3d|u|q8Bnu8t%Vm z|5_z`!a=N?73e#IhKA;YPsMiJ|;JIK|1`e`$PU3>RkJ|8tU%i@;q1||yzPgg&ebxsLQ00Zjn A?*IS* literal 0 HcmV?d00001 diff --git a/docs/assets/creative-wireless-grid.png b/docs/assets/creative-wireless-grid.png new file mode 100644 index 0000000000000000000000000000000000000000..81aa1dc30e07254d4e5b3b4f027c3cfbc3ffcef8 GIT binary patch literal 577 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVB+v}aSW-r_4d}@?5ISUqaXh` z-j&ha;^E+Nd!Zj!m-)W^p@o5g%Nvy994|z$@7~es7R)Z{>dK?X%D&ZkI^WwVOEoi3 zUhwn3UR~$BJv+FHuVxv$%)Vxu@2@Tj9xuGZJnwE^xEs#_1}OSaFwIA8YM_o7^Cz3R ze$6p@>_ICT)pfBxxD+bk);*S_Fx9O!fki;^JN!e@SQDQwM* z7W@9N`K=eNsBOM9|H4t-Dk05gx5bP#cJc`fYzYj->hf;K9vfEFmGYmn*B1EGaqo}I zPyH7!wPj6a`zq|8BH6$w@nD0#!;`~Zdv0XB7q$4`^@abw<7dCd@LRqhYAsX$ab}?7fkxSfRqc%v;9+a5 zi74EC*Wt2>!uh#=>Jy%u&E^G$fI-8~%~5Mlop@T*7`B>KYbuwzOO#R$py6 z{E$Jcn-!v}+imfw71v)k{;lH=TP+%)H{Btw=E?Ju-Bb5ev>r|b`@cPQV?>DCCx8D| zC&m+>YwY-qX7XrEKdmtPY}5XK`i5)?4gYNzju*-tFZ}+Q|c+Ae_%$3OmT z)`{@>#8rHDZ}I!N;$EAD0#76?TKKH7)h1hFl6!Mcx|axdAQ$(|3HAq_79L@`ojmQi z`8DIVpMPI{W}ox^ki&@2aYjzaaFDYgJ`tlU5Z`v~*bP%{RC%*BE!q<6L z8#Yd1i95`z#4NbrW(e4OH)F$h$Df$AIyxakfyXR-+rfLU)GmmybFd$F@O7R1_gA+7 zvw_1r_8*0w%al%(P2Rm=J5kU8s_|$Ok!X=@tNV}>z6znH$NpYwKxj~ zy#B&)I$j>E&*OeVNx+F3JNXTNz8eCAtdap7?nP<$=ij^UHt(!m6)=_=JYD@<);T3K F0RTa8-gN)~ literal 0 HcmV?d00001 diff --git a/docs/assets/cutting-tool.png b/docs/assets/cutting-tool.png new file mode 100644 index 0000000000000000000000000000000000000000..c4fc8ea0a0945ebd51f6dcecaca6f3821c185a06 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=&pllnLn>~)ovzDw$U%hdb$Ie> zkEjER9EvX)4LI}|6&s5`ghv@@6i6r(D6&+r%t>&3xBB3v?Zzi}%rc+I{rF z{1^IqOYgqlcBsTsbk*<6%0MCR3u~laTS>bd%3G}zvfYA_<3VJD-`R-kiTWa|;^#21 ze9&?D_@G3Db8j?|6CkIMDe>CsWxLbYZlDeGSUq0dcb5HJsB>jMNM||2`?z8j1qO)w a9OUJV7li2w%x2C2IoH$G&t;ucLK6V~VP)t5 literal 0 HcmV?d00001 diff --git a/docs/assets/destruction-core.png b/docs/assets/destruction-core.png new file mode 100644 index 0000000000000000000000000000000000000000..35955255c415292c185d6eb3db85ae9c11138c9e GIT binary patch literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU_9aJ;uunK>+Q|c+AfJQ$3AZU z&VR%BA48I>Zzm(?c_Z}w z6&6@Cf&^8rn~96JoT=KweCUOf-IoNph65)I5*XML8d$6?cBrJpzt4A&nET=lPpi{| zRZ8M_-n?%-X~+*&@Ix=bhvVk+*Tw?QQ$1`WVl8@}Jv*?=mOVypcEX1B;y}X<9CDtU zA8UQ{_@msNZBLjJB{YN_U*$v|$Ue<*{PpSudp9yd6n%gFPQYltJNx%UVVPT-8#HuW zTwNV(e{@lo(c?1EBnIXqW%~kSPv{i0pLvn@AwjO`<{qB~ax#(8Y__GQ4^~-7 zn@pX`#0GR&$NN2b%O^y--%fBVZ~VNLw_w*Mo?Wt`4z@dv2J-&<+YJm0hgs|a=`PAA z_W6A~_`<wJ=W`6Sr_a*#<(R#9-`6wSrJ!c rwzKVppjw^-44HBbpn%@da#Q|$-FK05X*)}SQOn@z>gTe~DWM4f1;^MP literal 0 HcmV?d00001 diff --git a/docs/assets/destructor.png b/docs/assets/destructor.png new file mode 100644 index 0000000000000000000000000000000000000000..b20e63855add4e698b25d6e6acbd859f54482d0f GIT binary patch literal 1284 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 P00000NkvXXu0mjfN2x=o literal 0 HcmV?d00001 diff --git a/docs/assets/disk-drive.png b/docs/assets/disk-drive.png new file mode 100644 index 0000000000000000000000000000000000000000..01564b76efabedf7ca327345a6ba229766f4bd9a GIT binary patch literal 2741 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 bTUz<~YK@V-d6R|sw+S?RXS+wXKIi@iTDG`m literal 0 HcmV?d00001 diff --git a/docs/assets/exporter.png b/docs/assets/exporter.png new file mode 100644 index 0000000000000000000000000000000000000000..1ddde1203c414a73e7a10a5fc4f240edb65c047d GIT binary patch literal 543 zcmV+)0^t3LP)#m?>S^oRm&H-7pK`Cz9P19^`+eROC2@e3e4Q4Y3V8`LE>vjWx*oLmEYBvD5 z<^TXlwg}qbSO)+J4hTK~pUweE0PqF(0TA0DpUweTzchR-xCS8CLjYv$$Q)pw3h^c3 z5h@hiLc;lX9RYxGU9-i|0=T3Y;;|OTg5#Wq0Ql;IE{684@X~oe1JEE`!8HKi5dau{ z4gc%v|CdjMIAi3`Wp*Hx7 zB50qQWWNDu0B5>@?>zzQS%3Wv4K=#&XZ_vp8vwTre&h(;I`~ll#S`QLP&`qO4Ng%M hMNt$*Q52Pe{s7>-PWv literal 0 HcmV?d00001 diff --git a/docs/assets/external-storage.png b/docs/assets/external-storage.png new file mode 100644 index 0000000000000000000000000000000000000000..6d8b58b77d091d90853c3dbb98c295054cf9b318 GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVBF*B;uunK>+MYMzGedf7fV*h zHwgz>f9P7Ue7E;?>%9`V`f3@E@#G!8Q$vF6(gN4tQR50_brfJhpn$wv+uoksm-`{Q z)%`=ugQD2m+m7E#jjTCz>-*oLf=?#C?VJqz%dT25D$M8Ix9)W!-}zfz0e58~Mu%$}kf?R&iGvzUM8pVtgd(Xq@5r)34RVwfz1|2$^6 zH}{#$tm~gVF4PqNSohk8!73#7di!RE3BOLComFV}K!w3bzRJqyvPmW5goWq+HEd+K zkj<9Rn$B>ur(w=>w(aEmIhYkYZV!5vl$kKr9NI5 zyO=Q|y+NAc&rZI)wHx^kCNUgYxA`5@mr6lp0pz*zgAwzXAt=q;qy+P()s}4CxxO{GM z6A@L}*FVeY17pr-CaEn#8--XrT|V~Ti0IrJ5pl%K_-L%&&hSOn%*(k|ikakh-?Zpk zq;X0*cxA|?`4bp8Cp5g*+jIYYPCX;ATG*cUI+=CJr81JDW;h4`qoVY8Not!A`osW3jwJ^%P)MxW)u z59;Rt<%##+IRDKqfh->mHMbTp>YZ`=@#|y?(~foAUw+pJv=`@{%sT6Vk;vfb>gTe~DWM4f;poVP literal 0 HcmV?d00001 diff --git a/docs/assets/fluid-grid.png b/docs/assets/fluid-grid.png new file mode 100644 index 0000000000000000000000000000000000000000..57b2aec2a45d613cabde09faabf2f1e2fe49de51 GIT binary patch literal 3066 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 T%X7E%YX`0eJoZ;O(31WShVqDP literal 0 HcmV?d00001 diff --git a/docs/assets/fortune-upgrade.png b/docs/assets/fortune-upgrade.png new file mode 100644 index 0000000000000000000000000000000000000000..ec815023fc69fdf7bd35edc60b13c50ba430eee1 GIT binary patch literal 554 zcmV+_0@eMAP)#CU8DL(^;AC$K@aM5| zxeR)3nhKx*3eexg<8kB0n^dh<1AM@|;HQf@(7l`iR|k{e?rZ|^=jZcz5RFEG0w{n2 z^f!q_!nlRQVZfUZ;{)!VdBNN5EO`8U%#Gh)C=>uMn7=RuPyhw!Zz7S1aob&=27Kc2 z;~=MAz|R+pMd0`QK`NC3zkVX5019AvfURZ6xV;p|z{7b8ghC;Z&1ONVR06#=Io^cR z=``^9eBjqFh$w&pSRPTagh7{F|ZnS0B>q6lgR)M^5=Jh6+i(j56~;fVgT`p5#Lzh1@n)uq5oHy0w{px s0s6hs!WTF^qdp3t0G0>PXf#7LAHMGPuMS9IGynhq07*qoM6N<$f<12TApigX literal 0 HcmV?d00001 diff --git a/docs/assets/grid.png b/docs/assets/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..88ccf10c2fae588d2cba36811745d0720e0f27a7 GIT binary patch literal 3027 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 Hu0mjf*@X?F literal 0 HcmV?d00001 diff --git a/docs/assets/importer.png b/docs/assets/importer.png new file mode 100644 index 0000000000000000000000000000000000000000..82fccf72fdbfbb50f8e7974e434bf440adbf46ae GIT binary patch literal 507 zcmV$Sy{@k7ZS6EoX~J69^>T3WFbtao0Ny9nxBw8J4L;BF zW`u|3^W*V&CbQK;&4(JdmhciBPGZKpu5&?PSLon<-@mLIx51+W5NcWgz;<2RwwuRs zd|8^-pS|GG06>enO$)&bk5+Y1goi`HzYf4Qsay7%hH;?j&=$s#;9mo+(8>%eJ%~1e2`peC3dpXf@z)5gz9C|iP zRaJ2T(4o%$fbjs}y}Wwi0U(+Y(DQsIIE-rnLIc@rKUx5G#zVpF^+y0)^+y1BFhY%6 zX92)|=QX~!Yb*fo3`hn5zPG`>HD2&+0EDiycY&-%AOygk2@)26OB#R$VF85h1X{_B zz`NVw(csAg@IagiZUH1S0wEA*f@cTds*)dpm;faCY~U{dB>hzAHvqDDET;c2aI4@~ x02Ddu$OsfUD+HjplQe*Wq9}@@D2k%~O+Q-zPuHg&-y;A3002ovPDHLkV1jv@;FSOX literal 0 HcmV?d00001 diff --git a/docs/assets/improved-processor.png b/docs/assets/improved-processor.png new file mode 100644 index 0000000000000000000000000000000000000000..dcdbf464cc284713537b4b77743ec825b66a73ac GIT binary patch literal 490 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 literal 0 HcmV?d00001 diff --git a/docs/assets/machine-casing.png b/docs/assets/machine-casing.png new file mode 100644 index 0000000000000000000000000000000000000000..c426283a54f3fd397cbcd5a7510ff5f1e2dce6d7 GIT binary patch literal 2862 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 literal 0 HcmV?d00001 diff --git a/docs/assets/network-card.png b/docs/assets/network-card.png new file mode 100644 index 0000000000000000000000000000000000000000..fece38405e7c7af8afc6d18e69c7cce944b95bd3 GIT binary patch literal 555 zcmV+`0@VG9P)6;ogrHSuC-B&<;l*MBR;$%o{eB-zCKDjvzf!4y zL?QtgfB_i5+sKECrfCAVn-_V)%jFWtaU2K8*H^1mAQvpZFa}@%2JklVcwFf&9&8{l zJiG>x$7{732!%qxwr%j|7eWlc06q_Je0!&KFP~rF(fJ0^XcUx6B~Y)|f!ii0H{pCf z4>tY~lmQsP=K+o`uawSy`v8HbA~0VaAUCB}s|DnO!{IQH3*P!uUQ|J7=QtM t9>D7lE%E_}vG2nG4B+zs91iDS%@4|oG5km!0*U|t002ovPDHLkV1nyy<|zOG literal 0 HcmV?d00001 diff --git a/docs/assets/network-receiver.png b/docs/assets/network-receiver.png new file mode 100644 index 0000000000000000000000000000000000000000..abe97acc14929ea0226119128145d73aa24dec15 GIT binary patch literal 2997 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 literal 0 HcmV?d00001 diff --git a/docs/assets/pattern-grid.png b/docs/assets/pattern-grid.png new file mode 100644 index 0000000000000000000000000000000000000000..62a48fe431783cea9b7ad872b3a17b7ecb76823c GIT binary patch literal 3032 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 HtnB{-5Z7gw literal 0 HcmV?d00001 diff --git a/docs/assets/pattern.png b/docs/assets/pattern.png new file mode 100644 index 0000000000000000000000000000000000000000..33bb9b5f647bd3c11ccd0eac71eaa10858aa2671 GIT binary patch literal 477 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 se>#3vYRK0#LT=By}Z;C1rt3( zJ;P+JIo?1+Q#@T9Ln`9lPTA}26e!d7{=S%6rRkB`k%=miCEPEwHCn{PrKOydGB~4L zRxET_^{HG44 z>&ISL@7MTk){jFVNrzR_%+`HU{(k$x=S2RTm@Nl32C;3qehlJ(KUbRyr#7#57t~-s z{rvDVu^qKr*q=>fzOe7u{ewWwHV0yAFYY+yc=0)Nh1H9O*X^Yn$~G`RJDhnTPFh}~ zfpH4EMxLI;^$*XN#zy}Y4&a+6zxM|JGy?`^4St1_>!$RqmU*Jj`e4ZgxydnL)e4Yc eP+>U#o6Y!=XQa-;hr+-(VeoYIb6Mw<&;$UNrUBKH|)cL&4fB_hQ0m^HBZ&OhhP>0a9 zw)nyJ)_O^07lZ*A;GYGM7vNKe(zOJ4Z?Dhb_QnLyPY=K}FOdlF?LioT0UQ>i|S#jl;uR07EN^SE80p}rQ>xvGHWA4C{{0UQ><>dVXM zX9OJvkry=39|H1#gX%_9O0Bv`ou{q_i39)mx3>(y01gXa6=d8P1~S0c16AAd=l`RF x0T{qx0lo%lEb7YsKn%bD48U<5$8nr9_W|BycY7|_xqAQr002ovPDHLkV1hw*`Dp+E literal 0 HcmV?d00001 diff --git a/docs/assets/range-upgrade.png b/docs/assets/range-upgrade.png new file mode 100644 index 0000000000000000000000000000000000000000..c4fffbac4f52027bc9b08d3177d05266577d4d46 GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVEpar;uunK>+P+*-cErs#|ocs zV#+Mc%*e~i?fAza>dJcY=u-2n0Hus>4i&CPP6E7s6LonTyUg`g6gROb&T0;ahrMy^pIXu{zfSn`N2uqmJk$A4ToE~U87u!J zZRA*VQ3L4Igob-+6FoF`7g+Gj$%}i!=|5k#aicc3&%8NIKmP`;WO>r`l>Zn5&{2DR zRfGb|#I21T;wt`_bo@TR@TvH+N#p(Z>}`n+`{Fqafi9DKP;q$mn|r?I71ag~8X`JhJ{U9ii*bBHeNjZEvbP0l+XkKm2K&N literal 0 HcmV?d00001 diff --git a/docs/assets/raw-advanced-processor.png b/docs/assets/raw-advanced-processor.png new file mode 100644 index 0000000000000000000000000000000000000000..734360f7352e97a527e3a9c457c9e0c810cbc0e9 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Pd!~6Ln>~)yt=`Ln>~)y36%_yw1t5$RIGY$*@zq~imTrCPxa33eJQ*L^#0BHQ3KQs1pgxMe?PV^ zQ>v3uqJeRr_w8-R-tE%MykD+)z8EZYZ|N$n}#G?PJ8Emp)?k(VcuH{zGU&Xg&`uXCI1u7e_jG~2wMUJTg5h=(>-^0 zt()}z_oT-bm;QRNIVu=3FdH1$?Gl*sW?AN>SG%S?vX~b4-@SuT;=ytD9p00U+}Qi? f1V|0UsTI@h+tN64KIpgI2MKt(`njxgN@xNAPxyJW literal 0 HcmV?d00001 diff --git a/docs/assets/raw-improved-processor.png b/docs/assets/raw-improved-processor.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c23cc429e146a253033a9eca59044a85844ee8 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU=;FnaSW-r_4bCN7gM1`+eb?; z^%-dyQK9S^4|$_l)@^b*sI0Q%qG6KHqE>MZ8>b74l)^<>+5+-6^>T8$ZTWHM-~Dfs z9^2Sg=zY+OKhF#_mw_Q-!}V*^cJiLzrplJUz!stVx8m}hearhVJz1>$b=7MjW&;N1 zC8vvRjm&@VoOWz++n0MMJ@;?+)+}uXN~F{@q|~3iv+thQrF3)sn`?CMhAFSClJ-p5QY8E`zrtNzAqpX+hLVL?%)F?H~|K7{}YUPCBIhD>6yWi83s}%Juw*=hxc`L zRd=(rWMN@pVPRomVPRomVPRomVPRoWv}m{6F_rb%R;v|53uipbe7#!$Z;B0C;(M`Df!g^$!jXLumO-rjZ)3R45pMj8Mpyr<{14}f!;05&%_MKn&~ULgQ*Zc`x$H18KS z{cjo}02tib+LG6uogER3^Lpk0{1Mlq?5F%k+8IpK`0nnmGmLu#!1oCt*BX$N>OKI7 z8F6)WCDLin>P-MJMRPO_08Dw@FaPL`0a{&M&94Y%Rdbr=XE`Nc{Nm!mL4Yv734n$m zJ>oj;pSw}~wL5SCP!DngFzL$8PkVeR8U_Fj0RT|ZInQC-7tB{j#-HB>0L|{uwLwmS zsRGcZCWXW=qyhL@KmgkO-rk2I%?x5#tn})gTA} zqX+=|`}-mQccn`OC{okp{r_M)O}feFvaiF3WQ; zj?Y2>(CCZ3?q~g{A>$zcRP|RBS1J`T|M2i2 zp8)`V2LeFxPDesX_qoYXZ#T zei8t^;Hkg2JJtXK(DkMIGa6e5U<&Y1B$qCb1R$*wgaGI+K(#vqXP!my`ubY_7SbQr z0N@wFTuy|N+F_RQBmkJ(1i-aE0U$dd7Cx#nYLQRf$UUb40B9~7p|m!b_FM=6(pUqi zcKZ$h7e6rmJsOGtKxYlEaU{mBk?U4i1DNFVJ^(yN0ImqW1EBeOZxBC@3M0&O_eTKS z5CH%)rqCzCSpa0mH)?SJ@a^{>5dd(rL;zeqLnwgD%gbWE(5J!(y$Vd40;Ntbej4_~ zydH5M01ra}fZOW10HF5+p)LRb`fR`lK;vBh&t&d@1^|e=K^}4GQy(9KZ+z~43S$k> z(;zejdPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0_90WK~#8N?b$&{ z(_t9L@ioyVTXgOy)F~J)F9uy~J4uXr5Sj|HYn0xytr@Pd{pr*p5HDgvT53Z#y$Czl zF&G(i2|9F))nznkT5fCb`yG1UrfY8Q@;;x-^F8X|dH#Q=O$cGMbDSMBGBQ$S*0r&* z(b1pD&S@<9062|x=KH4ayk%J|a5|kVn4Fws!CBt~SpiOC$qnFan_w`g?0hU1V?ipF zVnHAfU_qr)VL>z+WkI`df~)|ivE&ADo?4^ld~Ii0FcyByf)(ot3w%BwtG;A1$%0mI zf~)|ivE&AD{x^N+^_|?@++@Mnqc97~mGdk(vLCV_l~8YpeiQQfJPQ^U7Ff{iO^_Af zG?v@|&SN#b^V)O1*Y=wQhqf*jRKI*+LACE13-tGd!NEZmxLht4H2a<)E5KH>dwEi)c1=1 z{(crLE-td5yStkO%gf7h15P3z0H?7U-hk23QRM~%F27^Jn@6wb8~Yn@Or&0*xlV_f&4AdfP4U)#%g#2p542o+t0f6mvQ<182&8e)O|eZR-vZ?XcM#*!Prd92xxdIM%+Us;fS zaghaAZ`@?T{pSptnwnxksZ?UY{QNu%{C++9=n-Fcm?0H?9!25@$a{=ddzQT=`)lgV`SXOb1*G?wunfDpoD aHrpSdNX}#Ms=HGF0000V@nbGkKC7tAZL-`KK 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 bTDb^)d!%*2J&&_R*`fostA|SkizoOmcBeLL literal 0 HcmV?d00001 diff --git a/docs/assets/silicon.png b/docs/assets/silicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1233aa5019b813b6b5e6ffdecb89b17df6144f80 GIT binary patch literal 369 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV6^abaSW-r_4fK+ufqW{Z6EIi z-CD!ASm?4>@4>7~w;pWwcKpcfsNp5v-qhvH9mL`&60?Va-SNo5-2sAodv-iKtHv?! z(dPs2na)}N^JiZt(DfC>#A6$IqBD=4{o)Ix3@tYpe5FwdF_cysE$e4(H|Y^ zHrK_E+0S5FVdQ&MBb@ E04s)|H~;_u literal 0 HcmV?d00001 diff --git a/docs/assets/silk-touch-upgrade.png b/docs/assets/silk-touch-upgrade.png new file mode 100644 index 0000000000000000000000000000000000000000..cc252273840e1971838c7ce1cf0d01402f05141b GIT binary patch literal 563 zcmV-30?hr1P)9l4xvqpPK#Fc0j6#A5!4hFL^thPv}q%>i#9F?KY+_z4#TLZ$fSEgm;v); zA)!G*F%%W_!pzew&vh-5P|SR;8-6QGeEz}B=^PzLqtR%lIH6F;yhQ;NKmq3az@1J9 z42MH7cR>_D0W1p;kH?Kyuh#?VbQ-kVZP049z^4nM019APfKf}154_TT0Q`ER(Eu}l z;iLcxU|9hE0KCNbK&hK+@TJlP{PX>OA8?RDp#Y{HL;)1QvH8Ng`d9wzkjh< z1hH5QD1ZVez<85PCXH7l5&^t~7=K{j#U0pwFu-|y0sQ-=QVH;Z`46T53ZMYvO*9%c zUdIQkfG<4W8)W(a;`8Fy%jGf%1OgzF$$*Jp2q}O9SRUZ(o@>0G%06({&46$?4D$Ir zs8*|B)RN;RoXuu|-|q(#zagRk3SfDF!yVUn{T(=8HL zzYDAY3SfBvo>bg5UL551yASNgT)<0><#IW|K|cIxumUK6|P zYv#WdrT_|Hd4O>rwD1iMXWmBv6u|NT8jWVA<`p2|^>2@3jEw*Q002ovPDHLkV1hsn B_mKbq literal 0 HcmV?d00001 diff --git a/docs/assets/solderer.png b/docs/assets/solderer.png new file mode 100644 index 0000000000000000000000000000000000000000..e2332df2933ab01a0eba796e64c938c2e418d6a1 GIT binary patch literal 5157 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 literal 0 HcmV?d00001 diff --git a/docs/assets/speed-upgrade.png b/docs/assets/speed-upgrade.png new file mode 100644 index 0000000000000000000000000000000000000000..4c05ea2ff34d4cb0d7472caa14a0efc499b330f8 GIT binary patch literal 523 zcmV+m0`&cfP)8jfY3Qh??^*L13{N=9lCTWbSqsPOD@2%&V?wZ2vHmroD{8~VD08qib#=i zx}N793?3QEpjIOIdi;&3>e1CHyuY8M7z00ubi1y3duuv{*|$pv8m1~4pu z@B2zOolZfeQUT-f7>q_E@b7{!00S5nAZe463zj2~_xt^wjxGoTFo0nJ**JV2>bQo8wk4hDk( zkSDxat-yA>-Dx-+g4t{a)%?8L>uh&3+ zzS(R7xnTK&F#rQFK)NXwi%R!+dk*Aoh zlmQy*GXMh^9v~^m zrGw;!k$kZt7c6hSj{aX^48Q<}2T1#(MLyuLPJI}F0Spho;c$*>z5&oa;?Da0B}o7P N002ovPDHLkV1id1*ku3! literal 0 HcmV?d00001 diff --git a/docs/assets/stack-upgrade.png b/docs/assets/stack-upgrade.png new file mode 100644 index 0000000000000000000000000000000000000000..00c427364ecfdec7bf91dba37714510c82393cee GIT binary patch literal 554 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVEpLm;uunK>+P()Sxk;1t=}1$ zR_1>4IMv0~ZT2!~iKnoK_@#(88<#cAT6qE?I-+YtdKV=4q>DCrOxTe5ea<08ACt7_ zF+WyaooRjl(9QiH_b^X?|NEleo+Z;+JQ|XjDjFxBWQow5?(nF^qk+XjO@X6H<6Maq z>#3(k26Fw47c*G?SSt!CF!pg8w94qu==_PFv}z@W8EI5`(U|K z)>f&40*J~Du?6d|GmCYzUU*x^IC(Xt6$d7j1M9q&28pOoKh3zTT|BR1^G$}B*I%U`{5O~4 zZ4f`B?!yFB^hRs`dG|uO{BsQZK5h^_bo{UZ%cYkl39sD2lCS<5i5~sQyKMbk3-`s@KKS`gq$2w#LwnHj%ZwEVXZo-` z_*el`)^MNq;A@75Z1?8-HLP~xdJvHOXa*pEK$0ZT^?HT2+b!fc4z%0tAQi}J zwSry_LI47229Wo_%jFW12M&S&k~cz&#R3|QMv&ZOGJyy{00QJ&tyW93-EKGNcsxSu z^%{~FvHgAzNdVV%p}}AP$w`oQyA2V500hXldcB@zt5hnG>fvRx*+B9Ihy)uBhmh*P z#bOa^G#U^A2ta^*t5&ONw$teZ$r~jV$b3GB`u#p6Hy)26!!V#`vkCqC!w>-opgDl* z;plumL*;TAk}oh+4>R(^i9B$(+lAi#Qj`D$&?*=z>M8y9)tPNxHX-JhfgKmg4F{(6yo`NIqW2ta_huGj0O*$TRi00ht+ dfaAE2+5-Uh-mv9L5}yD7002ovPDHLkV1h(d&W8X1 literal 0 HcmV?d00001 diff --git a/docs/assets/storage-monitor.png b/docs/assets/storage-monitor.png new file mode 100644 index 0000000000000000000000000000000000000000..1c2373dc7283fe962ac18467f9d1a2f5a30c2b89 GIT binary patch literal 2502 zcmV;%2|4zOP)4};mTUW!y*p#?6&s@16%Z_p_0D?f*gJ{{%CR23@<-3{R4g6GelM<{?mZxFX{->!h( zAdVkDUcrbKxAyk-NMB!Hr1$mfidOgD(3d^dr+>>ldGaJ85#BrQ-Mbf&h-=rbMZ7n( zwY8OgdR2#S-@cVTefkvW?db{O;Z4@+Z{NQCPWE#MU#2H}ZcipaJjq%;?G4W|apLLI zrxm?H!{o+|8xe(fhAp@jEgt;i$B!Yr`1<$Xfgm75y+Gjwy+Q(nhDHdV@$%)%fCPxH zY-lhHUc7h_kN}`aGNT|tMbss9baa${c#E@gQvih*@87=}kP5hb`Er11R6RuD#rpN@1A`9E^3+>gC;(v)00@X8%0YX}BD@yp zKB~X>1|b1RQFwn$0vHYmK$7lTyLN2=0o%844-^jWT}cA^vmip@wNL>C`tadHK;gam zD?9;2cXr{R@ILj$8j+!Zue169{yaTKP{L9m_4~GM+aeM`aaQ=vn>R-W6tHU5s{a(0 zUTaB(_XSPbz5Sy5vrtaj101@%cYE+2px=Gw@Zf?WAU1B?7*Y7ilP4DwuwuoEKrImz zxoXgBzynB>hjl3m=hL8;&5pm$jvYHH@U?*l7n3GU3KSBsX3d%?0M48_6FGJ2RD}qJ zflzpV%r977+Ix$_=C!zLKzbjjm3Qsh718y8#{9Z<>mmv)5HNM>)M5fy&ZZ*#%}$>_ z{qMpj=@F8_W9hi|FbpFP?(p}bp`oFotE)#c&J~uTC%nbQqD6}Wg#>5_AmGrULxEI; z!V6@0rKdNfy}(-<83^FH1Xn>spn^NB{Dil5wH9BnU_k%@g=@fp0|x>Kz;s@ZK!`4w zaMg+&iyWRqV4lN@QUd7W1m_wgfQnA=i4!MQZE*z5n>Q~|w}AA`DKai$`SRrg%NPvPvwH6;cc5I+-0qXuPfWr+0 zsQalU5FnNY2_wIkM&xlk!2Jp}<2Ob@4) zy>#hPVAG~eAv~n>I6VOYdBGulOyOtFoLRgGN`O%7BS3J_DFLw{ngG!uDYh>c2vAp? zJ9lmj#KJ`agu1xT;|S#W0|n0$pzwtS=t5n9P-p~*)^d*!jBgjfx&Q&J7Z4!k%$XAf zsB0=b0@5K=G`I_J5p@eVc<^Ar1pos09RZvlxBzMi0u;Krxj70DRCR@4xpHL)jDUKB z=k)|?K-~gZ5T(-^Lm?E!@(@4(OJo;tA)C?!0z@i6;SoUft`&U3gb4xv{f7x)YD<^I zE`TF41f0l*gYZ3qgt!1*gcdn@0#x7#?*gi|E&`l90jvWGZ-)`U9E||~-~$2tj(|`A zGa(2NnjKt#NChyx6>0rE0jY>oK%r?+0;u8$@Rk>v8IZtz%oGR^9a(S$h@t|Dbp4+q zfMS*>!10f_nI0uTbar+QO2A-)4@rQYs42q*(3SJLKSj|6gw>)65H5g?%k=5f0|=lDty`l2p+iUnFhpEHSOI2BUIchg$rHd3_*nvG%$QN10I_uG(kMV^!{Rl9 zp@9HE!2bRF0|?Ob*=bf2z}|ka!Se(td|?4PK5_v<`*s8fdW7Qw*!$-R5E_>V(DcM% z%5VxObSy3b99FmhKmc{3ng|3C+=qY*@O3~n0fP}yYcEhpfQlet3F!jFE_;mLf&iIT zuz>{VX9TEg4pl&r-C&`GkOVO13CZcO3uw%i$N~X?0HN1%0lH7Gg8+7D2;g9|p72Eu zMCuZtaftwiK>F#73*Z9`m!Rh$KJ1ftc3tt9Ra>N6L|uv6~v-r-otb3 zR#*U3D~1RVJIWFWrUK^z!e@=m%~3#OV`Cr{kj?@{&i~Tjd%#xdgA~J}eNBe&Feg9|WZ9fLa1l6qX_6dwplvzA>67f?(<$ z1gBg3@>erRo`5AwmedTc7N)4BHDuU>4<{907*qoM6N<$g8eCDjQ{`u literal 0 HcmV?d00001 diff --git a/docs/assets/upgrade.png b/docs/assets/upgrade.png new file mode 100644 index 0000000000000000000000000000000000000000..489c689d4e07ecaa50b2d670939484270f639aa2 GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV7%<<;uunK>+P+*S%(57j(v=2 zxM1n+=yJ3_`l7%^hYs)Ue6hPkc1_jmQx$&@@w}-^)9JC^j?QZb7k*>&TF&>h#P+h7x-O$H3i5@HT<4K_z6 ziJeQ^oN!&C`5=Rg4aAg7dUH-cb=VlevYV~*vBaNWiYFO(5-J)LIHu(7jcdM{!}f%A zx|eFe%8+fRo_}5tpuzC-cl%+*4>tTjQw(l9xrT&`SHNNQL=%NhhO3OvF%g+*nU==YREp%_9*W` z7%Pu^5+}vAixPi6ef{FUb`LPjJ}_j)Z#ls(b8RI*Se1p$xxlmhA9DN)4jC_<1dL?{ MPgg&ebxsLQ01g7+od5s; literal 0 HcmV?d00001 diff --git a/docs/assets/wireless-crafting-monitor.png b/docs/assets/wireless-crafting-monitor.png new file mode 100644 index 0000000000000000000000000000000000000000..aec7aa67699571ce52719913a682169f9287f172 GIT binary patch literal 561 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVEp0f;uunK>+LPu?5ISEV;^f4 ziY4oZdZ2~S7U>c7Dtzb#m=c=z0F;Vl$s)i*uMssc+P5bc=090 z_PT8f=W&%MyB?U^KKLO2#L}Ig&!X>f+{ZI%n=d6Xuq8lH!}ZM(I?J{kdT21=d8Z50 zlFOL_{l^>s?D0@xl4xL*NZ8-)w%BX+?YB)23pk#Aww!S`&3~5P@&p5khP2I`DGDHC zE|kZu56|p9o}BQbly@KhKjzavZGT+c&FpTUf3SVMUVz?oM*|5Ko&yX#3*J9*U3UL{ zv;O{khreOArjrm>6s3afu%}E z@n+6}s=aKt--@jX(>9ptiLV`GkHLYu`ZXn1a}PZK%=mLd()Qbpr=K!?x|6k) zsWQ)KCQu&al*JcUY{@Z`&M=W$5TVmlW5>Vhs@8<(Q@vOtbi{zZhp5^eps{3&)m*+C zZ_5&P#xxyGVtjJcy>8x~h?Cvn3IZUv@@%;Ow8(O)>i;iO&ZafmoKG=QnCa8xw2&ca urAWoc`c6Xz<~^SoWR4fg9N&A>mZ@vrs|gY><5Pf1fx*+&&t;ucLK6VSpz$35 literal 0 HcmV?d00001 diff --git a/docs/assets/wireless-fluid-grid.png b/docs/assets/wireless-fluid-grid.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8fc29f2eb38f4b4779a8c5c18b46b1cafbff0c GIT binary patch literal 573 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU}EufaSW-r_4d}@?5ISUqaXh` z-j$IRTB4w$8&nt&P*cCXt4YJPU{f03-mhIk)RyKDnQW9}zFMWAQajuc-lt~Nc z&Rh5WPg~w~wI?z^eD*2afA}fp>ywtp7VkLEXKmH8WlLayq6#bT<(IwmCwegatT3C+ zdNfHe#Yj@&zWz)fCXfn?cR?$sT$1K%PcWL-JkVyZQVlj?eW|UlF$Yz~hhLAh3AXKQ(T>_?Fwb3d|u|q8Bnu8t%Vm z|5_z`!a=N?73e#IhKA;YPsMiJ|;JIK|1`e`$PU3>RkJ|8tU%i@;q1||yzPgg&ebxsLQ00Zjn A?*IS* literal 0 HcmV?d00001 diff --git a/docs/assets/wireless-grid.png b/docs/assets/wireless-grid.png new file mode 100644 index 0000000000000000000000000000000000000000..81aa1dc30e07254d4e5b3b4f027c3cfbc3ffcef8 GIT binary patch literal 577 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVB+v}aSW-r_4d}@?5ISUqaXh` z-j&ha;^E+Nd!Zj!m-)W^p@o5g%Nvy994|z$@7~es7R)Z{>dK?X%D&ZkI^WwVOEoi3 zUhwn3UR~$BJv+FHuVxv$%)Vxu@2@Tj9xuGZJnwE^xEs#_1}OSaFwIA8YM_o7^Cz3R ze$6p@>_ICT)pfBxxD+bk);*S_Fx9O!fki;^JN!e@SQDQwM* z7W@9N`K=eNsBOM9|H4t-Dk05gx5bP#cJc`fYzYj->hf;K9vfEFmGYmn*B1EGaqo}I zPyH7!wPj6a`zq|8BH6$w@nD0#!;`~Zdv0XB7q$4`^@abw<7dCd@LRqhYAsX$ab}?7fkxSfRqc%v;9+a5 zi74EC*Wt2>!uh#=>Jy%u&E^G$fI-8~%~5Mlop@T*7`B>KYbuwzOO#R$py6 z{E$Jcn-!v}+imfw71v)k{;lH=TP+%)H{Btw=E?Ju-Bb5ev>r|b`@cPQV?>DCCx8D| zC&m+>YwY-qX7XrEKdmtPY}5XK`i5)?4gYNzju*-tFZ}*4>ua*Fbw!Qp` z0J?VUc~;%84^}b7*ySbj)a6VV!mJ@0^PBFN+^IoR0djm*0ka`uoLl zyi86UiY)?2#J{%f;mNG=^N(?@)9Wq0v?u?pgu|4FkJ1b-^L;3I{DparthKsq!uL)5 zA1Yqk*cN#;B$|F?D8GL0?5&?0i{<1jBoj>ZD9tWrCWv~k0- z%&bshhVsAL83ILKaxi>kR$=_`E*WS+YGfbd0+~7q`L>093eN!RIsM1vP o-!P7e<<4nGd`#<{iw{DIwlLG_HH5c|X2UPx0$@~8E_6}?J(>vT23z|#tJes4x zfKXKTzv21k%9y1=ox8Vemp7k%_L1BCx+Ajs{*T-i2g)#DfP!5|lLW)R{95$(jcwO# zAGN~kaeMoW(oPS;AGZTsq&u(9q+umEM9oMUeV+Ao_`arzdVAjp5cI*Y{5m>Qw0`1(chWX z#q;m>?=CXvxBmXaH)i$KE@pK1G;9vJ$S7``kaU-Sj>z7BHSf#rw5~RP)TOs*+rMS} zXsR35X5HJ=3&ls_9vh@k4I6aVdPgg&ebxsLQ E06VYYfB*mh literal 0 HcmV?d00001 diff --git a/docs/assets/writer.png b/docs/assets/writer.png new file mode 100644 index 0000000000000000000000000000000000000000..0018f6cf0ee274e113d3500b316d84a56bd7f422 GIT binary patch literal 1096 zcmV-O1h@N%P)cA5QTli`>jlc>mnv1EJ(_T`rwc72js=50fqek*Ok+$Gu2FHcOfOqLZ+)uu~~L2 zo^QH)E^KW0@ZrOU4<9~!`0(MwhYueq(l?UbKqI)iB%KRP-xhH;Mo_&ot++5_TJ z-39YVn%aVZc)6-J}0YZHf z01ZKU#C6(NhvO(1j12(vgUkTTx^lDA9)A=K1AvAA0O;tfa~QV;^Dqtb1aSWHW~M=w zz(N6NQ?o+iAEW`;SwH~V{PFRzx&AtOjXwVx8vvbdC%R}|2msCsnPh;j=Xs1%d{=`Y z0E{94oSdA90H8E}74rnpz3hs4sNHTyjiEOZudHMUud+wV6T4Uq=G>5b;gllmrr z%ig7!1^_$@0l=5XX#fkK2DND$MAC@cf@uw)Uay;J4(16U?1W+-;+g>FaouXSoB%Q@ z0oOg(h{t7(T>?Q6OaZ`W>*ZAda6}4o;&9el!kje!ByC=Xb?#BVp z3!dO*Bmi{!>kcpLzjA^@)S34n(145mJqhcHD3!;yJU0|3xWHbP0$VA6Xo07zpEAQ-$w zy>EX2pcJ_H2?s+F0O+j2HIBr%PRMjCtO3mOybS>F5rF9d698eSBj%yTV6rfpEQMj7 zyFUWph6n)APoP|%2&Vy%9pBSf05pHTi2#6`B?92`8A1ar6bfQK*Qde=y$XygflrgQ zf93bHnAan21K?pO0B~Eq5&-mmz%>g1fIb_r0nj+t|4XU;j{pF1H^?I{ed=RFu#KzvyKDgZL`WOw&tEG); `|Creates a disk for a player by disk ID. +|v1.9.5 or higher |`/refinedstorage disk list`|Lists all disks on the server. +|v1.9.5 or higher |`/refinedstorage disk list `|Lists all disks on the server, that the given player created. +|v1.9.5 or higher |`/refinedstorage network list `|Lists all networks in a dimension, sorted by highest tick time first. +|v1.9.5 or higher |`/refinedstorage network get `|Gets information about a network in a dimension and position. +|v1.9.5 or higher |`/refinedstorage network get autocrafting list`|Gets all autocrafting tasks for a network. +|v1.9.5 or higher |`/refinedstorage network get autocrafting get `|Gets a specific autocrafting task in a network. +|v1.9.5 or higher |`/refinedstorage network get autocrafting cancel`|Cancels all autocrafting tasks in a network. +|v1.9.5 or higher |`/refinedstorage network get autocrafting cancel `|Cancels a specific autocrafting task in a network. +|v1.9.5 or higher |`/refinedstorage pattern dump`|Dumps information about the currently held xref:../autocrafting/pattern.adoc[]. Meant for debugging purposes. +|v1.6.x |`/createdisk`|See <<_createdisk>>. +|=== + +[#_createdisk] +== `/createdisk` + +[.alert.alert-info] +**** +This command is only available for Minecraft 1.12.2 on Refined Storage version v1.6.x. +**** + +Use the `/createdisk` command to spawn in a disk with a given ID. + +=== Usage + +`/createdisk ` + +==== Player + +The player name to give the disk to. + +==== Item + +The item ID of the storage disk. +For Refined Storage this would be `refinedstorage:storage_disk` (or `refinedstorage:fluid_storage_disk` for fluid disks). + +==== Metadata + +The metadata value signifies the type of disk. + +**Items** + +[cols="1,1"] +|=== +|Disk type|Metadata value + +|1k|0 +|4k|1 +|16k|2 +|64k|3 +|Creative|4 +|=== + +**Fluids** + +[cols="1,1"] +|=== +|Disk type|Metadata value + +|64k|0 +|256k|1 +|1024k|2 +|4096k|3 +|Creative|4 +|=== + +==== ID + +The ID parameter is the ID of the disk. +A disk ID can be found by turning on advanced tooltips and checking the tooltip of the disk. \ No newline at end of file diff --git a/docs/pages/advanced-usage/index.adoc b/docs/pages/advanced-usage/index.adoc new file mode 100644 index 0000000000..f2c60e41b8 --- /dev/null +++ b/docs/pages/advanced-usage/index.adoc @@ -0,0 +1,8 @@ += Advanced usage + +- xref:commands.adoc[] +- xref:profiling.adoc[] +- xref:resource-packs.adoc[] +- xref:translating-refined-storage.adoc[] +- xref:using-development-builds.adoc[] +- xref:using-the-api.adoc[] diff --git a/docs/pages/advanced-usage/profiling.adoc b/docs/pages/advanced-usage/profiling.adoc new file mode 100644 index 0000000000..83872e1fae --- /dev/null +++ b/docs/pages/advanced-usage/profiling.adoc @@ -0,0 +1,33 @@ += Profiling + +If you have a performance, it's best to make a `.nps` file that you can send to the developers so that they can investigate further. + +== Installing Sampler + +Sampler is a mod by Player that generates .nps files. +You can download it from link:https://forum.industrial-craft.net/thread/10820[here]. + +=== For Minecraft 1.12 + +link:http://files.player.to/sampler-1.73.jar[http://files.player.to/sampler-1.73.jar] + +=== For Minecraft 1.11 + +link:http://files.player.to/sampler-1.72.1.jar[http://files.player.to/sampler-1.72.1.jar] + +=== For Minecraft 1.10 + +link:http://files.player.to/sampler-1.69.3.jar[http://files.player.to/sampler-1.69.3.jar] + +== Running Sampler + +Then you can `/sampler start` and `/sampler stop` while it's lagging. + +Then a simple `/sampler export [name of exported nps file here]` will write out the .nps file that can be read by the developers in VisualVM. + +== Where to run Sampler? + +- Is it a performance on the server, like tick lag? +Run Sampler *on the server*, NOT on your client! +- Is it a performance on the client, like FPS lag? +Run Sampler *on the client*, NOT on your server! diff --git a/docs/pages/advanced-usage/resource-packs.adoc b/docs/pages/advanced-usage/resource-packs.adoc new file mode 100644 index 0000000000..ddd9e8cfd0 --- /dev/null +++ b/docs/pages/advanced-usage/resource-packs.adoc @@ -0,0 +1,25 @@ += Resource packs + +== Color settings + +You can change the text colors that Refined Storage uses in its GUIs by changing the `pack.mcmeta` file. + +Example: + +[source,json] +---- +{ + "pack": { + "pack_format": 4, + "description": "An example" + }, + "refinedstorage": { + "primary_color": 11184810, + "secondary_color": 11184810 + } +} +---- + +`primary_color` is used for the GUI titles, `secondary_color` is used for all the rest. + +The color is an integer representation of an RGBA color. \ No newline at end of file diff --git a/docs/pages/advanced-usage/translating-refined-storage.adoc b/docs/pages/advanced-usage/translating-refined-storage.adoc new file mode 100644 index 0000000000..33debabfae --- /dev/null +++ b/docs/pages/advanced-usage/translating-refined-storage.adoc @@ -0,0 +1,16 @@ += Translating Refined Storage + +== How to create a translation + +Copy link:https://github.com/refinedmods/refinedstorage/blob/develop/src/main/resources/assets/refinedstorage/lang/en_us.json[en_us.json] from Refined Storage GitHub repository to a text file on your computer and replace the texts with your language. + +== How to submit your translation + +* If you know Git well enough, you can contribute new language files via a pull request. +* If you do not know how to use Git/GitHub, upload the translation file to Pastebin or Gist and send it to me through a link:https://github.com/refinedmods/refinedstorage/issues[GitHub issue]. + +== Updating existing translations + +You can compare the new and removed translation keys yourself, link:https://github.com/refinedmods/refinedstorage/blob/develop/tools/missing-translation-keys.sh[or use a Bash script] that outputs a diff between `en_US` and the version specified. + +You can, of course, always diff manually using another tool, like the `diff` utility or an online diffing tool. diff --git a/docs/pages/advanced-usage/using-development-builds.adoc b/docs/pages/advanced-usage/using-development-builds.adoc new file mode 100644 index 0000000000..4673958a14 --- /dev/null +++ b/docs/pages/advanced-usage/using-development-builds.adoc @@ -0,0 +1,15 @@ += Using development builds + +You can use development builds straight from GitHub. + +Follow the following steps: + +- Head to the link:https://github.com/refinedmods/refinedstorage/actions/workflows/build.yml[list of builds]. +- Click on the commit that you want a build of. +- Download "Artifacts". + +== Disclaimer + +- Using development builds is a risk! +- It may contain untested code, bugs and crashes. +- Remember to take backups. \ No newline at end of file diff --git a/docs/pages/advanced-usage/using-the-api.adoc b/docs/pages/advanced-usage/using-the-api.adoc new file mode 100644 index 0000000000..f43e5ae1ed --- /dev/null +++ b/docs/pages/advanced-usage/using-the-api.adoc @@ -0,0 +1,85 @@ += Using the API + +== For Minecraft 1.18.2 or later + +Starting from Minecraft 1.18, you can include the Refined Storage API in your development environment from 2 sources: + +=== GitHub packages + +Add the following repository to your `build.gradle`: + +[source,groovy] +---- +repositories { + maven { + url = uri("https://maven.pkg.github.com/refinedmods/refinedstorage") + credentials { + username = "anything" + password = "\u0067hp_oGjcDFCn8jeTzIj4Ke9pLoEVtpnZMP4VQgaX" + } + } +} +---- + +The credentials are necessary because as of December 2021, GitHub packages still requires authentication for public packages. +The password used is a personal access token that has read access to the Refined Mods repositories. +It can be reused in other projects. + +See: + +* https://github.community/t/download-from-github-package-registry-without-authentication/14407/38 +* https://github.community/t/download-from-github-package-registry-without-authentication/14407/44 + +You can find a list of versions on link:https://github.com/orgs/refinedmods/packages[GitHub packages]. + +=== CreeperHost Maven + +Add the following repository to your `build.gradle`: + +[source,groovy] +---- +repositories { + maven { + url = uri("https://maven.creeperhost.net") + } +} +---- + +You can find a list of versions on the link:https://maven.creeperhost.net/com/refinedmods/refinedstorage[Maven index]. + +**Warning:** Due to a bug in the Maven index on CreeperHost, new versions aren't included in the index. +However, you can use them in your Gradle dependency. + +For example, version `1.10.2` isn't included in the Maven index, but you can use `1.10.2` in your Gradle dependency when using CreeperHost Maven. + +== For older Minecraft versions + +Some Refined Storage API versions for older Minecraft versions are available on the link:https://maven.creeperhost.net/com/refinedmods/refinedstorage[CreeperHost Maven]. + +However, not all of them are available. +If you need a specific version, build Refined Storage yourself and include the API manually. + +== Including the API + +[source,groovy] +---- +implementation fg.deobf("com.refinedmods:refinedstorage:VERSION_HERE") { + transitive false +} +---- + +== Using the API + +Use the `@RSAPIInject` annotation to get access to the API facade. + +[source,java] +---- +public class MyMod { + @RSAPIInject + public static IRSAPI RSAPI; +} +---- + +== Javadoc + +Updated Javadoc is available after every release link:https://refinedmods.com/javadoc/refinedstorage[here]. diff --git a/docs/pages/autocrafting/autocrafting-with-filled-buckets.adoc b/docs/pages/autocrafting/autocrafting-with-filled-buckets.adoc new file mode 100644 index 0000000000..9eec2f9fb2 --- /dev/null +++ b/docs/pages/autocrafting/autocrafting-with-filled-buckets.adoc @@ -0,0 +1,15 @@ += Autocrafting with filled buckets + +Some crafting recipes may require a filled fluid bucket. +To use fluids from your fluid storage to fill buckets, you can set up a xref:pattern.adoc#_processing[processing pattern] that has following inputs: + +- 1 empty bucket +- 1000 mB of the fluid of your choice + +For the output: + +- 1 filled bucket + +Put that in a xref:crafter.adoc[] that faces a bucket filling machine (link:https://teamcofh.com/docs/thermal-expansion/fluid-transposer/[that for example Thermal Expansion has]). +Refined Storage will output the fluid from your fluid storage, and, an empty bucket. +It is up to the external machine to fill it. \ No newline at end of file diff --git a/docs/pages/autocrafting/crafter-manager.adoc b/docs/pages/autocrafting/crafter-manager.adoc new file mode 100644 index 0000000000..caf2299cc5 --- /dev/null +++ b/docs/pages/autocrafting/crafter-manager.adoc @@ -0,0 +1,32 @@ += Crafter Manager +:icon: crafter-manager.png +:from: v1.5.33 + +The Crafter Manager is a block that allows you to see all your xref:pattern.adoc[patterns] in one GUI. + +== Naming + +All the xref:pattern.adoc[patterns] are listed and categorized per xref:crafter.adoc[]. +The categorization is based on the name of the xref:crafter.adoc[]. + +To decide which name a xref:crafter.adoc[] gets, the following rules (in order) are used: + +1. If the xref:crafter.adoc[] is renamed with a Minecraft link:https://minecraft.gamepedia.com/Anvil[Anvil], use that name +2. If the xref:crafter.adoc[] is connected to a machine in the world, use the name of that machine +3. Use "Crafter" as name + +== Sizes + +One can configure the Crafter Manager size: + +- Stretched (default) +- Small +- Medium +- Large + +When choosing the stretched size, the Crafter Manager will take up all the vertical screen space. +This can be limited through the `maxRowsStretch` config option. + +include::../../partials/search-box.adoc[] + +include::../../partials/recoloring.adoc[] \ No newline at end of file diff --git a/docs/pages/autocrafting/crafter.adoc b/docs/pages/autocrafting/crafter.adoc new file mode 100644 index 0000000000..93b9327b2b --- /dev/null +++ b/docs/pages/autocrafting/crafter.adoc @@ -0,0 +1,37 @@ += Crafter +:icon: crafter.png +:from: v0.6.0-alpha + +The {doctitle} is a block that crafts items with xref:pattern.adoc[patterns]. +It can take xref:../upgrades/speed-upgrade.adoc[speed upgrades] to increase the crafting speed. + +With processing xref:pattern.adoc[patterns], the {doctitle} has to face the correct input side of the machine. + +[#_chaining] +== Chaining + +A {doctitle} can be chained by letting them face each other. + +This is useful when connecting a {doctitle} to a single machine. +When you run out of slots in your first {doctitle}, the one facing the machine, you can put another {doctitle} behind the first {doctitle} to get additional xref:pattern.adoc[] slots. + +== {doctitle} modes + +The {doctitle} has 4 modes: + +- Ignore redstone signal (default) +- Redstone signal unlocks autocrafting +- Redstone signal locks autocrafting +- Redstone pulse inserts next set + +The (un)locking mechanism is used to block the {doctitle}, so it can't insert items or fluids into the connected inventory. + +"Blocking mode" can be achieved with the "Redstone pulse inserts next set" mode. + +See xref:locking-and-unlocking.adoc[] for more details. + +include::../../partials/recoloring.adoc[] + +== Applicable upgrades + +- xref:../upgrades/speed-upgrade.adoc[] \ No newline at end of file diff --git a/docs/pages/autocrafting/crafting-monitor.adoc b/docs/pages/autocrafting/crafting-monitor.adoc new file mode 100644 index 0000000000..681b1a3da4 --- /dev/null +++ b/docs/pages/autocrafting/crafting-monitor.adoc @@ -0,0 +1,31 @@ += Crafting Monitor +:icon: crafting-monitor.png +:from: v0.6.0-alpha + +The {doctitle} is a block that shows all the current running crafting tasks and how long they have been running. + +Each crafting task can be cancelled manually. +It is also possible to cancel all crafting tasks at once. + +Per task, it shows a grid of cells, each containing information about how an item or fluid is used in the crafting task. +This is what the terminology in those cells mean: + +- Stored: the item or fluid is stored in the internal inventory of the crafting task, and will be used later on +- Missing: the crafting task cannot continue without this item or fluid as it's missing +- Processing: the item or fluid displayed is currently inserted into an external machine and is processing +- Scheduled: the item or fluid is scheduled to be made by inserting it's ingredients in an external machine later +- Crafting: this item is being crafted (regular crafting, not processing) + +== Sizes + +The size of any {doctitle} can be configured as well: + +- Stretched (default) +- Small +- Medium +- Large + +When choosing the stretched size, the {doctitle} will take up all the vertical screen space. +This can be limited through the `maxRowsStretch` config option. + +include::../../partials/recoloring.adoc[] diff --git a/docs/pages/autocrafting/fluid-autocrafting.adoc b/docs/pages/autocrafting/fluid-autocrafting.adoc new file mode 100644 index 0000000000..834114ef31 --- /dev/null +++ b/docs/pages/autocrafting/fluid-autocrafting.adoc @@ -0,0 +1,27 @@ += Fluid autocrafting + +So far you've set up autocrafting for items. +Since Refined Storage has support for xref:../storage/storing-fluids.adoc[storing fluids] as well, it speaks for itself that Refined Storage can also autocraft with fluids. + +Every autocrafting pattern that uses fluids is a processing pattern. +If you forgot, a processing pattern is a xref:pattern.adoc[] that outputs items to an external inventory and expects an output back, as declared in the xref:pattern.adoc[]. + +With fluid autocrafting, you get the ability to make the xref:crafter.adoc[] output fluids (or items), and when the "result" fluid (or item) is back in the storage network, Refined Storage will detect the task and mark it as finished. + +This means that you can also declare fluids as an output in the processing pattern. +It also means that you can request fluids from the xref:../viewing-resources/fluid-grid.adoc[]. + +You can mix fluid and item inputs/outputs freely. + +== Creation of the mixed pattern + +To make a mixed (fluid or item) processing pattern, toggle the xref:pattern-grid.adoc[] in fluid or item mode. + +You can then use link:https://minecraft.curseforge.com/projects/jei[JEI (Just Enough Items)] transfer to transfer item and fluid ingredients. +You can also use a filled fluid container (like a bucket) to specify the fluid. + +Use left or right click on the fluid slot to modify the millibuckets (mB). + +== Other resources + +- link:https://www.youtube.com/watch?v=6v-e_NdLEnI[Demo video] \ No newline at end of file diff --git a/docs/pages/autocrafting/getting-started-with-autocrafting.adoc b/docs/pages/autocrafting/getting-started-with-autocrafting.adoc new file mode 100644 index 0000000000..d00233e4bd --- /dev/null +++ b/docs/pages/autocrafting/getting-started-with-autocrafting.adoc @@ -0,0 +1,87 @@ += Getting started with autocrafting + +== What is autocrafting? + +Autocrafting is automated crafting through Refined Storage. + +You can already craft items manually using items from your storage network with the xref:../viewing-resources/crafting-grid.adoc[], but autocrafting makes it a tad bit easier and automated. + +Instead of manually moving items in the crafting matrix, you can make Refined Storage do all the work. + +== Patterns + +To teach Refined Storage a recipe to craft we use a xref:pattern-grid.adoc[]. +This xref:pattern-grid.adoc[] creates xref:pattern.adoc[patterns]. + +A xref:pattern.adoc[] contains the recipe of the item you want to craft. + +== Pattern dependencies + +You need to create a xref:pattern.adoc[] for each sub-item you want automatically crafted. + +Refined Storage will first try to extract the sub-item from your storage, but if it isn't available, it will fall back to the xref:pattern.adoc[] of the sub-item to know how to create it. +If there is no xref:pattern.adoc[] for the sub-item, the sub-item will be displayed as "missing" and the autocrafting task can't run. + +== Example + +You want to autocraft link:https://minecraft.gamepedia.com/Chest[chests]. + +- Create a xref:pattern.adoc[] for the chest +- Create a xref:pattern.adoc[] for the wooden planks that are used to craft the chest +- If you don't create the pattern, and you have wooden planks, than Refined Storage will be able to use those +- If you run out of planks, Refined Storage will not know what to do +- If you don't create the pattern, and you don't have wooden planks, than Refined Storage will not know how to craft this item and the crafting task can't + +== Exact mode + +Exact mode is turned on by default which means every xref:pattern.adoc[] is an "exact pattern". +This means Refined Storage takes items exactly as defined in the xref:pattern.adoc[] + +When Exact mode is turned off it will also match for other acceptable inputs for that crafting recipe (other types of wood, etc). + +== Crafters + +Once you created your xref:pattern.adoc[patterns], craft a xref:crafter.adoc[] and connect it to your storage network. + +In those xref:crafter.adoc[crafters] you'll store all your xref:pattern.adoc[patterns]. + +== Requesting an item + +As soon as the relevant xref:pattern.adoc[patterns] to craft an item are stored in a xref:crafter.adoc[], you will be able to request the item through any xref:../viewing-resources/grid.adoc[]. + +You can do this by clicking on the item you want to autocraft. +If the item is already available and you want to request more of that item, you can use the CTRL + SHIFT key combination to open the crafting window. + +When requesting an item, Refined Storage will first ask how many of that item you want to craft. +Then, it will show you what items it will take or craft. + +You can't start an autocrafting task if you have insufficient resources, unless you have the ability to autocraft those resources. + +== How autocrafting works internally + +Initially, when the autocrafting task is started, all the "initial" needed items and fluids are extracted from the storage network and inserted into the internal storage of the autocrafting task (crafting storage). + +All further actions to those items are performed in the internal storage, so the network doesn't "see" any changes while the task is running. + +Because all the subcrafts are done in the internal storage, the storage network can not "steal" items from autocrafting tasks. + +When an item is inserted through an xref:../input-and-output/importer.adoc[] or xref:../input-and-output/interface.adoc[], it will first go through the internal storage of autocrafting. +That is prioritized. +If the autocrafting task deems the item or fluid as necessary, it will be intercepted and the storage network will receive nothing. + +== Monitoring your crafting tasks + +Craft a xref:crafting-monitor.adoc[] and connect it to your storage network to see how the crafting task is progressing. + +You can also cancel autocrafting tasks from there. + +You can also use a xref:../wireless-networking/wireless-crafting-monitor.adoc[] to see the running crafting tasks remotely from your inventory. + +== Managing your patterns in a convenient way + +Want a convenient way to access all your xref:pattern.adoc[patterns] in the xref:crafter.adoc[crafters] of your storage network? +Use the xref:crafter-manager.adoc[]. + +== Speeding up your crafting tasks + +Insert xref:../upgrades/speed-upgrade.adoc[speed upgrades] in the xref:crafter.adoc[crafters]. \ No newline at end of file diff --git a/docs/pages/autocrafting/index.adoc b/docs/pages/autocrafting/index.adoc new file mode 100644 index 0000000000..c801c5b4e1 --- /dev/null +++ b/docs/pages/autocrafting/index.adoc @@ -0,0 +1,15 @@ += Autocrafting + +- xref:getting-started-with-autocrafting.adoc[] +- xref:processing-recipes.adoc[] +- xref:keeping-items-in-stock.adoc[] +- xref:fluid-autocrafting.adoc[] +- xref:keeping-fluids-in-stock.adoc[] +- xref:autocrafting-with-filled-buckets.adoc[] +- xref:locking-and-unlocking.adoc[] +- xref:pattern-grid.adoc[] +- xref:pattern.adoc[] +- xref:crafter.adoc[] +- xref:crafting-monitor.adoc[] +- xref:crafter-manager.adoc[] +- xref:processing-pattern-encoder.adoc[] diff --git a/docs/pages/autocrafting/keeping-fluids-in-stock.adoc b/docs/pages/autocrafting/keeping-fluids-in-stock.adoc new file mode 100644 index 0000000000..1c870b5a7b --- /dev/null +++ b/docs/pages/autocrafting/keeping-fluids-in-stock.adoc @@ -0,0 +1,14 @@ += Keeping fluids in stock + +Keeping fluids in stock work the same way as xref:keeping-items-in-stock.adoc[keeping items in stock]. + +Create a xref:../input-and-output/fluid-interface.adoc[] with a xref:../upgrades/crafting-upgrade.adoc[] in it. +Then, specify the fluid that you want to keep in stock by clicking a fluid container (like a bucket) in the "out" slot. +You can change the amount by left or right clicking on the fluid. +The fluids will now be autocrafted if needed. + +To make the stocked fluids available to your storage network, create an xref:../storage/external-storage.adoc[] and put it on the xref:../input-and-output/fluid-interface.adoc[]. +Put the xref:../storage/external-storage.adoc[] in fluid mode. + +Make sure the xref:../storage/external-storage.adoc[] is in "extract-only" mode. +That way, Refined Storage won't attempt to insert fluids in the xref:../input-and-output/fluid-interface.adoc[] that is meant for keeping in stock. diff --git a/docs/pages/autocrafting/keeping-items-in-stock.adoc b/docs/pages/autocrafting/keeping-items-in-stock.adoc new file mode 100644 index 0000000000..07772b9c21 --- /dev/null +++ b/docs/pages/autocrafting/keeping-items-in-stock.adoc @@ -0,0 +1,10 @@ += Keeping items in stock + +Create an xref:../input-and-output/interface.adoc[] with a xref:../upgrades/crafting-upgrade.adoc[] in it. +Then, specify the items that you want to keep in stock. +The items will now be autocrafted if needed. + +To make the stocked items available to your storage network, create an xref:../storage/external-storage.adoc[] and put it on the xref:../input-and-output/interface.adoc[]. + +Make sure the xref:../storage/external-storage.adoc[] is in "extract-only" mode. +That way, Refined Storage won't attempt to insert items in the xref:../input-and-output/interface.adoc[] that is meant for keeping in stock. diff --git a/docs/pages/autocrafting/locking-and-unlocking.adoc b/docs/pages/autocrafting/locking-and-unlocking.adoc new file mode 100644 index 0000000000..4e612344e3 --- /dev/null +++ b/docs/pages/autocrafting/locking-and-unlocking.adoc @@ -0,0 +1,68 @@ += Locking and unlocking +:from: v1.6.6 + +The xref:crafter.adoc[] in Refined Storage supports locking mechanisms. + +Locking and unlocking a xref:crafter.adoc[] only applies to processing recipes. + +The locking and unlocking functionality also has to be enabled by configuring the xref:crafter.adoc[] mode. + +== Crafter modes + +=== Ignore redstone signal (default) + +Ignores redstone signals. +This is the default. + +=== Redstone signal locks autocrafting + +- If a xref:crafter.adoc[] is locked, it can't insert items or fluids to the connected inventory. +- If a xref:crafter.adoc[] is unlocked, it can insert items or fluids to the connected inventory. + +=== Redstone signal unlocks autocrafting + +This is the opposite of the "Redstone signal locks autocrafting" mode. + +=== Redstone pulse inserts next set + +This mode was primarily introduced to support a concept called "blocking mode". + +Blocking mode is primarily utilised for processing recipes, where the machine that does the processing can only handle 1 recipe at a time. + +If the xref:crafter.adoc[] is in "Redstone pulse inserts next set" mode, this is the flow: + +- The xref:crafter.adoc[] will automatically go in an unlocked state +- As soon as you request a recipe in this xref:crafter.adoc[], it will send out 1 set of items and fluids defined in the xref:pattern.adoc[] +- The xref:crafter.adoc[] now goes in a locked state, and it won't push out any more items and fluids +- The xref:crafter.adoc[] will stay locked until it receives a redstone pulse + +When you apply a redstone pulse: + +- The xref:crafter.adoc[] will unlock itself +- The xref:crafter.adoc[] pushes the next set of items and fluids, if any +- If there were any items and fluids to push, the xref:crafter.adoc[] will lock itself again + +Generally, you'd apply a redstone signal if the recipe you're processing has completed. +It is up to the player to handle that. + +== Common mistakes with "Redstone pulse inserts next set" + +- Wrong redstone flow causes the xref:crafter.adoc[] to lock when it is supposed to unlock +- When testing your contraption, accidentally locking the xref:crafter.adoc[] and then wondering why your xref:crafter.adoc[] doesn't process anything next time you request something + +=== Crafter deadlock + +If you use an xref:../input-and-output/importer.adoc[] on a chest to import the final processed item, and also using a comparator to send the redstone signal to the xref:crafter.adoc[] to unlock again: + +- If the xref:../input-and-output/importer.adoc[] imports too fast AND +- the comparator doesn't pick up the item being in the chest AND +- by not picking up the item, thus, not sending out a redstone signal + +You'd cause a deadlock because the xref:crafter.adoc[] doesn't receive a redstone pulse, and the xref:crafter.adoc[] would keep waiting forever. + +The solution for this is to only enable the xref:../input-and-output/importer.adoc[] AFTER the redstone pulse is sent to the xref:crafter.adoc[]. +Use the xref:../input-and-output/importer.adoc[] redstone settings to achieve this. + +== Other resources + +- link:https://www.youtube.com/watch?v=c9s-IfDPKxw[Demo video] \ No newline at end of file diff --git a/docs/pages/autocrafting/pattern-grid.adoc b/docs/pages/autocrafting/pattern-grid.adoc new file mode 100644 index 0000000000..79e30803b5 --- /dev/null +++ b/docs/pages/autocrafting/pattern-grid.adoc @@ -0,0 +1,51 @@ += Pattern Grid +:icon: pattern-grid.png +:from: v0.6.0-alpha + +The {doctitle} is the same as a regular xref:../viewing-resources/grid.adoc[], but also allows for the creation of xref:pattern.adoc[patterns]. + +== Mode + +By default, the {doctitle} creates regular crafting xref:pattern.adoc[patterns]. + +To create processing xref:pattern.adoc[patterns], toggle the "processing" checkbox. + +== Allowed tags + +The allowed tags system in Refined Storage allows the player to decide which items or fluids can be used as alternatives when the specified item or fluid isn't found in the storage network. + +These tags are retrieved from link:https://minecraft.gamepedia.com/Tag[Minecraft's tag system]. +You can specify the allowed tags in the {doctitle}. + +To define valid alternatives for an item or fluid, use CTRL + click on the input slot and specify the allowed tags that can be used during autocrafting. +Items or fluids from that tag are then marked as valid alternatives if the original item or fluid can't be found in the storage network. + +You can also define valid alternatives by clicking on the item or fluid and then clicking on "Alternatives". + +== Ore dictionary (Refined Storage v1.6.x or lower only) + +To create ore dictionary sensitive xref:pattern.adoc[patterns], toggle the "oredict" checkbox. + +== Modifying a pattern + +You can re-insert a xref:pattern.adoc[] in the output slot to modify and (possibly) override it. + +== Recipe transferring + +The {doctitle} integrates with link:https://minecraft.curseforge.com/projects/jei[JEI (Just Enough Items)] so the player can use recipe transferring. + +You don't necessarily need the actual items in your storage network to create a xref:pattern.adoc[] for it. + +Refined Storage will notify you when you have a xref:pattern.adoc[] for an item configured when transferring a recipe. + +== Manual input/output configuration + +Click an item or fluid in the slots to configure the xref:pattern.adoc[]. + +Click on the item or fluid to change the quantity. + +Use CTRL + click to modify the allowed tags for the input slot (Minecraft 1.14.4 and above). + +Use shift to clear the slot. + +include::../../partials/recoloring.adoc[] \ No newline at end of file diff --git a/docs/pages/autocrafting/pattern.adoc b/docs/pages/autocrafting/pattern.adoc new file mode 100644 index 0000000000..54537dea8e --- /dev/null +++ b/docs/pages/autocrafting/pattern.adoc @@ -0,0 +1,44 @@ += Pattern +:icon: pattern.png +:from: v0.6.0-alpha + +A {doctitle} is an item that is used in autocrafting. +It stores the recipe that should be autocrafted. + +A recipe can be assigned with the xref:pattern-grid.adoc[] and the {doctitle} is stored in a xref:crafter.adoc[]. + +[#_processing] +== Processing + +If the {doctitle} is in processing mode, it will push the inputs to the connected inventory of the xref:crafter.adoc[]. + +== Exact mode (patterns in crafting mode) + +Exact mode is turned on by default which means every {doctitle} is an "exact pattern". +This means Refined Storage takes items exactly as defined in the {doctitle}. + +When Exact mode is turned off it will also match for other acceptable inputs for that crafting recipe. + +Exact mode can't be set for patterns in processing mode. +For processing mode, see the section about allowed tags. + +== Allowed tags (patterns in processing mode) + +The allowed tags system in Refined Storage allows the player to decide which items or fluids can be used as alternatives when the original specified item or fluid isn't found in the storage network. + +These tags are retrieved from link:https://minecraft.gamepedia.com/Tag[Minecraft's tag system]. +You can specify the allowed tags in the xref:pattern-grid.adoc[]. + +== Ore dictionary mode (Refined Storage v1.6.x or lower only) + +The {doctitle} can be configured to be an ore dictionary pattern. +Instead of extracting the exact item, it'll try to extract equivalent items according to the ore dictionary as well. + +== Clearing + +Use SHIFT + right click in your inventory while holding the {doctitle} to clear it. +You can also override the {doctitle} in the xref:pattern-grid.adoc[]. + +== Modifying + +You can re-insert a {doctitle} in the output slot of the xref:pattern-grid.adoc[] to modify and (possibly) override it. \ No newline at end of file diff --git a/docs/pages/autocrafting/processing-pattern-encoder.adoc b/docs/pages/autocrafting/processing-pattern-encoder.adoc new file mode 100644 index 0000000000..715feec00b --- /dev/null +++ b/docs/pages/autocrafting/processing-pattern-encoder.adoc @@ -0,0 +1,21 @@ += Processing Pattern Encoder +:icon: processing-pattern-encoder.png +:from: v0.6.0-alpha +:to: v1.5.6 + +[.alert.alert-warning] +**** +The {doctitle} has been removed in v1.5.6 and its functionality has been moved to the xref:pattern-grid.adoc[]. +**** + +A {doctitle} is used to create xref:pattern.adoc[patterns] meant for machine automation. + +It takes up to 9 inputs and 9 outputs, so the storage network knows what to take and what to expect. + +This block can't be connected to a storage network. + +== Recipe transferring + +The {doctitle} integrates with link:https://minecraft.curseforge.com/projects/jei[JEI (Just Enough Items)] so the player can use recipe transferring. + +When using this, Refined Storage will use the inputs and outputs that the link:https://minecraft.curseforge.com/projects/jei[JEI] recipe has. \ No newline at end of file diff --git a/docs/pages/autocrafting/processing-recipes.adoc b/docs/pages/autocrafting/processing-recipes.adoc new file mode 100644 index 0000000000..c6a3db99bf --- /dev/null +++ b/docs/pages/autocrafting/processing-recipes.adoc @@ -0,0 +1,47 @@ += Processing recipes + +== What are processing recipes? + +So far, in xref:getting-started-with-autocrafting.adoc[] you learnt how to automate regular crafting recipes. + +What if you want to automate the creation of items that don't involve a crafting recipe, like ores to ingots in a furnace? + +For this you use processing xref:pattern.adoc[patterns]. + +== Processing patterns + +You can create processing xref:pattern.adoc[patterns] in the xref:pattern-grid.adoc[] by toggling the "processing" checkbox. + +The GUI will change and it'll allow you to define up to 9 inputs and outputs. + +- Inputs is what Refined Storage will extract from your storage network. +- Outputs are what Refined Storage expects back in the network when the item has processed. + +== Example + +Let's say you want to automate link:https://minecraft.gamepedia.com/Iron_Ore[Iron Ore] to link:https://minecraft.gamepedia.com/Iron_Ingot[Iron Ingot]. + +- In the input section you put 1 link:https://minecraft.gamepedia.com/Iron_Ore[Iron Ore]. +- In the output section you put 1 link:https://minecraft.gamepedia.com/Iron_Ingot[Iron Ingot]. + +== Inserting the pattern + +Make a xref:crafter.adoc[] and let it face the machine in a way it can input it in the correct slot. + +Insert the processing xref:pattern.adoc[] you just created in the xref:crafter.adoc[] facing the machine. + +When you now request the item, Refined Storage will insert the inputs in the machine. + +You do need to get the item manually back in the storage network so Refined Storage knows that the item has been processed. +You can use any device to get the item back in the storage network, like an xref:../input-and-output/interface.adoc[] or xref:../input-and-output/importer.adoc[]. + +== Allowed tags + +The allowed tags system in Refined Storage allows the player to decide which items or fluids can be used as alternatives when the original specified item or fluid isn't found in the storage network. + +These tags are retrieved from Minecraft's tag system. +You can specify the allowed tags in the xref:pattern-grid.adoc[]. + +== Chaining crafters + +You can xref:crafter.adoc#_chaining[chain crafters] to connect multiple xref:crafter.adoc[crafters] to the same machine. \ No newline at end of file diff --git a/docs/pages/faq.adoc b/docs/pages/faq.adoc new file mode 100644 index 0000000000..5937187b2e --- /dev/null +++ b/docs/pages/faq.adoc @@ -0,0 +1,68 @@ += Frequently asked questions (FAQ) + +== I have an idea for a feature that can be toggled on or off with an config option! + +Refined Storage doesn't do config options for features or things that change behavior in general. +Why not? + +- The experience players have with Refined Storage can differ between modpacks and that can be confusing +- Issues will be created by players wondering why their favorite feature doesn't work in modpack A, but does in modpack B +- Putting features or behaviors behind a config option makes it harder to maintain +- With bug reports we'd have to ask if the feature is toggled on or off in the config +- Bugs might get noticed later since it's behind a config option and thus less visible + +== Not including "X" in Refined Storage makes this mod useless when mods like "Y" aren't installed! + +The philosophy of the mod is to have as less overlap with other mods and to only focus on the storage network part of the mod. +If other mods are required to achieve something, that isn't a problem. + +Examples: + +- Autocrafting needs an external bucket filling machine in order to convert fluids to buckets +- Energy that Refined Storage uses needs to be generated with another mod + +== What is the difference between Refined Storage and Applied Energistics? + +Refined Storage is the simpler of the two and was heavily based off of AE1. + +AE2 has been around for years and was a direct descendent of AE1, while RS is much younger and started mostly scratch with AE (both versions) as inspiration. + +A lot of people prefer the simplicity of RS, while a similarly large portion of people prefer AE2's complexity due to enjoying the puzzle aspects. + +== Can I use this mod in my private/public mod pack? + +Yes, you don't need to ask permission. + +== Can I connect Refined Storage to my Applied Energistics 2 system, or vice-versa? + +No, you can't. + +You might've found an issue on our issue tracker that says you can, but no, you can't. + +== Is there a Refined Storage for MC 1.7.10? + +No, there isn't. + +== Will you make a Refined Storage for MC 1.7.10? + +No, I won't. + +== What versions of Minecraft are supported? + +See xref:whats-new.adoc#_version_support[version support]. + +== Is there a way to have infinite Wireless Transmitter range? + +It's not possible if you're using the base Refined Storage mod, or Refined Storage Addons. +You'll have to find an addon mod which does add such functionality. + +Alternatively, you can increase the range in the Refined Storage config file to be infinite. + +== Is there a way to request autocrafting in the Grid if I already have the item or fluid? + +Yes! +There are many helpful key and mouse bindings for the xref:viewing-resources/grid.adoc#_controls[grid]. + +== I found an issue/bug with Refined Storage! + +Head over to our link:https://github.com/refinedmods/refinedstorage/issues[issue tracker on GitHub] and report it there. \ No newline at end of file diff --git a/docs/pages/getting-started.adoc b/docs/pages/getting-started.adoc new file mode 100644 index 0000000000..fd4db9bdd3 --- /dev/null +++ b/docs/pages/getting-started.adoc @@ -0,0 +1,55 @@ += Getting started + +== Core concepts + +Refined Storage is a storage mod where you can build a storage network made up of devices. +Those devices manipulate your storage. + +In this tutorial: + +- You'll craft a xref:storage/disk-drive.adoc[]. +A xref:storage/disk-drive.adoc[] can contain item or fluid storage disks. +Those disks will provide your storage network with storage. +If you insert or extract an item, it will use the data on your disks. +- You'll craft a xref:viewing-resources/grid.adoc[]. +Through that block, you can modify your storage (which will modify the data on your disks). +- Before crafting any of these devices, you'll first craft a xref:networking/controller.adoc[], which ties the entire network together. + +== A minimal setup + +=== Step 0: Install Refined Storage (if necessary) + +Ensure that the modpack that you are playing contains Refined Storage. +You can validate this by checking the modlist of your modpack. + +If your modpack doesn't have Refined Storage installed, or you are creating your own modpack, xref:how-to-install.adoc[check the installation instructions here]. + +It might also be helpful to know that Refined Storage xref:how-to-install.adoc#_optional_dependencies[has integration with various other mods]. + +=== Step 1: The Controller + +Craft the xref:networking/controller.adoc[]. +The xref:networking/controller.adoc[] is the "core" of your storage network. +You'll be connecting all the Refined Storage devices to this block. + +The xref:networking/controller.adoc[] needs energy. +More specifically, Forge Energy or RF. +Lots of mods that generate energy support this. + +=== Step 2: Storage and accessing your items + +Craft a xref:storage/disk-drive.adoc[] and a xref:storage/1k-storage-disk.adoc[] to store your items. + +You can craft a higher tier of xref:storage/index.adoc#_storage_disks[storage disk], but for simplicity sake we're going for a 1k, which can store 1.000 items. + +Put the xref:storage/1k-storage-disk.adoc[] in the xref:storage/disk-drive.adoc[] and craft a xref:viewing-resources/grid.adoc[] to access your items. + +Connect those blocks to the xref:networking/controller.adoc[] with xref:networking/cable.adoc[], but you can also just place them next to each other in any direction. + +=== Step 3: Viewing your storage + +You are now able to insert and extract items in the xref:viewing-resources/grid.adoc[]. + +== Disks in block form + +You can also use the various xref:storage/index.adoc#_storage_blocks[storage blocks] instead of xref:storage/index.adoc#_storage_disks[storage disks]. \ No newline at end of file diff --git a/docs/pages/how-to-install.adoc b/docs/pages/how-to-install.adoc new file mode 100644 index 0000000000..7b5e93beae --- /dev/null +++ b/docs/pages/how-to-install.adoc @@ -0,0 +1,54 @@ += How to install + +Installing Refined Storage is the same as for any other Forge mod. + +== Setting up Forge + +You'll need a working Forge instance to use Refined Storage. +You can use launchers like MultiMC or even the vanilla launcher to do this. + +Instructions for setting up a Forge instance are plenty online and are out of scope for this wiki. + +== Downloading the mod + +Download a Refined Storage `.jar` file for your Minecraft version from official sources: + +- link:https://www.curseforge.com/minecraft/mc-mods/refined-storage[CurseForge] +- link:https://modrinth.com/mod/refined-storage[Modrinth] +- link:https://github.com/refinedmods/refinedstorage/releases[GitHub] + +== Installing the mod + +Once you have the `.jar` file, place it in the `mods/` directory of your Forge instance. +You may have to start up your instance at least once so Forge can autogenerate the `mods/` directory. + +== CurseForge/Twitch launcher + +When you're using a launcher like the CurseForge/Twitch launcher, you can install Refined Storage in an instance with one click without having to copy over `.jar` files. + +== Configuring the mod + +Changing the configuration isn't needed in most cases. +If you need to do this, you can: + +- Change server-specific configuration in `saves//serverconfig/refinedstorage-server.toml` +- Change client-specific configuration in `config/refinedstorage-client.toml` + +Note that server-specific configuration also applies to single player worlds. +That is because when you're playing single player, Minecraft uses an internal server. + +[#_optional_dependencies] +== Optional dependencies + +Refined Storage can work perfectly by itself without any additional mods, but it's helpful to install a few other mods alongside it. + +- **link:https://minecraft.curseforge.com/projects/jei[JEI (Just Enough Items)]:** This mod will help you view the recipes of the various items and blocks in the mod. +- **A mod that can generate Forge Energy (also known as FE or RF):** A Refined Storage network requires energy to run. +If you do not want to generate energy, you can disable energy usage in the Refined Storage server-side config (see section above "Configuring the mod"). +Change `useEnergy` under `[controller]` to `false`. +- **link:https://www.curseforge.com/minecraft/mc-mods/crafting-tweaks[Crafting Tweaks]** +- **link:https://www.curseforge.com/minecraft/mc-mods/curios[Curios]** +- **link:https://www.curseforge.com/minecraft/mc-mods/inventory-sorter[Inventory Sorter]** + +Until Minecraft 1.14, xref:opencomputers-api.adoc[Refined Storage had integration with OpenComputers]. + diff --git a/docs/pages/index.adoc b/docs/pages/index.adoc new file mode 100644 index 0000000000..9c11996529 --- /dev/null +++ b/docs/pages/index.adoc @@ -0,0 +1,8 @@ += Refined Storage + +[.p-5.mb-4.bg-body-tertiary.rounded-3] +== Refined Storage is a mass storage mod for Minecraft that offers the player a network-based storage system, allowing them to store items and fluids on a massively expandable device network. +''' +Items and fluids can be stored in one of the many storage capabilities that the mod offers. Any storage devices connected to the same network are accessible to the player through one simple Grid interface, allowing the player to access the inventories of many devices through a single unified GUI. + +This mod not only adds storage solutions, but also devices that can be used to manipulate items and blocks in the world and from within the system, such as importers, exporters, constructors, destructors, and more! There are also devices in this mod that allow the player to setup auto-crafting, allowing the crafting of complex recipes in a few simple clicks. diff --git a/docs/pages/input-and-output/constructor.adoc b/docs/pages/input-and-output/constructor.adoc new file mode 100644 index 0000000000..f922d3da16 --- /dev/null +++ b/docs/pages/input-and-output/constructor.adoc @@ -0,0 +1,16 @@ += Constructor +:icon: constructor.png +:from: v0.3.0-alpha + +The {doctitle} places items or fluids from the storage network in the world. + +No other blocks can be in front of the {doctitle} (except fluids) and it should be possible for the block to be placed (for example: saplings need dirt). + +The {doctitle} can also drop items in the world instead of placing actual blocks. +When provided with a xref:../upgrades/stack-upgrade.adoc[], it'll drop stacks of items at a time. + +== Applicable upgrades + +- xref:../upgrades/speed-upgrade.adoc[] +- xref:../upgrades/stack-upgrade.adoc[] +- xref:../upgrades/crafting-upgrade.adoc[] diff --git a/docs/pages/input-and-output/destructor.adoc b/docs/pages/input-and-output/destructor.adoc new file mode 100644 index 0000000000..a1c33bf759 --- /dev/null +++ b/docs/pages/input-and-output/destructor.adoc @@ -0,0 +1,16 @@ += Destructor +:icon: destructor.png +:from: v0.3.0-alpha + +The {doctitle} destroys blocks or fluids in front of it and puts the drops in the storage network. + +The {doctitle} has the ability to only break certain blocks or fluids, with the whitelist and blacklist option. +Said whitelist and blacklist can be NBT or damage sensitive. + +The {doctitle} can also pick up items in the world instead of destroying blocks. + +== Applicable upgrades + +- xref:../upgrades/speed-upgrade.adoc[] +- xref:../upgrades/fortune-upgrade.adoc[] +- xref:../upgrades/silk-touch-upgrade.adoc[] diff --git a/docs/pages/input-and-output/disk-manipulator.adoc b/docs/pages/input-and-output/disk-manipulator.adoc new file mode 100644 index 0000000000..a1f190bc24 --- /dev/null +++ b/docs/pages/input-and-output/disk-manipulator.adoc @@ -0,0 +1,22 @@ += Disk Manipulator +:icon: disk-manipulator.png +:from: v1.0.5 + +The {doctitle} is a block that adds a fast way of transferring items between xref:../storage/index.adoc#_storage_disks[storage disks] or xref:../storage/index.adoc#_fluid_storage_disks[fluid storage disks] and the storage network. + +== Whitelist or blacklist + +The player can configure the {doctitle} to have a certain whitelist or blacklist of items that can be transferred. + +The whitelist or blacklist can be configured to be NBT or damage sensitive. + +== Mode + +The player can also choose whether to insert items to the storage network or extract items from the storage network. + +include::../../partials/recoloring.adoc[] + +== Applicable upgrades + +- xref:../upgrades/speed-upgrade.adoc[] +- xref:../upgrades/stack-upgrade.adoc[] \ No newline at end of file diff --git a/docs/pages/input-and-output/exporter.adoc b/docs/pages/input-and-output/exporter.adoc new file mode 100644 index 0000000000..5e6ad8b065 --- /dev/null +++ b/docs/pages/input-and-output/exporter.adoc @@ -0,0 +1,18 @@ += Exporter +:icon: exporter.png +:from: v0.3.0-alpha + +The {doctitle} extracts items or fluids from the storage network and inserts it in the inventory or tank in front of it. + +Before being able to export anything, the player has to choose the items or fluids to export. + +The chosen items can be configured to be NBT or damage sensitive. + +The {doctitle} should face the block it's exporting to in a way that the wanted slot or fluid tank is possible to reach from that side. + +== Applicable upgrades + +- xref:../upgrades/speed-upgrade.adoc[] +- xref:../upgrades/stack-upgrade.adoc[] +- xref:../upgrades/crafting-upgrade.adoc[] +- xref:../upgrades/regulator-upgrade.adoc[] diff --git a/docs/pages/input-and-output/fluid-interface.adoc b/docs/pages/input-and-output/fluid-interface.adoc new file mode 100644 index 0000000000..da4eb2e0aa --- /dev/null +++ b/docs/pages/input-and-output/fluid-interface.adoc @@ -0,0 +1,26 @@ += Fluid Interface +:icon: fluid-interface.png +:from: v0.9.0-beta + +The {doctitle} is the same as an xref:interface.adoc[] but for fluids. + +It has 2 internal tanks, one for input and one for output. + +== Input slot + +The {doctitle} has an input slot to import the contents of fluid containers (like a filled bucket). + +You can also interact with the input tank by using pipes from other mods. + +== Output configuration + +- Click a fluid container (like a filled bucket) in the "Out" slot to configure the output fluid. +- Use left or right click on the fluid to change the mB amount. +- Use shift to clear the fluid slot. +- You can also interact with the output tank by using pipes from other mods. + +== Applicable upgrades + +- xref:../upgrades/speed-upgrade.adoc[] +- xref:../upgrades/stack-upgrade.adoc[] +- xref:../upgrades/crafting-upgrade.adoc[] \ No newline at end of file diff --git a/docs/pages/input-and-output/getting-items-in-and-out.adoc b/docs/pages/input-and-output/getting-items-in-and-out.adoc new file mode 100644 index 0000000000..700bcae3fb --- /dev/null +++ b/docs/pages/input-and-output/getting-items-in-and-out.adoc @@ -0,0 +1,37 @@ += Getting items in and out + +So far, you know xref:../getting-started.adoc[how to add storage disks to your network and view them]. +But how do you get those items in and out in an automated way? + +This is a quick overview of all the devices that manipulate your storage. + +== Exporter + +If you want to get items out of your storage network, use an xref:exporter.adoc[] and connect it to an inventory where you want to export to. + +Configure the filter slots of the xref:exporter.adoc[] to the items you want to export. + +== Importer + +If you want to get items in your storage network, use an xref:importer.adoc[] and connect it to an inventory where you want to import from. + +== Interface + +Want the best of both worlds? +Use an xref:interface.adoc[] to get importing and exporting functionality in one block. + +== Constructor + +To place blocks from your storage network in the world, use an xref:constructor.adoc[]. + +Configure the filter slots of the xref:constructor.adoc[] to the block you want to place. + +== Destructor + +To destroy and insert blocks from the world into your storage, use an xref:destructor.adoc[]. + +You can configure a whitelist or blacklist of blocks to destroy. + +== Disk Manipulator + +If you want to import from disks or export to a disk from the network, use a xref:disk-manipulator.adoc[]. \ No newline at end of file diff --git a/docs/pages/input-and-output/importer.adoc b/docs/pages/input-and-output/importer.adoc new file mode 100644 index 0000000000..ce31a4a2cf --- /dev/null +++ b/docs/pages/input-and-output/importer.adoc @@ -0,0 +1,18 @@ += Importer +:icon: importer.png +:from: v0.3.0-alpha + +The {doctitle} imports items or fluids from an inventory in front of the block and inserts it in the storage network (if there is space). + +By default, it will import all accessible slots (place the {doctitle} on the correct side, where the slot or fluid tank is reachable) but the player can use the whitelist or blacklist as well. + +== Whitelist and blacklist + +There is also a whitelist and blacklist option to only allow or forbid some items from entering the storage network. + +The whitelist or blacklist can be configured to be NBT or damage sensitive. + +== Applicable upgrades + +- xref:../upgrades/speed-upgrade.adoc[] +- xref:../upgrades/stack-upgrade.adoc[] \ No newline at end of file diff --git a/docs/pages/input-and-output/index.adoc b/docs/pages/input-and-output/index.adoc new file mode 100644 index 0000000000..82fcdf4484 --- /dev/null +++ b/docs/pages/input-and-output/index.adoc @@ -0,0 +1,12 @@ += Input and output + +- xref:getting-items-in-and-out.adoc[] +- xref:importer.adoc[] +- xref:exporter.adoc[] +- xref:constructor.adoc[] +- xref:destructor.adoc[] +- xref:interface.adoc[] +- xref:fluid-interface.adoc[] +- xref:disk-manipulator.adoc[] +- xref:reader.adoc[] +- xref:writer.adoc[] \ No newline at end of file diff --git a/docs/pages/input-and-output/interface.adoc b/docs/pages/input-and-output/interface.adoc new file mode 100644 index 0000000000..a2128c741b --- /dev/null +++ b/docs/pages/input-and-output/interface.adoc @@ -0,0 +1,36 @@ += Interface +:icon: interface.png +:from: v0.4.0-alpha + +The Interface is a block that acts as a combination of the xref:importer.adoc[] and the xref:exporter.adoc[]. + +== Importing + +Let's talk about the difference between an xref:importer.adoc[] and the Interface for importing. + +The xref:importer.adoc[] needs to be connected to an inventory to import items or fluids. +It has no internal inventory and you can't insert items directly to the xref:importer.adoc[. + +In comparison with the xref:importer.adoc[] the Interface has an internal inventory to receive items and import them (through piping, hoppers, etc). +That internal inventory is accessible by opening the GUI and looking at the slots under "Interface Import"). + +The Interface does NOT extract items from adjacent inventories automatically, you have to actually insert them in the Interface through piping, hoppers, etc. + +== Exporting + +There is also an option for exporting items from the system. +These items can be piped out through a piping system from another mod, hoppers, etc. + +It can be configured to be NBT or damage sensitive. + +== Output configuration + +- Click an item in the export slots to configure that to be exported. +- Use left or right click on the item to change the amount. +- Use shift to clear the slot. + +== Applicable upgrades + +- xref:../upgrades/speed-upgrade.adoc[] +- xref:../upgrades/stack-upgrade.adoc[] +- xref:../upgrades/crafting-upgrade.adoc[] \ No newline at end of file diff --git a/docs/pages/input-and-output/reader.adoc b/docs/pages/input-and-output/reader.adoc new file mode 100644 index 0000000000..8fd388216a --- /dev/null +++ b/docs/pages/input-and-output/reader.adoc @@ -0,0 +1,24 @@ += Reader +:icon: reader.png +:from: v1.4.0-beta +:to: v1.7.0-alpha + +[.alert.alert-warning] +**** +The {doctitle} has been removed in version v1.7.0-alpha. +**** + +A Reader has the ability to manage {doctitle} / xref:writer.adoc[] channels on a network. + +The {doctitle} is a block that takes items, fluids, energy and / or a redstone signal. +The data will be transmitted to the configured channel and can be read out with a xref:writer.adoc[]. + +The {doctitle} doesn't auto-extract any of the supported types (with an exception to redstone signals). +You have to insert it manually. + +== Supported types + +- Items +- Fluids +- Energy +- Redstone \ No newline at end of file diff --git a/docs/pages/input-and-output/writer.adoc b/docs/pages/input-and-output/writer.adoc new file mode 100644 index 0000000000..7956818625 --- /dev/null +++ b/docs/pages/input-and-output/writer.adoc @@ -0,0 +1,24 @@ += Writer +:icon: writer.png +:from: v1.4.0-beta +:to: v1.7.0-alpha + +[.alert.alert-warning] +**** +The {doctitle} has been removed in version v1.7.0-alpha. +**** + +A {doctitle} has the ability to manage xref:reader.adoc[] / {doctitle} channels on a network. + +The {doctitle} is a block that exposes items, fluids, energy and / or a redstone signal from the bound channel. +The data that is received is sent from the xref:reader.adoc[]. + +The {doctitle} doesn't auto-push any of the supported types (with an exception to redstone signals). +You have to extract it manually. + +== Supported types + +- Items +- Fluids +- Energy +- Redstone \ No newline at end of file diff --git a/docs/pages/networking/cable.adoc b/docs/pages/networking/cable.adoc new file mode 100644 index 0000000000..1276ca06a0 --- /dev/null +++ b/docs/pages/networking/cable.adoc @@ -0,0 +1,7 @@ += Cable +:from: v0.3.0-alpha +:icon: cable.png + +{doctitle} is used to connect devices to the xref:controller.adoc[]. + +They are not always necessary, as long as the devices are next to each other in any direction a connection will be established as well. diff --git a/docs/pages/networking/controller.adoc b/docs/pages/networking/controller.adoc new file mode 100644 index 0000000000..88f3a4efa7 --- /dev/null +++ b/docs/pages/networking/controller.adoc @@ -0,0 +1,37 @@ += Controller +:from: v0.3.0-alpha +:icon: controller.png + +The {doctitle} is the core of the Refined Storage network. +You need to connect all the Refined Storage devices to this block. + +== Connecting devices + +You are supposed to connect every device that depends on the storage network connection to the {doctitle}. + +You can connect devices with xref:cable.adoc[cables]. + +xref:cable.adoc[Cables] are not always necessary, as long as the devices are next to each other in any direction a connection will be established as well. + +== Energy + +The {doctitle} accepts and consumes Forge Energy (FE). +Most mods have a way to generate energy, therefore Refined Storage doesn't come by itself with a way to generate energy. + +- The energy is extracted per tick. +- The amount of energy that is extracted depends on the amount of devices, and which devices. +- Every device type consumes another amount of energy. +- You can see how many energy each device consumes by right clicking the {doctitle}. + +If the {doctitle} runs out of energy, the network will be turned off until there is sufficient energy provided again. + +When the {doctitle} is broken, it will maintain its energy. + +== Limits + +Each Refined Storage network can only have a single {doctitle}. +It doesn't make sense to connect multiple controllers on the same network. + +If you connect another {doctitle} to an already existing network, the {doctitle} will break as an item in the world. + +include::../../partials/recoloring.adoc[] \ No newline at end of file diff --git a/docs/pages/networking/creative-controller.adoc b/docs/pages/networking/creative-controller.adoc new file mode 100644 index 0000000000..87f5014359 --- /dev/null +++ b/docs/pages/networking/creative-controller.adoc @@ -0,0 +1,9 @@ += Creative Controller +:from: v0.3.0-alpha +:icon: controller.png + +The {doctitle} is the same as a regular xref:controller.adoc[] but has infinite energy. + +It can only be obtained in creative mode. + +include::../../partials/recoloring.adoc[] diff --git a/docs/pages/networking/detector.adoc b/docs/pages/networking/detector.adoc new file mode 100644 index 0000000000..e4727f3e43 --- /dev/null +++ b/docs/pages/networking/detector.adoc @@ -0,0 +1,30 @@ += Detector +:icon: detector.png +:from: v0.3.0-alpha + +The {doctitle} is a block that emits a redstone signal if an item, or fluid count matches a given amount. + +It is also possible to be NBT or damage sensitive. + +== Types of criteria + +[cols="1,1"] +|=== +|Criteria|Explanation + +|<|Emits a signal when lower than the given amount +|>|Emits a signal when higher than the given amount +|=|Emits a signal when equal to the given amount +|=== + +== Checking the total count in the storage + +When no item/fluid, is specified, the criteria won't care about the count of a specific item/fluid, but rather the count of all items/fluids, in the storage. + +== Amounts in fluid mode + +When the {doctitle} is in fluid mode, the amount given is in millibuckets (mB). + +If you want to check for 1 bucket of a fluid, use 1000, not 1. + +include::../../partials/recoloring.adoc[] diff --git a/docs/pages/networking/index.adoc b/docs/pages/networking/index.adoc new file mode 100644 index 0000000000..522bd5f321 --- /dev/null +++ b/docs/pages/networking/index.adoc @@ -0,0 +1,7 @@ += Networking + +- xref:controller.adoc[] +- xref:creative-controller.adoc[] +- xref:cable.adoc[] +- xref:detector.adoc[] +- xref:relay.adoc[] \ No newline at end of file diff --git a/docs/pages/networking/relay.adoc b/docs/pages/networking/relay.adoc new file mode 100644 index 0000000000..f5acb50090 --- /dev/null +++ b/docs/pages/networking/relay.adoc @@ -0,0 +1,9 @@ += Relay +:from: v0.4.0-alpha +:icon: relay.png + +The Relay acts as xref:cable.adoc[], but can be turned on or off depending on the redstone configuration. + +Devices connected after the Relay will be on or off depending if the {doctitle} is on. + +include::../../partials/recoloring.adoc[] \ No newline at end of file diff --git a/docs/pages/opencomputers-api.adoc b/docs/pages/opencomputers-api.adoc new file mode 100644 index 0000000000..e24fc66633 --- /dev/null +++ b/docs/pages/opencomputers-api.adoc @@ -0,0 +1,27 @@ += OpenComputers API + +[cols="1,1"] +|=== +|Method|Description| + +|`isConnected():boolean`|Whether the node is connected. +|`getEnergyUsage():number`|Gets the energy usage of this network.| +|`getTasks():table`|Gets the crafting tasks of this network. +|`getPattern(stack:table):table`|Get one pattern of this network. +|`getFluidPattern(stack:table):table`|Get one fluid pattern of this network. +|`getPatterns():table`|Gets the patterns of this network. +|`getFluidPatterns():table`|Gets the fluid patterns of this network. +|`hasPattern(stack:table):boolean`|Whether a crafting pattern exists for this item. +|`hasFluidPattern(stack:table):boolean`|Whether a crafting pattern exists for this fluid. +|`scheduleTask(stack:table[,count: number[, canSchedule: boolean]]):table`|Schedules a crafting task. +|`scheduleFluidTask(stack:table[,count: number[, canSchedule: boolean]]):table`|Schedules a fluid crafting task. +|`cancelTask(stack:table):number`|Cancels a task and returns the amount of tasks cancelled. +|`cancelFluidTask(stack:table):number`|Cancels a fluid task and returns the amount of tasks cancelled. +|`extractFluid(stack:table[,amount:number[, direction:number]]):table`|Extracts a fluid from the network. +|`getFluid(stack:table):table`|Gets a fluid from the network. +|`getFluids():table`|Gets a list of all fluids in this network. +|`extractItem(stack:table[,count:number[, direction:number]]):table`|Extracts an item from the network. +|`getItem(stack:table[,compareMeta:boolean[, compareNBT:boolean]]):table`|Gets an item from the network. +|`getItems():table`|Gets a list of all items in this network. +|`getStorages():table`|Gets a list of all connected storage disks and blocks in this network. +|=== \ No newline at end of file diff --git a/docs/pages/security/index.adoc b/docs/pages/security/index.adoc new file mode 100644 index 0000000000..0c806366e6 --- /dev/null +++ b/docs/pages/security/index.adoc @@ -0,0 +1,4 @@ += Security + +- xref:security-manager.adoc[] +- xref:security-card.adoc[] \ No newline at end of file diff --git a/docs/pages/security/security-card.adoc b/docs/pages/security/security-card.adoc new file mode 100644 index 0000000000..f25237e0a2 --- /dev/null +++ b/docs/pages/security/security-card.adoc @@ -0,0 +1,7 @@ += Security Card +:from: v1.4.0-beta +:icon: security-card.png + +The {doctitle} is an item that is bound to a player by right clicking. + +The {doctitle} has to be inserted into a xref:security-manager.adoc[], and can be configured from there as well. \ No newline at end of file diff --git a/docs/pages/security/security-manager.adoc b/docs/pages/security/security-manager.adoc new file mode 100644 index 0000000000..52d9093993 --- /dev/null +++ b/docs/pages/security/security-manager.adoc @@ -0,0 +1,41 @@ += Security Manager +:from: v1.4.0-beta +:icon: security-manager.png + +The {doctitle} is a block that can store xref:security-card.adoc[security cards]. + +From its GUI, you can configure what permissions each player (that is bound with a xref:security-card.adoc[]) has. + +Once the xref:security-card.adoc[] is inserted in the top slots, the permissions for that player will be restricted to the ones configured. + +== Behavior + +When no xref:security-card.adoc[security cards] are active on the network, everyone has access to all permissions. + +Start inserting xref:security-card.adoc[security cards] to define permissions for players. + +Players who have no configured xref:security-card.adoc[] are still able to do everything in the network (all permissions). + +To configure a "global" set of permissions for all unconfigured players, configure a xref:security-card.adoc[] that isn't bound to a player and insert it in the {doctitle}. + +Operators (OPs) on a server have access to all permissions, overriding all network security. + +== The placer + +The placer of the {doctitle} will always be able to open it's GUI and change the security settings, regardless of permissions. + +== Permissions + +[cols="1,1"] +|=== +|Type|Description + +|Insert|Inserting items to the network +|Extract|Extracting items from the network +|Autocrafting|Starting, cancelling and viewing crafting tasks +|Modify|Opening block GUIs from the network +|Build|Adding or removing devices to or from the network +|Security|Ability to change security options +|=== + +include::../../partials/recoloring.adoc[] diff --git a/docs/pages/storage/1024k-fluid-storage-block.adoc b/docs/pages/storage/1024k-fluid-storage-block.adoc new file mode 100644 index 0000000000..9eaaa3e00a --- /dev/null +++ b/docs/pages/storage/1024k-fluid-storage-block.adoc @@ -0,0 +1,9 @@ += 1024k Fluid Storage Block +:icon: 1024k-fluid-storage-block.png +:from: v0.9.0-beta + +include::../../partials/fluid-storage-block.adoc[] + +== Storage capacity + +The {doctitle} can store 1024.000 millibuckets or 1024 buckets of any fluid. \ No newline at end of file diff --git a/docs/pages/storage/1024k-fluid-storage-disk.adoc b/docs/pages/storage/1024k-fluid-storage-disk.adoc new file mode 100644 index 0000000000..4b9024e0c9 --- /dev/null +++ b/docs/pages/storage/1024k-fluid-storage-disk.adoc @@ -0,0 +1,9 @@ += 1024k Fluid Storage Disk +:icon: 1024k-fluid-storage-disk.png +:from: v0.9.0-beta + +include::../../partials/fluid-storage-disk.adoc[] + +== Storage capacity + +The {doctitle} can store 1024.000 millibuckets or 1024 buckets of any fluid. \ No newline at end of file diff --git a/docs/pages/storage/1024k-fluid-storage-part.adoc b/docs/pages/storage/1024k-fluid-storage-part.adoc new file mode 100644 index 0000000000..c4ef8b540d --- /dev/null +++ b/docs/pages/storage/1024k-fluid-storage-part.adoc @@ -0,0 +1,5 @@ += 1024k Fluid Storage Part +:icon: 1024k-fluid-storage-part.png +:from: v0.9.0-beta + +The {doctitle} is used to craft the xref:1024k-fluid-storage-disk.adoc[] and xref:1024k-fluid-storage-block.adoc[]. \ No newline at end of file diff --git a/docs/pages/storage/16k-storage-block.adoc b/docs/pages/storage/16k-storage-block.adoc new file mode 100644 index 0000000000..139f9ddf9a --- /dev/null +++ b/docs/pages/storage/16k-storage-block.adoc @@ -0,0 +1,9 @@ += 16k Storage Block +:icon: 16k-storage-block.png +:from: v0.3.0-alpha + +include::../../partials/storage-block.adoc[] + +== Storage capacity + +The {doctitle} can store 16.000 items. \ No newline at end of file diff --git a/docs/pages/storage/16k-storage-disk.adoc b/docs/pages/storage/16k-storage-disk.adoc new file mode 100644 index 0000000000..b4117a8d9b --- /dev/null +++ b/docs/pages/storage/16k-storage-disk.adoc @@ -0,0 +1,9 @@ += 16k Storage Disk +:icon: 16k-storage-disk.png +:from: v0.3.0-alpha + +include::../../partials/storage-disk.adoc[] + +== Storage capacity + +The {doctitle} can store 16.000 items. \ No newline at end of file diff --git a/docs/pages/storage/16k-storage-part.adoc b/docs/pages/storage/16k-storage-part.adoc new file mode 100644 index 0000000000..4b83a4d948 --- /dev/null +++ b/docs/pages/storage/16k-storage-part.adoc @@ -0,0 +1,5 @@ += 16k Storage Part +:icon: 16k-storage-part.png +:from: v0.3.0-alpha + +The {doctitle} is used to craft the xref:16k-storage-block.adoc[]. \ No newline at end of file diff --git a/docs/pages/storage/1k-storage-block.adoc b/docs/pages/storage/1k-storage-block.adoc new file mode 100644 index 0000000000..d71c5535e1 --- /dev/null +++ b/docs/pages/storage/1k-storage-block.adoc @@ -0,0 +1,9 @@ += 1k Storage Block +:icon: 1k-storage-block.png +:from: v0.3.0-alpha + +include::../../partials/storage-block.adoc[] + +== Storage capacity + +The {doctitle} can store 1.000 items. \ No newline at end of file diff --git a/docs/pages/storage/1k-storage-disk.adoc b/docs/pages/storage/1k-storage-disk.adoc new file mode 100644 index 0000000000..0f03eabbb4 --- /dev/null +++ b/docs/pages/storage/1k-storage-disk.adoc @@ -0,0 +1,9 @@ += 1k Storage Disk +:icon: 1k-storage-disk.png +:from: v0.3.0-alpha + +include::../../partials/storage-disk.adoc[] + +== Storage capacity + +The {doctitle} can store 1.000 items. \ No newline at end of file diff --git a/docs/pages/storage/1k-storage-part.adoc b/docs/pages/storage/1k-storage-part.adoc new file mode 100644 index 0000000000..e0252100c2 --- /dev/null +++ b/docs/pages/storage/1k-storage-part.adoc @@ -0,0 +1,5 @@ += 1k Storage Part +:icon: 1k-storage-part.png +:from: v0.3.0-alpha + +The {doctitle} is used to craft the xref:1k-storage-block.adoc[]. \ No newline at end of file diff --git a/docs/pages/storage/256k-fluid-storage-block.adoc b/docs/pages/storage/256k-fluid-storage-block.adoc new file mode 100644 index 0000000000..f40b4b316b --- /dev/null +++ b/docs/pages/storage/256k-fluid-storage-block.adoc @@ -0,0 +1,9 @@ += 256k Fluid Storage Block +:icon: 256k-fluid-storage-block.png +:from: v0.9.0-beta + +include::../../partials/fluid-storage-block.adoc[] + +== Storage capacity + +The {doctitle} can store 256.000 millibuckets or 256 buckets of any fluid. \ No newline at end of file diff --git a/docs/pages/storage/256k-fluid-storage-disk.adoc b/docs/pages/storage/256k-fluid-storage-disk.adoc new file mode 100644 index 0000000000..4c2d83c6fa --- /dev/null +++ b/docs/pages/storage/256k-fluid-storage-disk.adoc @@ -0,0 +1,9 @@ += 256k Fluid Storage Disk +:icon: 256k-fluid-storage-disk.png +:from: v0.9.0-beta + +include::../../partials/fluid-storage-disk.adoc[] + +== Storage capacity + +The {doctitle} can store 256.000 millibuckets or 256 buckets of any fluid. \ No newline at end of file diff --git a/docs/pages/storage/256k-fluid-storage-part.adoc b/docs/pages/storage/256k-fluid-storage-part.adoc new file mode 100644 index 0000000000..1c4a447c5c --- /dev/null +++ b/docs/pages/storage/256k-fluid-storage-part.adoc @@ -0,0 +1,5 @@ += 256k Fluid Storage Part +:icon: 256k-fluid-storage-part.png +:from: v0.9.0-beta + +The {doctitle} is used to craft the xref:256k-fluid-storage-disk.adoc[] and xref:256k-fluid-storage-block.adoc[]. \ No newline at end of file diff --git a/docs/pages/storage/4096k-fluid-storage-block.adoc b/docs/pages/storage/4096k-fluid-storage-block.adoc new file mode 100644 index 0000000000..a1989b8358 --- /dev/null +++ b/docs/pages/storage/4096k-fluid-storage-block.adoc @@ -0,0 +1,9 @@ += 4096k Fluid Storage Block +:icon: 4096k-fluid-storage-block.png +:from: v0.9.0-beta + +include::../../partials/fluid-storage-block.adoc[] + +== Storage capacity + +The {doctitle} can store 4096.000 millibuckets or 4096 buckets of any fluid. \ No newline at end of file diff --git a/docs/pages/storage/4096k-fluid-storage-disk.adoc b/docs/pages/storage/4096k-fluid-storage-disk.adoc new file mode 100644 index 0000000000..35cdc08a1a --- /dev/null +++ b/docs/pages/storage/4096k-fluid-storage-disk.adoc @@ -0,0 +1,9 @@ += 4096k Fluid Storage Disk +:icon: 4096k-fluid-storage-disk.png +:from: v0.9.0-beta + +include::../../partials/fluid-storage-disk.adoc[] + +== Storage capacity + +The {doctitle} can store 4096.000 millibuckets or 4096 buckets of any fluid. \ No newline at end of file diff --git a/docs/pages/storage/4096k-fluid-storage-part.adoc b/docs/pages/storage/4096k-fluid-storage-part.adoc new file mode 100644 index 0000000000..b953c51153 --- /dev/null +++ b/docs/pages/storage/4096k-fluid-storage-part.adoc @@ -0,0 +1,5 @@ += 4096k Fluid Storage Part +:icon: 4096k-fluid-storage-part.png +:from: v0.9.0-beta + +The {doctitle} is used to craft the xref:4096k-fluid-storage-disk.adoc[] and xref:4096k-fluid-storage-block.adoc[]. \ No newline at end of file diff --git a/docs/pages/storage/4k-storage-block.adoc b/docs/pages/storage/4k-storage-block.adoc new file mode 100644 index 0000000000..d3062b38fd --- /dev/null +++ b/docs/pages/storage/4k-storage-block.adoc @@ -0,0 +1,9 @@ += 4k Storage Block +:icon: 4k-storage-block.png +:from: v0.3.0-alpha + +include::../../partials/storage-block.adoc[] + +== Storage capacity + +The {doctitle} can store 4.000 items. \ No newline at end of file diff --git a/docs/pages/storage/4k-storage-disk.adoc b/docs/pages/storage/4k-storage-disk.adoc new file mode 100644 index 0000000000..4798093724 --- /dev/null +++ b/docs/pages/storage/4k-storage-disk.adoc @@ -0,0 +1,9 @@ += 4k Storage Disk +:icon: 4k-storage-disk.png +:from: v0.3.0-alpha + +include::../../partials/storage-disk.adoc[] + +== Storage capacity + +The {doctitle} can store 4.000 items. \ No newline at end of file diff --git a/docs/pages/storage/4k-storage-part.adoc b/docs/pages/storage/4k-storage-part.adoc new file mode 100644 index 0000000000..a9a64fd786 --- /dev/null +++ b/docs/pages/storage/4k-storage-part.adoc @@ -0,0 +1,5 @@ += 4k Storage Part +:icon: 4k-storage-part.png +:from: v0.3.0-alpha + +The {doctitle} is used to craft the xref:4k-storage-block.adoc[]. \ No newline at end of file diff --git a/docs/pages/storage/64k-fluid-storage-block.adoc b/docs/pages/storage/64k-fluid-storage-block.adoc new file mode 100644 index 0000000000..cb3673e868 --- /dev/null +++ b/docs/pages/storage/64k-fluid-storage-block.adoc @@ -0,0 +1,9 @@ += 64k Fluid Storage Block +:icon: 64k-storage-block.png +:from: v0.9.0-beta + +include::../../partials/fluid-storage-block.adoc[] + +== Storage capacity + +The {doctitle} can store 64.000 millibuckets or 64 buckets of any fluid. \ No newline at end of file diff --git a/docs/pages/storage/64k-fluid-storage-disk.adoc b/docs/pages/storage/64k-fluid-storage-disk.adoc new file mode 100644 index 0000000000..5f6b67fbb4 --- /dev/null +++ b/docs/pages/storage/64k-fluid-storage-disk.adoc @@ -0,0 +1,9 @@ += 64k Fluid Storage Disk +:icon: 64k-fluid-storage-disk.png +:from: v0.9.0-beta + +include::../../partials/fluid-storage-disk.adoc[] + +== Storage capacity + +The {doctitle} can store 64.000 millibuckets or 64 buckets of any fluid. \ No newline at end of file diff --git a/docs/pages/storage/64k-fluid-storage-part.adoc b/docs/pages/storage/64k-fluid-storage-part.adoc new file mode 100644 index 0000000000..3f2afb4d1e --- /dev/null +++ b/docs/pages/storage/64k-fluid-storage-part.adoc @@ -0,0 +1,5 @@ += 64k Fluid Storage Part +:icon: 64k-fluid-storage-part.png +:from: v0.9.0-beta + +The {doctitle} is used to craft the xref:64k-fluid-storage-disk.adoc[] and xref:64k-fluid-storage-block.adoc[]. \ No newline at end of file diff --git a/docs/pages/storage/64k-storage-block.adoc b/docs/pages/storage/64k-storage-block.adoc new file mode 100644 index 0000000000..f274383b05 --- /dev/null +++ b/docs/pages/storage/64k-storage-block.adoc @@ -0,0 +1,9 @@ += 64k Storage Block +:icon: 64k-storage-block.png +:from: v0.3.0-alpha + +include::../../partials/storage-block.adoc[] + +== Storage capacity + +The {doctitle} can store 64.000 items. \ No newline at end of file diff --git a/docs/pages/storage/64k-storage-disk.adoc b/docs/pages/storage/64k-storage-disk.adoc new file mode 100644 index 0000000000..38c2c189ea --- /dev/null +++ b/docs/pages/storage/64k-storage-disk.adoc @@ -0,0 +1,9 @@ += 64k Storage Disk +:icon: 64k-storage-disk.png +:from: v0.3.0-alpha + +include::../../partials/storage-disk.adoc[] + +== Storage capacity + +The {doctitle} can store 64.000 items. \ No newline at end of file diff --git a/docs/pages/storage/64k-storage-part.adoc b/docs/pages/storage/64k-storage-part.adoc new file mode 100644 index 0000000000..7b23999e1e --- /dev/null +++ b/docs/pages/storage/64k-storage-part.adoc @@ -0,0 +1,5 @@ += 64k Storage Part +:icon: 64k-storage-part.png +:from: v0.3.0-alpha + +The {doctitle} is used to craft the xref:64k-storage-block.adoc[]. \ No newline at end of file diff --git a/docs/pages/storage/creative-fluid-storage-block.adoc b/docs/pages/storage/creative-fluid-storage-block.adoc new file mode 100644 index 0000000000..8e634aee1e --- /dev/null +++ b/docs/pages/storage/creative-fluid-storage-block.adoc @@ -0,0 +1,11 @@ += Creative Fluid Storage Block +:icon: creative-fluid-storage-block.png +:from: v0.9.0-beta + +include::../../partials/fluid-storage-block.adoc[] + +== Storage capacity + +The {doctitle} can store an infinite amount of buckets. + +It can only be obtained in creative mode. \ No newline at end of file diff --git a/docs/pages/storage/creative-fluid-storage-disk.adoc b/docs/pages/storage/creative-fluid-storage-disk.adoc new file mode 100644 index 0000000000..756d66aa78 --- /dev/null +++ b/docs/pages/storage/creative-fluid-storage-disk.adoc @@ -0,0 +1,11 @@ += Creative Fluid Storage Disk +:icon: creative-fluid-storage-disk.png +:from: v0.9.0-beta + +include::../../partials/fluid-storage-disk.adoc[] + +== Storage capacity + +The {doctitle} can store an infinite amount of buckets. + +It can only be obtained in creative mode. \ No newline at end of file diff --git a/docs/pages/storage/creative-storage-block.adoc b/docs/pages/storage/creative-storage-block.adoc new file mode 100644 index 0000000000..6d128f512c --- /dev/null +++ b/docs/pages/storage/creative-storage-block.adoc @@ -0,0 +1,11 @@ += Creative Storage Block +:icon: creative-storage-block.png +:from: v0.3.0-alpha + +include::../../partials/storage-block.adoc[] + +== Storage capacity + +The {doctitle} can store an infinite amount of items. + +It can only be obtained in creative mode. \ No newline at end of file diff --git a/docs/pages/storage/creative-storage-disk.adoc b/docs/pages/storage/creative-storage-disk.adoc new file mode 100644 index 0000000000..a48a099faf --- /dev/null +++ b/docs/pages/storage/creative-storage-disk.adoc @@ -0,0 +1,11 @@ += Creative Storage Disk +:icon: creative-storage-disk.png +:from: v0.3.0-alpha + +include::../../partials/storage-disk.adoc[] + +== Storage capacity + +The {doctitle} can store an infinite amount of items. + +It can only be obtained in creative mode. \ No newline at end of file diff --git a/docs/pages/storage/disk-drive.adoc b/docs/pages/storage/disk-drive.adoc new file mode 100644 index 0000000000..0b05af56c6 --- /dev/null +++ b/docs/pages/storage/disk-drive.adoc @@ -0,0 +1,23 @@ += Disk Drive +:icon: disk-drive.png +:from: v0.3.0-alpha + +The Disk Drive is the block in which you store xref:index.adoc#_storage_disks[storage disks] or xref:index.adoc#_fluid_storage_disks[fluid storage disks]. + +== Priority + +A (negative or positive) priority can be chosen (where a higher priority gets higher precedence to place items in). + +== Whitelist and blacklist + +There is also a whitelist and blacklist to only allow or forbid some items or fluids from entering the xref:index.adoc#_storage_disks[storage disks] or xref:index.adoc#_fluid_storage_disks[fluid storage disks] respectively. + +The whitelist or blacklist can be configured to be NBT or damage sensitive. + +== Mode + +The Disk Drive has support for the following modes: + +- Insert and extract (default) +- Insert only +- Extract only \ No newline at end of file diff --git a/docs/pages/storage/external-storage.adoc b/docs/pages/storage/external-storage.adoc new file mode 100644 index 0000000000..239f29d2d6 --- /dev/null +++ b/docs/pages/storage/external-storage.adoc @@ -0,0 +1,23 @@ += External Storage +:from: v0.3.0-alpha +:icon: external-storage.png + +The {doctitle} is a block that provides the storage network with storage of the inventory or fluid tank in front of the device. + +== Priority + +A (negative or positive) priority can be chosen (where a higher priority gets higher precedence to place items in). + +== Whitelist and blacklist + +There is also a whitelist and blacklist option to only allow or forbid some items or fluids from entering the connected inventory. + +The whitelist or blacklist can be configured to be NBT or damage sensitive. + +== Mode + +The {doctitle} has support for the following modes: + +- Insert and extract (default) +- Insert only +- Extract only \ No newline at end of file diff --git a/docs/pages/storage/index.adoc b/docs/pages/storage/index.adoc new file mode 100644 index 0000000000..e679f4240e --- /dev/null +++ b/docs/pages/storage/index.adoc @@ -0,0 +1,61 @@ += Storage + +- xref:storing-externally.adoc[] +- xref:storing-fluids.adoc[] + +== Network devices + +- xref:disk-drive.adoc[] +- xref:external-storage.adoc[] + +[#_storage_parts] +== Storage parts + +- xref:1k-storage-part.adoc[] +- xref:4k-storage-part.adoc[] +- xref:16k-storage-part.adoc[] +- xref:64k-storage-part.adoc[] + +[#_storage_disks] +== Storage disks + +- xref:1k-storage-disk.adoc[] +- xref:4k-storage-disk.adoc[] +- xref:16k-storage-disk.adoc[] +- xref:64k-storage-disk.adoc[] +- xref:creative-storage-disk.adoc[] + +[#_storage_blocks] +== Storage blocks + +- xref:1k-storage-block.adoc[] +- xref:4k-storage-block.adoc[] +- xref:16k-storage-block.adoc[] +- xref:64k-storage-block.adoc[] +- xref:creative-storage-block.adoc[] + +[#_fluid_storage_parts] +== Fluid storage parts + +- xref:64k-fluid-storage-part.adoc[] +- xref:256k-fluid-storage-part.adoc[] +- xref:1024k-fluid-storage-part.adoc[] +- xref:4096k-fluid-storage-part.adoc[] + +[#_fluid_storage_disks] +== Fluid storage disks + +- xref:64k-fluid-storage-disk.adoc[] +- xref:256k-fluid-storage-disk.adoc[] +- xref:1024k-fluid-storage-disk.adoc[] +- xref:4096k-fluid-storage-disk.adoc[] +- xref:creative-fluid-storage-disk.adoc[] + +[#_fluid_storage_blocks] +== Fluid storage blocks + +- xref:64k-fluid-storage-block.adoc[] +- xref:256k-fluid-storage-block.adoc[] +- xref:1024k-fluid-storage-block.adoc[] +- xref:4096k-fluid-storage-block.adoc[] +- xref:creative-fluid-storage-block.adoc[] diff --git a/docs/pages/storage/storage-housing.adoc b/docs/pages/storage/storage-housing.adoc new file mode 100644 index 0000000000..e622eeffa8 --- /dev/null +++ b/docs/pages/storage/storage-housing.adoc @@ -0,0 +1,7 @@ += Storage Housing +:icon: storage-housing.png +:from: v0.6.0-alpha + +A Storage Housing is a xref:index.adoc#_storage_disks[storage disk] or xref:index.adoc#_fluid_storage_disks[fluid storage disk] without any xref:index.adoc#_storage_parts[storage part] or xref:index.adoc#_fluid_storage_parts[fluid storage part] assigned to it. + +The player can craft another xref:index.adoc#_storage_disks[storage disk] or xref:index.adoc#_fluid_storage_disks[fluid storage disk] with this item by combining the Storage Housing with a xref:index.adoc#_storage_parts[storage part] or xref:index.adoc#_fluid_storage_parts[fluid storage part] respectively. \ No newline at end of file diff --git a/docs/pages/storage/storing-externally.adoc b/docs/pages/storage/storing-externally.adoc new file mode 100644 index 0000000000..fd7f65fc20 --- /dev/null +++ b/docs/pages/storage/storing-externally.adoc @@ -0,0 +1,32 @@ += Storing externally + +So far you've used xref:index.adoc#_storage_disks[storage disks] or xref:index.adoc#_storage_blocks[storage blocks]. +What if you want to use a chest or another inventory as storage? + +== The External Storage + +Craft an xref:external-storage.adoc[] and connect it to an external inventory like a link:https://minecraft.gamepedia.com/Chest[Chest]. + +If you now insert items, they will go in the inventory. + +You can also filter items that can enter the external inventory with the filter slots. + +== Supported storages + +The xref:external-storage.adoc[] supports every block that is an inventory. +Some examples: + +- link:https://minecraft.gamepedia.com/Chest[Chests] +- Storage Drawers +- Regular drawers +- Drawer Controller +- Iron Chests +- etc... + +== Using an External Storage alongside other storages + +When you insert or extract an item from the storage network, Refined Storage will extract or insert from the storage with the highest priority first. + +Simply give a storage a higher priority than the other one, and Refined Storage will prioritize correctly. + +If the storage is full, Refined Storage will attempt to insert or extract from the next available storage, with a lower priority. \ No newline at end of file diff --git a/docs/pages/storage/storing-fluids.adoc b/docs/pages/storage/storing-fluids.adoc new file mode 100644 index 0000000000..85210e1dce --- /dev/null +++ b/docs/pages/storage/storing-fluids.adoc @@ -0,0 +1,25 @@ += Storing fluids + +As opposed to only item storage, Refined Storage is able to store fluids as well. +This is done in the entirely same way as item storages. + +All the things you can do to manipulate items (with xref:../input-and-output/exporter.adoc[exporters] or xref:../input-and-output/importer.adoc[importers]) you can do with fluids as well. + +== Storage + +The same way as you connect item storages, you can connect fluid storages as well: + +- xref:index.adoc#_fluid_storage_disks[Any fluid storage disk] in a xref:disk-drive.adoc[] +- xref:index.adoc#_fluid_storage_blocks[Any fluid storage block] +- xref:external-storage.adoc[] in fluid mode + +== Accessing fluids + +Use a xref:../viewing-resources/fluid-grid.adoc[]. + +== Manipulating fluids + +Any block that would manipulate items can manipulate fluids as well by simply putting the block in fluid mode. + +There is one exception to this: the xref:../input-and-output/interface.adoc[] has no fluid mode. +Use a xref:../input-and-output/fluid-interface.adoc[] instead. \ No newline at end of file diff --git a/docs/pages/upgrades/crafting-upgrade.adoc b/docs/pages/upgrades/crafting-upgrade.adoc new file mode 100644 index 0000000000..2b2fc4049e --- /dev/null +++ b/docs/pages/upgrades/crafting-upgrade.adoc @@ -0,0 +1,7 @@ += Crafting Upgrade +:icon: crafting-upgrade.png +:from: v0.6.0-alpha + +The {doctitle} will schedule a crafting task when the item being used in a device is needed but not available. + +By using this upgrade, the amount of FE/t that this device draws will increase. \ No newline at end of file diff --git a/docs/pages/upgrades/fortune-upgrade.adoc b/docs/pages/upgrades/fortune-upgrade.adoc new file mode 100644 index 0000000000..0ec727dbca --- /dev/null +++ b/docs/pages/upgrades/fortune-upgrade.adoc @@ -0,0 +1,13 @@ += Fortune Upgrade +:icon: fortune-upgrade.png +:from: v1.2.0 + +The {doctitle} will make the xref:../input-and-output/destructor.adoc[] use a certain fortune level (depending on which upgrade you have) on the block it is breaking. + +This upgrade has 3 versions: + +- Fortune 1 +- Fortune 2 +- Fortune 3 + +By using this upgrade, the amount of FE/t that this device draws will increase. \ No newline at end of file diff --git a/docs/pages/upgrades/index.adoc b/docs/pages/upgrades/index.adoc new file mode 100644 index 0000000000..b94990d69c --- /dev/null +++ b/docs/pages/upgrades/index.adoc @@ -0,0 +1,11 @@ += Upgrades + +- xref:upgrade.adoc[] +- xref:range-upgrade.adoc[] +- xref:speed-upgrade.adoc[] +- xref:stack-upgrade.adoc[] +- xref:crafting-upgrade.adoc[] +- xref:regulator-upgrade.adoc[] +- xref:fortune-upgrade.adoc[] +- xref:silk-touch-upgrade.adoc[] +- xref:interdimensional-upgrade.adoc[] diff --git a/docs/pages/upgrades/interdimensional-upgrade.adoc b/docs/pages/upgrades/interdimensional-upgrade.adoc new file mode 100644 index 0000000000..3c4ab954f2 --- /dev/null +++ b/docs/pages/upgrades/interdimensional-upgrade.adoc @@ -0,0 +1,13 @@ += Interdimensional Upgrade +:icon: interdimensional-upgrade.png +:from: v0.8.14-beta +:to: v1.6.10 + +[.alert.alert-warning] +**** +This upgrade has been removed in v1.6.10. The xref:../wireless-networking/network-transmitter.adoc[] is now cross dimensional by default. +**** + +The Interdimensional Upgrade is an upgrade that allows the xref:../wireless-networking/network-transmitter.adoc[] to work cross-dimensionally. + +This upgrade takes a lot of extra FE/t by default (1000 FE/t extra). \ No newline at end of file diff --git a/docs/pages/upgrades/range-upgrade.adoc b/docs/pages/upgrades/range-upgrade.adoc new file mode 100644 index 0000000000..27671768cd --- /dev/null +++ b/docs/pages/upgrades/range-upgrade.adoc @@ -0,0 +1,7 @@ += Range Upgrade +:icon: range-upgrade.png +:from: v0.6.0-alpha + +The {doctitle} increases the range of the xref:../wireless-networking/wireless-transmitter.adoc[]. + +By using this upgrade, the amount of FE/t that this device draws will increase. \ No newline at end of file diff --git a/docs/pages/upgrades/regulator-upgrade.adoc b/docs/pages/upgrades/regulator-upgrade.adoc new file mode 100644 index 0000000000..f49d5eac02 --- /dev/null +++ b/docs/pages/upgrades/regulator-upgrade.adoc @@ -0,0 +1,13 @@ += Regulator Upgrade +:icon: regulator-upgrade.png +:from: v1.8.3-beta + +The Regulator Upgrade is an upgrade that can be inserted into an xref:../input-and-output/exporter.adoc[] to keep certain items or fluids in stock in the connected inventory. + +It will try to keep the connected inventory stocked by using items or fluids from the storage network. + +As soon as the upgrade is inserted, you can right click on a filtered item or fluid in the xref:../input-and-output/exporter.adoc[] GUI to configure the amount to keep in stock. + +Additionally, the Regulator Upgrade can be combined with a xref:crafting-upgrade.adoc[] to start autocrafting tasks when the stock from the storage network runs out. + +By using this upgrade, the amount of FE/t that this device draws will increase. diff --git a/docs/pages/upgrades/silk-touch-upgrade.adoc b/docs/pages/upgrades/silk-touch-upgrade.adoc new file mode 100644 index 0000000000..08f63b4314 --- /dev/null +++ b/docs/pages/upgrades/silk-touch-upgrade.adoc @@ -0,0 +1,7 @@ += Silk Touch Upgrade +:icon: silk-touch-upgrade.png +:from: v1.2.0 + +The {doctitle} makes the xref:../input-and-output/destructor.adoc[] use Silk Touch on the blocks that it is breaking. + +By using this upgrade, the amount of FE/t that this device draws will increase. \ No newline at end of file diff --git a/docs/pages/upgrades/speed-upgrade.adoc b/docs/pages/upgrades/speed-upgrade.adoc new file mode 100644 index 0000000000..40daf93af1 --- /dev/null +++ b/docs/pages/upgrades/speed-upgrade.adoc @@ -0,0 +1,7 @@ += Speed Upgrade +:icon: speed-upgrade.png +:from: v0.6.0-alpha + +The {doctitle} will increase the speed of the device that it is being inserted to. + +By using this upgrade, the amount of FE/t that this device draws will increase. \ No newline at end of file diff --git a/docs/pages/upgrades/stack-upgrade.adoc b/docs/pages/upgrades/stack-upgrade.adoc new file mode 100644 index 0000000000..8c5d45081f --- /dev/null +++ b/docs/pages/upgrades/stack-upgrade.adoc @@ -0,0 +1,9 @@ += Stack Upgrade +:icon: stack-upgrade.png +:from: v0.7.7-beta + +The {doctitle} will improve item or fluid transfer speeds by using a whole stack (64 items) instead of 1 item at a time. + +It can be combined with xref:speed-upgrade.adoc[speed upgrades] to let the device go to the next slot quicker. + +By using this upgrade, the amount of FE/t that this device draws will increase. \ No newline at end of file diff --git a/docs/pages/upgrades/upgrade.adoc b/docs/pages/upgrades/upgrade.adoc new file mode 100644 index 0000000000..d9af0dfa2e --- /dev/null +++ b/docs/pages/upgrades/upgrade.adoc @@ -0,0 +1,5 @@ += Upgrade +:icon: upgrade.png +:from: v0.6.0-alpha + +The {doctitle} is the base item used for xref:index.adoc[every type of upgrade]. \ No newline at end of file diff --git a/docs/pages/utility/advanced-processor.adoc b/docs/pages/utility/advanced-processor.adoc new file mode 100644 index 0000000000..9a3c7fe7bf --- /dev/null +++ b/docs/pages/utility/advanced-processor.adoc @@ -0,0 +1,5 @@ += Advanced Processor +:icon: advanced-processor.png +:from: v0.3.0-alpha + +include::../../partials/processor.adoc[] \ No newline at end of file diff --git a/docs/pages/utility/basic-processor.adoc b/docs/pages/utility/basic-processor.adoc new file mode 100644 index 0000000000..d23bf24006 --- /dev/null +++ b/docs/pages/utility/basic-processor.adoc @@ -0,0 +1,5 @@ += Basic Processor +:icon: basic-processor.png +:from: v0.3.0-alpha + +include::../../partials/processor.adoc[] \ No newline at end of file diff --git a/docs/pages/utility/block-of-quartz-enriched-iron.adoc b/docs/pages/utility/block-of-quartz-enriched-iron.adoc new file mode 100644 index 0000000000..8b0ed520f4 --- /dev/null +++ b/docs/pages/utility/block-of-quartz-enriched-iron.adoc @@ -0,0 +1,5 @@ += Block of Quartz Enriched Iron +:from: v1.4.0-beta +:icon: block-of-quartz-enriched-iron.png + +The {doctitle} is xref:quartz-enriched-iron.adoc[] in block form. \ No newline at end of file diff --git a/docs/pages/utility/construction-core.adoc b/docs/pages/utility/construction-core.adoc new file mode 100644 index 0000000000..b24a6ea7f5 --- /dev/null +++ b/docs/pages/utility/construction-core.adoc @@ -0,0 +1,5 @@ += Construction Core +:from: v0.3.0-alpha +:icon: construction-core.png + +The {doctitle} is used in recipes for devices that turn resources from the storage network into resources in the world. \ No newline at end of file diff --git a/docs/pages/utility/cover.adoc b/docs/pages/utility/cover.adoc new file mode 100644 index 0000000000..30841c6fa1 --- /dev/null +++ b/docs/pages/utility/cover.adoc @@ -0,0 +1,11 @@ += Cover +:icon: cover.png +:from: v1.6.0-alpha + +A {doctitle} is an item used to hide xref:../networking/cable.adoc[cables]. + +You can also hide blocks that have a cable on them, like the xref:../input-and-output/importer.adoc[] or xref:../input-and-output/exporter.adoc[]. + +It will block network connections, xref:../networking/cable.adoc[cables] can't pass through the "hidden" side. + +They can be removed by sneaking and right-clicking them with the xref:wrench.adoc[]. diff --git a/docs/pages/utility/cut-silicon.adoc b/docs/pages/utility/cut-silicon.adoc new file mode 100644 index 0000000000..72e74146db --- /dev/null +++ b/docs/pages/utility/cut-silicon.adoc @@ -0,0 +1,12 @@ += Cut Silicon +:icon: cut-silicon.png +:from: v0.3.0-alpha +:to: v1.6.6 + +[.alert.alert-warning] +**** +{doctitle} has been removed in v1.6.6. It has been replaced with xref:processor-binding.adoc[]. +**** + +{doctitle} is used to craft the various processors. +It is made with a xref:cutting-tool.adoc[]. \ No newline at end of file diff --git a/docs/pages/utility/cutting-tool.adoc b/docs/pages/utility/cutting-tool.adoc new file mode 100644 index 0000000000..128fc6841c --- /dev/null +++ b/docs/pages/utility/cutting-tool.adoc @@ -0,0 +1,12 @@ += Cutting Tool +:icon: cutting-tool.png +:from: v1.6.0 +:to: v1.7.0-alpha + +[.alert.alert-warning] +**** +The Cutting Tool has been removed in v1.7.0-alpha. +Crafting covers now uses an iron nugget instead. +**** + +The Cutting Tool is a tool that is used to craft xref:../utility/cover.adoc[covers]. \ No newline at end of file diff --git a/docs/pages/utility/destruction-core.adoc b/docs/pages/utility/destruction-core.adoc new file mode 100644 index 0000000000..fabab02765 --- /dev/null +++ b/docs/pages/utility/destruction-core.adoc @@ -0,0 +1,5 @@ += Destruction Core +:from: v0.3.0-alpha +:icon: destruction-core.png + +The {doctitle} is used in recipes for devices that turn resources from the world into resources in the storage network. \ No newline at end of file diff --git a/docs/pages/utility/filter.adoc b/docs/pages/utility/filter.adoc new file mode 100644 index 0000000000..5189898f58 --- /dev/null +++ b/docs/pages/utility/filter.adoc @@ -0,0 +1,31 @@ += Filter +:icon: filter.png +:from: v0.8.13-beta + +The {doctitle} is an item that can be used in any xref:../viewing-resources/grid.adoc[]. + +In the {doctitle}'s GUI, which can be opened by pressing right click while holding the filter in hand, the player can specify which items and fluids can be visible. + +== Items and fluids + +The Grid can filter fluids in the xref:../viewing-resources/fluid-grid.adoc[] and items in any other xref:../viewing-resources/grid.adoc[] by toggling between item and fluid mode. + +== {doctitle}ing + +The player can choose to let the filter be damage or damage sensitive. +It is also possible to use a mod filter. + +The {doctitle} can be set in a whitelist or blacklist mode, too. + +== Icon and name + +The player can also configure an icon and name for the {doctitle}. + +In item and fluid mode an icon can be specified. + +As soon as the {doctitle} has an icon specified, it will appear as a tab in the xref:../viewing-resources/grid.adoc[]. +Then, open the tab to see the filtered items or fluids. + +== Clearing + +Use SHIFT + right click in your inventory while holding the {doctitle} to clear it. diff --git a/docs/pages/utility/hollow-cover.adoc b/docs/pages/utility/hollow-cover.adoc new file mode 100644 index 0000000000..bcbc2c091b --- /dev/null +++ b/docs/pages/utility/hollow-cover.adoc @@ -0,0 +1,12 @@ += Hollow Cover +:icon: hollow-cover.png +:from: v1.6.0 + +A {doctitle} is the same as a xref:cover.adoc[] but has a hole so that you can pass xref:../networking/cable.adoc[cables] through it. + +You can also put it on the front of an xref:../input-and-output/importer.adoc[] or xref:../input-and-output/exporter.adoc[] to hide part of the block. + +It will let a network signal through. + +They can be removed by sneaking and right-clicking them with the xref:wrench.adoc[]. + diff --git a/docs/pages/utility/improved-processor.adoc b/docs/pages/utility/improved-processor.adoc new file mode 100644 index 0000000000..4df6500196 --- /dev/null +++ b/docs/pages/utility/improved-processor.adoc @@ -0,0 +1,5 @@ += Improved Processor +:icon: improved-processor.png +:from: v0.3.0-alpha + +include::../../partials/processor.adoc[] \ No newline at end of file diff --git a/docs/pages/utility/index.adoc b/docs/pages/utility/index.adoc new file mode 100644 index 0000000000..6da739a1b0 --- /dev/null +++ b/docs/pages/utility/index.adoc @@ -0,0 +1,34 @@ += Utility + +- xref:quartz-enriched-iron.adoc[] +- xref:block-of-quartz-enriched-iron.adoc[] +- xref:silicon.adoc[] +- xref:cut-silicon.adoc[] +- xref:wrench.adoc[] +- xref:cutting-tool.adoc[] +- xref:filter.adoc[] +- xref:machine-casing.adoc[] +- xref:solderer.adoc[] + +== Raw Processors + +- xref:processor-binding.adoc[] +- xref:raw-basic-processor.adoc[] +- xref:raw-improved-processor.adoc[] +- xref:raw-advanced-processor.adoc[] + +== Processors + +- xref:basic-processor.adoc[] +- xref:improved-processor.adoc[] +- xref:advanced-processor.adoc[] + +== Cores + +- xref:construction-core.adoc[] +- xref:destruction-core.adoc[] + +== Covers + +- xref:cover.adoc[] +- xref:hollow-cover.adoc[] \ No newline at end of file diff --git a/docs/pages/utility/machine-casing.adoc b/docs/pages/utility/machine-casing.adoc new file mode 100644 index 0000000000..795e6b1d23 --- /dev/null +++ b/docs/pages/utility/machine-casing.adoc @@ -0,0 +1,5 @@ += Machine Casing +:icon: machine-casing.png +:from: v0.3.0-alpha + +The {doctitle} is a block that is used to craft the various Refined Storage devices. \ No newline at end of file diff --git a/docs/pages/utility/processor-binding.adoc b/docs/pages/utility/processor-binding.adoc new file mode 100644 index 0000000000..dc16187732 --- /dev/null +++ b/docs/pages/utility/processor-binding.adoc @@ -0,0 +1,5 @@ += Processor Binding +:icon: processor-binding.png +:from: v1.6.6 + +{doctitle} is used to craft the various processors. \ No newline at end of file diff --git a/docs/pages/utility/quartz-enriched-iron.adoc b/docs/pages/utility/quartz-enriched-iron.adoc new file mode 100644 index 0000000000..f4a9e612aa --- /dev/null +++ b/docs/pages/utility/quartz-enriched-iron.adoc @@ -0,0 +1,7 @@ += Quartz Enriched Iron +:icon: quartz-enriched-iron.png +:from: v0.3.0-alpha + +{doctitle} is like the name says, iron enriched with quartz. + +It is used in almost all the recipes in Refined Storage. \ No newline at end of file diff --git a/docs/pages/utility/raw-advanced-processor.adoc b/docs/pages/utility/raw-advanced-processor.adoc new file mode 100644 index 0000000000..e10745fedc --- /dev/null +++ b/docs/pages/utility/raw-advanced-processor.adoc @@ -0,0 +1,5 @@ += Raw Advanced Processor +:icon: raw-advanced-processor.png +:from: v0.3.0-alpha + +The {doctitle} is used to craft a xref:advanced-processor.adoc[]. \ No newline at end of file diff --git a/docs/pages/utility/raw-basic-processor.adoc b/docs/pages/utility/raw-basic-processor.adoc new file mode 100644 index 0000000000..d269085042 --- /dev/null +++ b/docs/pages/utility/raw-basic-processor.adoc @@ -0,0 +1,5 @@ += Raw Basic Processor +:icon: raw-basic-processor.png +:from: v0.3.0-alpha + +The {doctitle} is used to craft a xref:basic-processor.adoc[]. \ No newline at end of file diff --git a/docs/pages/utility/raw-improved-processor.adoc b/docs/pages/utility/raw-improved-processor.adoc new file mode 100644 index 0000000000..555f1728f5 --- /dev/null +++ b/docs/pages/utility/raw-improved-processor.adoc @@ -0,0 +1,5 @@ += Raw Improved Processor +:icon: raw-improved-processor.png +:from: v0.3.0-alpha + +The {doctitle} is used to craft a xref:improved-processor.adoc[]. \ No newline at end of file diff --git a/docs/pages/utility/silicon.adoc b/docs/pages/utility/silicon.adoc new file mode 100644 index 0000000000..382df59203 --- /dev/null +++ b/docs/pages/utility/silicon.adoc @@ -0,0 +1,7 @@ += Silicon +:icon: silicon.png +:since: v0.3.0-alpha + +{doctitle} can be obtained by smelting quartz. + +This item has no use other than being used in crafting recipes. \ No newline at end of file diff --git a/docs/pages/utility/solderer.adoc b/docs/pages/utility/solderer.adoc new file mode 100644 index 0000000000..bb3e8b9635 --- /dev/null +++ b/docs/pages/utility/solderer.adoc @@ -0,0 +1,20 @@ += Solderer +:icon: solderer.png +:from: v0.3.0-alpha +:to: v1.6.0 + +[.alert.alert-warning] +**** +The {doctitle} has been removed in v1.6.0. It has been replaced with xref:processor-binding.adoc[]. +**** + +The {doctitle} is a device that is used to craft several items and blocks. + +The {doctitle} is not sided. +You can insert from any side and it'll automatically put the items in the right slot. + +Use of link:https://minecraft.curseforge.com/projects/jei[JEI (Just Enough Items)] is (highly) recommended to see the recipes of the {doctitle}. + +== Applicable upgrades + +- xref:../upgrades/speed-upgrade.adoc[] \ No newline at end of file diff --git a/docs/pages/utility/wrench.adoc b/docs/pages/utility/wrench.adoc new file mode 100644 index 0000000000..12972ca466 --- /dev/null +++ b/docs/pages/utility/wrench.adoc @@ -0,0 +1,10 @@ += Wrench +:icon: wrench.png +:from: v1.2.0 + +The {doctitle} is a tool that can do two things: + +- Rotate blocks +- Break Refined Storage xref:cover.adoc[covers] + +Simply sneak and right click when using the {doctitle}. \ No newline at end of file diff --git a/docs/pages/viewing-resources/crafting-grid.adoc b/docs/pages/viewing-resources/crafting-grid.adoc new file mode 100644 index 0000000000..e7b2e66aca --- /dev/null +++ b/docs/pages/viewing-resources/crafting-grid.adoc @@ -0,0 +1,19 @@ += Crafting Grid +:icon: crafting-grid.png +:from: v0.3.0-alpha + +The {doctitle} is the same as a regular xref:grid.adoc[], but has a crafting inventory. + +When an item is crafted, it won't just clear the crafting slots, but it'll try to retrieve the same items from the storage network again. + +== Recipe transferring + +The {doctitle} integrates with link:https://minecraft.curseforge.com/projects/jei[JEI (Just Enough Items)] so the player can use recipe transferring. + +Refined Storage will warn you when you don't have the required item present in your inventory, storage network or crafting matrix. +Even with this warning, you can still transfer items. + +If you don't have some required items, but autocrafting is available for said items, you can press CTRL + CLICK to start autocrafting for said items. +Note that you need a xref:../autocrafting/pattern.adoc[] configured for these items. + +include::../../partials/recoloring.adoc[] diff --git a/docs/pages/viewing-resources/fluid-grid.adoc b/docs/pages/viewing-resources/fluid-grid.adoc new file mode 100644 index 0000000000..df522cc828 --- /dev/null +++ b/docs/pages/viewing-resources/fluid-grid.adoc @@ -0,0 +1,23 @@ += Fluid Grid +:from: v0.9.0-beta +:icon: fluid-grid.png + +The {doctitle} is the same as a regular xref:grid.adoc[], but is used for viewing fluids in the fluid storage of your storage network. + +== Inserting + +To insert a fluid, players can shift click on a fluid container like a bucket in their player inventory while in the {doctitle} GUI. + +The player can also click the fluid container in the GUI to insert it. + +== Extracting + +Players can extract the fluid by clicking on it. +The {doctitle} will then fill a bucket with the selected fluid. + +Refined Storage will first search an empty bucket in your inventory. +If none is found, a bucket will be searched in your storage network. + +Some fluids cannot be filled in a bucket, then the only way to extract those fluids is by using an xref:../input-and-output/exporter.adoc[]. + +include::../../partials/recoloring.adoc[] diff --git a/docs/pages/viewing-resources/grid.adoc b/docs/pages/viewing-resources/grid.adoc new file mode 100644 index 0000000000..1d79302dc5 --- /dev/null +++ b/docs/pages/viewing-resources/grid.adoc @@ -0,0 +1,93 @@ += Grid +:icon: grid.png +:from: v0.3.0-alpha + +The {doctitle} is a block that allows access to the items and fluids in the storage network. + +The player can extract items or fluids from the central GUI. + +[#_controls] +== Controls + +[cols="1,1"] +|=== +| Type | Description + +| Left click | Takes at most 64 items +| Right click | Takes at most 32 items +| Middle click | Takes 1 item (removed since v1.9.7) +| SHIFT + Mouse scroll in the player inventory | Pushes 1 item to or from the player's inventory (since v1.9.7) +| SHIFT + Mouse scroll in the {doctitle} inventory | Pushes 1 item to or from the {doctitle} inventory (since v1.9.7) +| CTRL + Mouse scroll | Pushes 1 item to or from the player's mouse (since v1.9.7) +| SHIFT | Pushes the items to the player's inventory +| SHIFT + CTRL | Forces the crafting window to open *even if the item or fluid is available* +| CTRL + X | Clears crafting matrix +| Right click on search bar | Clears the search query +| Tab | Selects the search bar when the {doctitle} isn't in autoselection mode +| When in the crafting start GUI, pressing SHIFT | Skips the crafting preview window +|=== + +== Sorting + +The items or fluids in a {doctitle} can be sorted in various ways: + +- By name +- By quantity +- By item ID +- Last modified +- InventoryTweaks sorting (only available if InventoryTweaks is installed) + +The sorting direction can also be chosen (ascending or descending). + +include::../../partials/search-box.adoc[] + +== Filter + +In the sidebar of the {doctitle} there are slots where the player can insert xref:../utility/filter.adoc[filters] to filter certain items in the {doctitle}. + +== Tabs + +A {doctitle} can also have tabs. +When clicking on the tab, only items configured in the xref:../utility/filter.adoc[] are visible. + +To use tabs in the {doctitle}, make a xref:../utility/filter.adoc[] with an icon specified. + +To have more than 4 tabs, put a xref:../utility/filter.adoc[] in a xref:../utility/filter.adoc[]. + +== Sizes + +The size of any {doctitle} can be configured as well: + +- Stretched (default) +- Small +- Medium +- Large + +When choosing the stretched size, the {doctitle} will take up all the vertical screen space. +This can be limited through the `maxRowsStretch` config option. + +== Display + +The {doctitle} can be configured to only show craftable items or only non-craftable items. + +By default, the tooltips for items in a {doctitle} are a little bit bigger to display the total item count and the last modified information. +This can be turned off by using the `detailedTooltip` config option. + +By default, the {doctitle} uses a small font size to display item or fluid quantities. +Use the `largeFont` config option to change this. + +== Remember search query + +The {doctitle} can be configured to remember the search query when closing and re-opening the GUI. +You can do this by modifying the `rememberSearchQuery` config option. + +== Prevent sorting while shift is down + +By default, the {doctitle} doesn't perform sorting when you're shift clicking items out of the storage network. +This is done to prevent items and fluids shifting around your screen. + +As soon as you stop pressing the shift key, the view is sorted again. + +To disable this behavior, modify the `preventSortingWhileShiftIsDown` config option. + +include::../../partials/recoloring.adoc[] diff --git a/docs/pages/viewing-resources/how-to-view-resources.adoc b/docs/pages/viewing-resources/how-to-view-resources.adoc new file mode 100644 index 0000000000..dbf74e2b59 --- /dev/null +++ b/docs/pages/viewing-resources/how-to-view-resources.adoc @@ -0,0 +1,33 @@ += How to view resources + +== Grid + +You can use the xref:grid.adoc[], xref:crafting-grid.adoc[] or xref:fluid-grid.adoc[] to view resources in your network. + +[#_wireless_access] +== Wireless access + +Refined Storage has extensive wireless abilities to access your storage network remotely. + +Craft a xref:../wireless-networking/wireless-grid.adoc[] and right click it on a xref:../networking/controller.adoc[]. + +Craft a xref:../wireless-networking/wireless-transmitter.adoc[] and add it to your network. +You can now access your storage in a radius around the xref:../wireless-networking/wireless-transmitter.adoc[]. + +Want a higher range? +Simply place multiple xref:../wireless-networking/wireless-transmitter.adoc[wireless transmitters] around your world, but not next to each other. + +== Portable Grid + +Want to access an individual xref:../storage/index.adoc#_storage_disks[storage disk]? +Use a xref:portable-grid.adoc[]. + +Give it energy and insert a disk, and you're good to go. +It doesn't depend on a storage network. + +== Storage Monitor + +Want to see how much you have of an item in your storage network? +Connect a xref:storage-monitor.adoc[] and configure an item to display. + +You can then see how much you have of that item and interact with it by inserting or extracting multiple items at once. \ No newline at end of file diff --git a/docs/pages/viewing-resources/index.adoc b/docs/pages/viewing-resources/index.adoc new file mode 100644 index 0000000000..020315621d --- /dev/null +++ b/docs/pages/viewing-resources/index.adoc @@ -0,0 +1,8 @@ += Viewing resources + +- xref:how-to-view-resources.adoc[] +- xref:grid.adoc[] +- xref:crafting-grid.adoc[] +- xref:fluid-grid.adoc[] +- xref:storage-monitor.adoc[] +- xref:portable-grid.adoc[] diff --git a/docs/pages/viewing-resources/portable-grid.adoc b/docs/pages/viewing-resources/portable-grid.adoc new file mode 100644 index 0000000000..1a1f817a2a --- /dev/null +++ b/docs/pages/viewing-resources/portable-grid.adoc @@ -0,0 +1,28 @@ += Portable Grid +:icon: portable-grid.png +:from: v1.4.5-beta + +The {doctitle} is a portable storage that isn't connected to a network. +It allows you to interact with a xref:../storage/index.adoc#_storage_disks[storage disk] while not being connected to a network. + +As soon as you insert a xref:../storage/index.adoc#_storage_disks[storage disk], you can access the contents of your xref:../storage/index.adoc#_storage_disks[storage disk] in the grid view. + +It's essentially a xref:../storage/disk-drive.adoc[] and xref:grid.adoc[] in one block or item. +It can be placed in the world, or, be used as a handheld device as well. + +To place it in the world hold the {doctitle} while sneaking. + +== Energy behavior + +To use the {doctitle} the item or block needs Forge Energy (FE). + +The {doctitle} draws energy on following actions: + +[cols="1,1"] +|=== +|Action|Amount of Forge Energy drawed + +|Opening the {doctitle}|30 FE +|Extracting an item or fluid from storage|3 FE +|Inserting an item or fluid to storage|3 FE +|=== \ No newline at end of file diff --git a/docs/pages/viewing-resources/storage-monitor.adoc b/docs/pages/viewing-resources/storage-monitor.adoc new file mode 100644 index 0000000000..d359e7eebb --- /dev/null +++ b/docs/pages/viewing-resources/storage-monitor.adoc @@ -0,0 +1,24 @@ += Storage Monitor +:icon: storage-monitor.png +:from: v1.4.1-beta + +The {doctitle} is a block that displays the current amount of a certain item or fluid in your storage system. + +== Configuration + +Use SHIFT + right click on the block to open a GUI to configure the item or fluid being displayed. + +== Item inserting and extracting + +- You can extract the item specified from the system by left clicking +- Regular left click for a full stack (64 items) +- Shift left click for 1 of a stack (1 item) +- You can insert items from your inventory that match the item being displayed by right clicking +- Right click quickly to insert all items matching the item displayed in your + +== Fluid inserting and extracting (since v1.8.1) + +- You can extract the fluid specified in bucket from from the system by shift left clicking +- Make sure you have a bucket in your inventory or storage network +- You can insert fluids from your inventory that match the fluid being displayed by right clicking +- Make sure you have a fluid container in your inventory that contains the fluid you want to insert \ No newline at end of file diff --git a/docs/pages/whats-new.adoc b/docs/pages/whats-new.adoc new file mode 100644 index 0000000000..85d66f5607 --- /dev/null +++ b/docs/pages/whats-new.adoc @@ -0,0 +1,26 @@ += What's New + +[#_version_support] +== Version support + +[cols="1,1,1,1,1"] +|=== +|Minecraft version|Refined Storage version range|State|New features|Bugfixes + +|Minecraft 1.20.x|v1.12.x|Maintained|❌|✔️ +|Minecraft 1.19.x|v1.11.x|Maintained|❌|✔️ +|Minecraft 1.18.x|v1.10.x|Maintained|❌|✔️ +|Minecraft 1.17.x|-|Never available|❌|❌ +|Minecraft 1.16.x|v1.9.x|Unmaintained|❌|❌ +|Minecraft 1.15.x|v1.8.x|Unmaintained|❌|❌ +|Minecraft 1.14.x|v1.7.x |Unmaintained|❌|❌ +|Minecraft 1.13.x|-|Never available|❌|❌ +|Minecraft 1.12.x|v1.5.x - v1.6.x|Unmaintained|❌|❌ +|Minecraft 1.11.x|v1.3.x - v1.4.x|Unmaintained|❌|❌ +|Minecraft 1.10.x|v0.8.x - v1.2.x|Unmaintained|❌|❌ +|Minecraft 1.9.x|v0.3.x - v0.7.x|Unmaintained|❌|❌ +|Minecraft 1.8.x|-|Never available|❌|❌ +|Minecraft 1.7.x|-|Never available|❌|❌ +|=== + +Refined Storage v1.x will not be gaining new features as we are building link:https://github.com/refinedmods/refinedstorage2[Refined Storage 2]. diff --git a/docs/pages/wireless-networking/creative-wireless-crafting-monitor.adoc b/docs/pages/wireless-networking/creative-wireless-crafting-monitor.adoc new file mode 100644 index 0000000000..438819fc68 --- /dev/null +++ b/docs/pages/wireless-networking/creative-wireless-crafting-monitor.adoc @@ -0,0 +1,7 @@ += Creative Wireless Crafting Monitor +:icon: wireless-crafting-monitor.png +:from: v1.2.1 + +The {doctitle} is the same as a regular xref:wireless-crafting-monitor.adoc[] but has infinite energy. + +It can only be obtained in creative mode. diff --git a/docs/pages/wireless-networking/creative-wireless-fluid-grid.adoc b/docs/pages/wireless-networking/creative-wireless-fluid-grid.adoc new file mode 100644 index 0000000000..826c8ed429 --- /dev/null +++ b/docs/pages/wireless-networking/creative-wireless-fluid-grid.adoc @@ -0,0 +1,7 @@ += Creative Wireless Fluid Grid +:from: v1.4.0-beta +:icon: wireless-fluid-grid.png + +The {doctitle} is the same as a regular xref:wireless-fluid-grid.adoc[] but has infinite energy. + +It can only be obtained in creative mode. \ No newline at end of file diff --git a/docs/pages/wireless-networking/creative-wireless-grid.adoc b/docs/pages/wireless-networking/creative-wireless-grid.adoc new file mode 100644 index 0000000000..afec341bcf --- /dev/null +++ b/docs/pages/wireless-networking/creative-wireless-grid.adoc @@ -0,0 +1,7 @@ += Creative Wireless Grid +:icon: wireless-grid.png +:from: v0.5.3-alpha + +The {doctitle} is the same as a regular xref:wireless-grid.adoc[] but has infinite energy. + +It can only be obtained in creative mode. \ No newline at end of file diff --git a/docs/pages/wireless-networking/index.adoc b/docs/pages/wireless-networking/index.adoc new file mode 100644 index 0000000000..c53e50660b --- /dev/null +++ b/docs/pages/wireless-networking/index.adoc @@ -0,0 +1,19 @@ += Wireless networking + +- xref:networks-over-long-distances.adoc[] + +== Wireless tools + +- xref:wireless-transmitter.adoc[] +- xref:wireless-grid.adoc[] +- xref:creative-wireless-grid.adoc[] +- xref:wireless-fluid-grid.adoc[] +- xref:creative-wireless-fluid-grid.adoc[] +- xref:wireless-crafting-monitor.adoc[] +- xref:creative-wireless-crafting-monitor.adoc[] + +== Wireless networks + +- xref:network-card.adoc[] +- xref:network-receiver.adoc[] +- xref:network-transmitter.adoc[] diff --git a/docs/pages/wireless-networking/network-card.adoc b/docs/pages/wireless-networking/network-card.adoc new file mode 100644 index 0000000000..22b0387b00 --- /dev/null +++ b/docs/pages/wireless-networking/network-card.adoc @@ -0,0 +1,7 @@ += Network Card +:from: v0.8.13-beta +:icon: network-card.png + +A {doctitle} is an item that stores the coordinates of a xref:network-receiver.adoc[]. + +The player has to insert the {doctitle} in a xref:network-transmitter.adoc[]. \ No newline at end of file diff --git a/docs/pages/wireless-networking/network-receiver.adoc b/docs/pages/wireless-networking/network-receiver.adoc new file mode 100644 index 0000000000..129245787d --- /dev/null +++ b/docs/pages/wireless-networking/network-receiver.adoc @@ -0,0 +1,13 @@ += Network Receiver +:icon: network-receiver.png +:from: v0.8.13-beta + +The {doctitle} is the block that receives a signal from the xref:network-transmitter.adoc[]. + +In order for the {doctitle} to work reliably the {doctitle} has to be chunkloaded. + +include::../../partials/recoloring.adoc[] + +== Using Refined Storage v1.7.x or v1.8.x? + +Cross dimensional functionality isn't available in this version. diff --git a/docs/pages/wireless-networking/network-transmitter.adoc b/docs/pages/wireless-networking/network-transmitter.adoc new file mode 100644 index 0000000000..06fbe6ad02 --- /dev/null +++ b/docs/pages/wireless-networking/network-transmitter.adoc @@ -0,0 +1,15 @@ += Network Transmitter +:icon: network-transmitter.png +:from: v0.8.13-beta + +A {doctitle} sends a network signal to a xref:network-receiver.adoc[] that is specified in the given xref:network-card.adoc[]. + +In order for the {doctitle} to work the xref:../networking/controller.adoc[] where the {doctitle} is connected to has to be chunkloaded. + +The {doctitle} can work in the current dimension or across different dimensions. + +include::../../partials/recoloring.adoc[] + +== Using Refined Storage v1.7.x or v1.8.x? + +Cross dimensional functionality isn't available in this version. \ No newline at end of file diff --git a/docs/pages/wireless-networking/networks-over-long-distances.adoc b/docs/pages/wireless-networking/networks-over-long-distances.adoc new file mode 100644 index 0000000000..68cf575e84 --- /dev/null +++ b/docs/pages/wireless-networking/networks-over-long-distances.adoc @@ -0,0 +1,46 @@ += Networks over long distances + +Refined Storage supports 2 scenarios for long distance networking: + +- xref:../viewing-resources/how-to-view-resources.adoc#_wireless_access[Viewing your resources wirelessly] +- Extending a network over a long distance without using cables (see below) + +== The problem + +Sometimes, you may have different areas all scattered throughout your world. + +Here is the problem: you want access to your Refined Storage system on all of those areas. + +You could lay xref:../networking/cable.adoc[] from your base to every area, but what if said area is 1000 blocks away? +Are you really going to craft 1000 xref:../networking/cable.adoc[cables]? +Didn't think so. + +== The solution + +Use the xref:network-transmitter.adoc[] and xref:network-receiver.adoc[]. + +Simply craft a xref:network-transmitter.adoc[] and connect it to your Refined Storage system in your main base. + +Next up, craft a xref:network-card.adoc[]. +I'll be telling what you need this for in a second, bear with me. + +After crafting a xref:network-card.adoc[], craft a xref:network-receiver.adoc[] and place it in the area far away from your base. + +Take the xref:network-card.adoc[] and right click it on the xref:network-receiver.adoc[]. + +Put the xref:network-card.adoc[] in the xref:network-transmitter.adoc[] so the xref:network-transmitter.adoc[] knows where to send a signal to. + +And now you are done. +Simply connect machines to your xref:network-receiver.adoc[] according to the normal machine connecting rules. + +I suppose you could treat the xref:network-receiver.adoc[] as a xref:... + +== One very important thing to note + +The xref:../networking/controller.adoc[] in your main base and the xref:network-receiver.adoc[] in the other area **both** have to be chunkloaded **before** linking it to the network. + +After linking, both areas have to stay chunkloaded. + +== Using Refined Storage v1.7.x or v1.8.x? + +Cross dimensional functionality isn't available in this version. \ No newline at end of file diff --git a/docs/pages/wireless-networking/wireless-crafting-monitor.adoc b/docs/pages/wireless-networking/wireless-crafting-monitor.adoc new file mode 100644 index 0000000000..0f1adc02a1 --- /dev/null +++ b/docs/pages/wireless-networking/wireless-crafting-monitor.adoc @@ -0,0 +1,39 @@ += Wireless Crafting Monitor +:icon: wireless-crafting-monitor.png +:from: v1.2.1 + +With the {doctitle} the player can see what is crafting from anywhere. + +To activate the {doctitle}, the player has to right click the {doctitle} on a xref:../networking/controller.adoc[]. +If you're playing on Refined Storage v1.7.x or higher you can bind the {doctitle} by right clicking on any connected network device. + +To use the {doctitle} the item needs Forge Energy. +You'll have to charge it in a block that charges items from another mod. + +After doing all these steps, the {doctitle} is still missing a signal from the system. +Add at least 1 xref:wireless-transmitter.adoc[] to the network to get a basic range of 16 blocks. + +If the {doctitle} is ready for use, it will light up blue. + +== Troubleshooting + +Sometimes, the {doctitle} doesn't open or stays grey. +To enable it make sure that: + +- The {doctitle} is bound to a xref:../networking/controller.adoc[] +- There is at least 1 xref:wireless-transmitter.adoc[] connected to the network +- That you are in range of the xref:wireless-transmitter.adoc[] +- The xref:../networking/controller.adoc[] block is still in the world on the place where you bound it to + +== Energy behavior + +The {doctitle} draws energy on following actions: + +[cols="1,1"] +|=== +|Action|Amount of Forge Energy used + +|Opening the {doctitle|35 FE +|Cancelling a task|4 FE +|Cancelling all tasks|5 FE +|=== \ No newline at end of file diff --git a/docs/pages/wireless-networking/wireless-fluid-grid.adoc b/docs/pages/wireless-networking/wireless-fluid-grid.adoc new file mode 100644 index 0000000000..156b6b3e0d --- /dev/null +++ b/docs/pages/wireless-networking/wireless-fluid-grid.adoc @@ -0,0 +1,39 @@ += Wireless Fluid Grid +:icon: wireless-fluid-grid.png +:from: v1.4.0-beta + +With the {doctitle} the player can access their fluids from anywhere. + +To activate the {doctitle}, the player has to right click the {doctitle} on a xref:../networking/controller.adoc[]. +If you're playing on Refined Storage v1.7.x or higher you can bind the {doctitle} by right clicking on any connected network device. + +To use the {doctitle} the item needs Forge Energy. +You'll have to charge it in a block that charges items from another mod. + +After doing all these steps, the {doctitle} is still missing a signal from the system. +Add at least 1 xref:wireless-transmitter.adoc[] to the network to get a basic range of 16 blocks. + +If the {doctitle} is ready for use, it will light up blue. + +== Troubleshooting + +Sometimes, the {doctitle} doesn't open or stays gray. +To enable it make sure that: + +- The {doctitle} is bound to a xref:../networking/controller.adoc[] +- There is at least 1 xref:wireless-transmitter.adoc[] connected to the network +- That you are in range of the xref:wireless-transmitter.adoc[] +- The xref:../networking/controller.adoc[] block is still in the world on the place where you bound it to + +== Energy behavior + +The {doctitle} draws energy on following actions: + +[cols="1,1"] +|=== +|Action|Amount of Forge Energy used + +|Opening the {doctitle}|30 FE +|Pulling a fluid from storage|3 FE +|Pushing a fluid to storage|3 FE +|=== \ No newline at end of file diff --git a/docs/pages/wireless-networking/wireless-grid.adoc b/docs/pages/wireless-networking/wireless-grid.adoc new file mode 100644 index 0000000000..3c97561aeb --- /dev/null +++ b/docs/pages/wireless-networking/wireless-grid.adoc @@ -0,0 +1,39 @@ += Wireless Grid +:from: v0.3.0-alpha +:icon: wireless-grid.png + +With the {doctitle} the player can access their items from anywhere. + +To activate the {doctitle}, the player has to right click the {doctitle} on a xref:../networking/controller.adoc[]. +If you're playing on Refined Storage v1.7.x or higher you can bind the {doctitle} by right clicking on any connected network device. + +To use the {doctitle} the item needs Forge Energy (FE). +You'll have to charge it in a block that charges items from another mod. + +After doing all these steps, the {doctitle} is still missing a signal from the storage network. +Add at least 1 xref:wireless-transmitter.adoc[] to the network to get a basic range of 16 blocks. + +If the {doctitle} is ready for use, it will light up blue. + +== Troubleshooting + +Sometimes, the {doctitle} doesn't open or stays gray. +To enable it make sure that: + +- The {doctitle} is bound to a xref:../networking/controller.adoc[] +- There is at least 1 xref:wireless-transmitter.adoc[] connected to the network +- That you are in range of the xref:wireless-transmitter.adoc[] +- The xref:../networking/controller.adoc[] block is still in the world on the place where you bound it to + +== Energy behavior + +The {doctitle} draws energy on following actions: + +[cols="1,1"] +|=== +|Action|Amount of Forge Energy used + +|Opening the {doctitle}|30 FE +|Pulling an item from storage|3 FE +|Pushing an item to storage|3 FE +|=== \ No newline at end of file diff --git a/docs/pages/wireless-networking/wireless-transmitter.adoc b/docs/pages/wireless-networking/wireless-transmitter.adoc new file mode 100644 index 0000000000..fc36318945 --- /dev/null +++ b/docs/pages/wireless-networking/wireless-transmitter.adoc @@ -0,0 +1,31 @@ += Wireless Transmitter +:icon: wireless-transmitter.png +:from: v0.6.0-alpha + +The {doctitle} is used to send signals to wireless network items in Refined Storage. + +== Range + +The default range is 16 blocks, but can be upgraded with xref:../upgrades/range-upgrade.adoc[range upgrades]. + +=== Bigger range + +Keep in mind, **you are not limited to 1 {doctitle}**! + +You can spread multiple around in your world, each maximally upgraded with xref:../upgrades/range-upgrade.adoc[range upgrades]. + +Note that every {doctitle} needs to be connected to the network through a xref:../networking/cable.adoc[] or xref:network-receiver.adoc[]. + +== Placing transmitters efficiently + +Placing 2 {doctitle}s just next to each other will not do that much. + +The wireless signal starts from the {doctitle}'s position, so, if you place 2 transmitters next to each other you'll only have a net gain of 1 block. + +Instead, you have to spread your wireless transmitters around. + +include::../../partials/recoloring.adoc[] + +== Applicable upgrades + +- xref:../upgrades/range-upgrade.adoc[] \ No newline at end of file diff --git a/docs/partials/fluid-storage-block.adoc b/docs/partials/fluid-storage-block.adoc new file mode 100644 index 0000000000..bcd8ca1c0e --- /dev/null +++ b/docs/partials/fluid-storage-block.adoc @@ -0,0 +1,32 @@ +The {doctitle} is a block that provides the system with storage. +It is similar to the xref:../pages/storage/index.adoc#_fluid_storage_disks[fluid storage disk], but can be placed in the world. + +When breaking the {doctitle}, the fluids that it holds persist, so you won't lose any of your fluids. + +The {doctitle} won't despawn when dropped in the world. + +== Priority + +A (negative or positive) priority can be chosen (where a higher priority gets higher precedence to place items in). + +== Whitelist and blacklist + +There is also a whitelist and blacklist option to only allow or forbid some fluid from entering the {doctitle}. + +The whitelist or blacklist can be configured to be NBT or damage sensitive. + +== Mode + +The {doctitle} has support for the following modes: + +- Insert and extract (default) +- Insert only +- Extract only + +== Uncrafting + +Sneak and right click while holding the empty {doctitle} to retrieve the various parts back: + +- The corresponding xref:../pages/storage/index.adoc#_fluid_storage_parts[Fluid Storage Part] +- xref:../pages/utility/basic-processor.adoc[] +- xref:../pages/utility/machine-casing.adoc[] diff --git a/docs/partials/fluid-storage-disk.adoc b/docs/partials/fluid-storage-disk.adoc new file mode 100644 index 0000000000..31d982c8e9 --- /dev/null +++ b/docs/partials/fluid-storage-disk.adoc @@ -0,0 +1,11 @@ +A {doctitle} is an item where items from the storage system are stored on. +It has to be put in a xref:../pages/storage/disk-drive.adoc[]. + +The {doctitle} won't despawn when dropped in the world. + +== Uncrafting + +Sneak and right click while holding the empty {doctitle} to retrieve the various parts back: + +- The corresponding xref:../pages/storage/index.adoc#_fluid_storage_parts[fluid storage part] +- xref:../pages/storage/storage-housing.adoc[] diff --git a/docs/partials/processor.adoc b/docs/partials/processor.adoc new file mode 100644 index 0000000000..be8f0c1465 --- /dev/null +++ b/docs/partials/processor.adoc @@ -0,0 +1 @@ +The {doctitle} is used to craft the various Refined Storage devices. \ No newline at end of file diff --git a/docs/partials/recoloring.adoc b/docs/partials/recoloring.adoc new file mode 100644 index 0000000000..8b738763fb --- /dev/null +++ b/docs/partials/recoloring.adoc @@ -0,0 +1,6 @@ +== Recoloring + +You can recolor the {doctitle} in 2 ways: + +- Using a dye on the {doctitle} +- Combining the block with a dye as a crafting recipe \ No newline at end of file diff --git a/docs/partials/search-box.adoc b/docs/partials/search-box.adoc new file mode 100644 index 0000000000..19fd9dbbde --- /dev/null +++ b/docs/partials/search-box.adoc @@ -0,0 +1,52 @@ +== Search box modes + +[cols="1,1"] +|=== +|Type|Description + +|Normal|The default search box mode +|Normal (autoselected)|Autoselects the search box +|JEI synchronized|Synchronizes the search box with JEI +|JEI synchronized (autoselected)|Synchronizes the search box with JEI and autoselects the search box +|JEI synchronized (two-way)|Synchronizes the search box with JEI and synchronizes JEI with the search box +|JEI synchronized (two-way autoselected)|Synchronizes the search box with JEI, synchronizes JEI with the search box and autoselects the search box +|=== + +== Search box filters + +=== Mod ID or name + +Prefix your search query with `@` followed by the mod ID or name to only show items of said mod. + +You can also give search terms after that, so it'll only display certain items of that mod. + +For example: + +- `@ic2` will only show link:https://minecraft.curseforge.com/projects/industrial-craft[IndustrialCraft 2] items and blocks +- `@ic2 nuclear` will only show link:https://minecraft.curseforge.com/projects/industrial-craft[IndustrialCraft 2] items and blocks that have "nuclear" in its name + +=== Tooltip + +Prefix your search query with `#` followed by the tooltip text to search for. + +=== Ore dictionary (Refined Storage 1.6.x or lower) + +Prefix your search query with `$` followed by the ore dictionary name. + +For example: `$ingot` will only show ingots, because those are listed as `ingotIron`, `ingotGold`, ... in the ore dictionary. + +=== Tags (Refined Storage 1.7.x or higher) + +Prefix your search query with `$` followed by the tag name. + +For example: `$gem` will show all items marked as a gem in the item tags. + +=== Searching multiple items + +You can use the `|` symbol to search for multiple items at once. + +For example: to look for ingots and dirt, use: `ingot|dirt`. + +== Search box history + +Use the up and down arrow keys to scroll through the search box history. \ No newline at end of file diff --git a/docs/partials/storage-block.adoc b/docs/partials/storage-block.adoc new file mode 100644 index 0000000000..c5546fc5b2 --- /dev/null +++ b/docs/partials/storage-block.adoc @@ -0,0 +1,32 @@ +The {doctitle} is a block that provides the system with storage. +It is similar to the xref:../pages/storage/index.adoc#_storage_disks[storage disk], but can be placed in the world. + +When breaking the {doctitle}, the items that it holds persist, so you won't lose any of your items. + +The {doctitle} won't despawn when dropped in the world. + +== Priority + +A (negative or positive) priority can be chosen (where a higher priority gets higher precedence to place items in). + +== Whitelist and blacklist + +There is also a whitelist and blacklist option to only allow or forbid some items from entering the {doctitle}. + +The whitelist or blacklist can be configured to be NBT or damage sensitive. + +== Mode + +The {doctitle} has support for the following modes: + +- Insert and extract (default) +- Insert only +- Extract only + +== Uncrafting + +Sneak and right click while holding the empty {doctitle} to retrieve the various parts back: + +- The corresponding xref:../pages/storage/index.adoc#_storage_parts[Storage Part] +- xref:../pages/utility/basic-processor.adoc[] +- xref:../pages/utility/machine-casing.adoc[] \ No newline at end of file diff --git a/docs/partials/storage-disk.adoc b/docs/partials/storage-disk.adoc new file mode 100644 index 0000000000..3a99788559 --- /dev/null +++ b/docs/partials/storage-disk.adoc @@ -0,0 +1,11 @@ +A {doctitle} is an item where items from the storage network are stored on. +It has to be put in a xref:../pages/storage/disk-drive.adoc[]. + +The {doctitle} won't despawn when dropped in the world. + +== Uncrafting + +Sneak and right click while holding the empty {doctitle} to retrieve the various parts back: + +- The corresponding xref:../pages/storage/index.adoc#_storage_parts[storage part] +- xref:../pages/storage/storage-housing.adoc[] From c9e337cfd0747437904eb6a250f9c5e0cdc2bee8 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Fri, 22 Dec 2023 13:30:29 +0100 Subject: [PATCH 06/19] docs: update docs --- docs/component.json | 9 --- docs/nav.json | 5 ++ docs/pages/faq.adoc | 4 -- docs/pages/index.adoc | 7 --- docs/pages/index.html | 83 +++++++++++++++++++++++++ docs/pages/need-help.adoc | 27 ++++++++ docs/pages/need-help.html | 49 +++++++++++++++ docs/pages/whats-new.adoc | 27 +------- docs/pages/whats-new.html | 127 ++++++++++++++++++++++++++++++++++++++ 9 files changed, 292 insertions(+), 46 deletions(-) delete mode 100644 docs/component.json create mode 100644 docs/pages/index.html create mode 100644 docs/pages/need-help.adoc create mode 100644 docs/pages/need-help.html create mode 100644 docs/pages/whats-new.html diff --git a/docs/component.json b/docs/component.json deleted file mode 100644 index 2413ba8022..0000000000 --- a/docs/component.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "Refined Storage", - "version": "0.0.0", - "pagesPath": "pages/", - "pageTemplateOverrides": { - "index.adoc": "refined-storage-index" - }, - "assetsPath": "assets/" -} \ No newline at end of file diff --git a/docs/nav.json b/docs/nav.json index ab8b133b7b..d60815747b 100644 --- a/docs/nav.json +++ b/docs/nav.json @@ -19,6 +19,11 @@ "ref": "faq.adoc", "icon": "bi-question-circle-fill" }, + { + "title": "Need help?", + "ref": "need-help.adoc", + "icon": "bi-person-raised-hand" + }, { "title": "Networking", "ref": "networking/index.adoc", diff --git a/docs/pages/faq.adoc b/docs/pages/faq.adoc index 5937187b2e..bb3e0418a9 100644 --- a/docs/pages/faq.adoc +++ b/docs/pages/faq.adoc @@ -47,10 +47,6 @@ No, there isn't. No, I won't. -== What versions of Minecraft are supported? - -See xref:whats-new.adoc#_version_support[version support]. - == Is there a way to have infinite Wireless Transmitter range? It's not possible if you're using the base Refined Storage mod, or Refined Storage Addons. diff --git a/docs/pages/index.adoc b/docs/pages/index.adoc index 9c11996529..dbc0db603a 100644 --- a/docs/pages/index.adoc +++ b/docs/pages/index.adoc @@ -1,8 +1 @@ = Refined Storage - -[.p-5.mb-4.bg-body-tertiary.rounded-3] -== Refined Storage is a mass storage mod for Minecraft that offers the player a network-based storage system, allowing them to store items and fluids on a massively expandable device network. -''' -Items and fluids can be stored in one of the many storage capabilities that the mod offers. Any storage devices connected to the same network are accessible to the player through one simple Grid interface, allowing the player to access the inventories of many devices through a single unified GUI. - -This mod not only adds storage solutions, but also devices that can be used to manipulate items and blocks in the world and from within the system, such as importers, exporters, constructors, destructors, and more! There are also devices in this mod that allow the player to setup auto-crafting, allowing the crafting of complex recipes in a few simple clicks. diff --git a/docs/pages/index.html b/docs/pages/index.html new file mode 100644 index 0000000000..f0fd68f8eb --- /dev/null +++ b/docs/pages/index.html @@ -0,0 +1,83 @@ + + + + + + + + + \ No newline at end of file diff --git a/docs/pages/need-help.adoc b/docs/pages/need-help.adoc new file mode 100644 index 0000000000..3805c919f7 --- /dev/null +++ b/docs/pages/need-help.adoc @@ -0,0 +1,27 @@ += Need help? + +== Supported versions + +Before creating an issue on our issue tracker, ensure that your version is still supported. + +[cols="1,1,1,1,1"] +|=== +|Minecraft version|Refined Storage version range|State|New features|Bugfixes + +|Minecraft 1.20.x|v1.12.x|Maintained|❌|✔️ +|Minecraft 1.19.x|v1.11.x|Maintained|❌|✔️ +|Minecraft 1.18.x|v1.10.x|Maintained|❌|✔️ +|Minecraft 1.17.x|-|Never available|❌|❌ +|Minecraft 1.16.x|v1.9.x|Unmaintained|❌|❌ +|Minecraft 1.15.x|v1.8.x|Unmaintained|❌|❌ +|Minecraft 1.14.x|v1.7.x |Unmaintained|❌|❌ +|Minecraft 1.13.x|-|Never available|❌|❌ +|Minecraft 1.12.x|v1.5.x - v1.6.x|Unmaintained|❌|❌ +|Minecraft 1.11.x|v1.3.x - v1.4.x|Unmaintained|❌|❌ +|Minecraft 1.10.x|v0.8.x - v1.2.x|Unmaintained|❌|❌ +|Minecraft 1.9.x|v0.3.x - v0.7.x|Unmaintained|❌|❌ +|Minecraft 1.8.x|-|Never available|❌|❌ +|Minecraft 1.7.x|-|Never available|❌|❌ +|=== + +Refined Storage v1.x will not be gaining new features as we are building link:https://github.com/refinedmods/refinedstorage2[Refined Storage 2]. diff --git a/docs/pages/need-help.html b/docs/pages/need-help.html new file mode 100644 index 0000000000..384595b506 --- /dev/null +++ b/docs/pages/need-help.html @@ -0,0 +1,49 @@ + + + + + + +
+
+
+
+
+

Have a question?

+

Join our Discord server for community support.

+ + Join our Discord server + + +
+
+

Found a bug, crash or other problem?

+

Issues can be reported on our issue tracker.

+ + Refined Storage on GitHub + + +
+
+

Want to stay up to date?

+

Follow us on Twitter or Mastodon to stay up to date with Refined Mods news and releases.

+ + Follow @refinedmods on Twitter + + + + Follow @refinedmods on Mastodon + + +
+
+
+ +
+
+
+
+ + \ No newline at end of file diff --git a/docs/pages/whats-new.adoc b/docs/pages/whats-new.adoc index 85d66f5607..49b327a3d3 100644 --- a/docs/pages/whats-new.adoc +++ b/docs/pages/whats-new.adoc @@ -1,26 +1 @@ -= What's New - -[#_version_support] -== Version support - -[cols="1,1,1,1,1"] -|=== -|Minecraft version|Refined Storage version range|State|New features|Bugfixes - -|Minecraft 1.20.x|v1.12.x|Maintained|❌|✔️ -|Minecraft 1.19.x|v1.11.x|Maintained|❌|✔️ -|Minecraft 1.18.x|v1.10.x|Maintained|❌|✔️ -|Minecraft 1.17.x|-|Never available|❌|❌ -|Minecraft 1.16.x|v1.9.x|Unmaintained|❌|❌ -|Minecraft 1.15.x|v1.8.x|Unmaintained|❌|❌ -|Minecraft 1.14.x|v1.7.x |Unmaintained|❌|❌ -|Minecraft 1.13.x|-|Never available|❌|❌ -|Minecraft 1.12.x|v1.5.x - v1.6.x|Unmaintained|❌|❌ -|Minecraft 1.11.x|v1.3.x - v1.4.x|Unmaintained|❌|❌ -|Minecraft 1.10.x|v0.8.x - v1.2.x|Unmaintained|❌|❌ -|Minecraft 1.9.x|v0.3.x - v0.7.x|Unmaintained|❌|❌ -|Minecraft 1.8.x|-|Never available|❌|❌ -|Minecraft 1.7.x|-|Never available|❌|❌ -|=== - -Refined Storage v1.x will not be gaining new features as we are building link:https://github.com/refinedmods/refinedstorage2[Refined Storage 2]. += What's new diff --git a/docs/pages/whats-new.html b/docs/pages/whats-new.html new file mode 100644 index 0000000000..7890a52b14 --- /dev/null +++ b/docs/pages/whats-new.html @@ -0,0 +1,127 @@ + + + + + + +
+
+
+

+ In version + + Beta + Alpha +

+ +
+ + + + + + + + +
+ +
+ + + + Download on CurseForge + + + + Download on Modrinth + + + + Download on GitHub + +
+
+ +

Other releases

+ +
+
+

+ +

+ +
+
+
+ + \ No newline at end of file From af90125be4e874099c27dc2ec1b5dc9841b9fdb8 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Fri, 22 Dec 2023 14:08:35 +0100 Subject: [PATCH 07/19] docs: wireless crafting grid docs --- docs/assets/wireless-crafting-grid.png | Bin 0 -> 810 bytes docs/nav.json | 3 ++ docs/pages/wireless-networking/index.adoc | 1 + .../wireless-crafting-grid.adoc | 42 ++++++++++++++++++ .../wireless-crafting-monitor.adoc | 2 +- 5 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 docs/assets/wireless-crafting-grid.png create mode 100644 docs/pages/wireless-networking/wireless-crafting-grid.adoc diff --git a/docs/assets/wireless-crafting-grid.png b/docs/assets/wireless-crafting-grid.png new file mode 100644 index 0000000000000000000000000000000000000000..fcb51dff7506043df8cfda150e505fec4e4c8dd2 GIT binary patch literal 810 zcmV+_1J(SAP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0>4Q_K~#8N?V7)9 zT2U0o)fi1Af@uvEY+Xw8PbdlE;Lz2vLqQio5IZ}ylhDIM8czg|gpi-&)(_?m^ z8;cA8-B@G*=*A)gKsOfc-_-Sb%|4UOW>?S$7K;Upa5|kZ;^5!_M!4N>7%`blV8nbr zhY@x=KjdPuxYu=ooC4^^A{l_bGnq_=U7JUvQ5bP_bOa;R_nQoX{TcP|)9DmObUGav z(QGzh#MRZ6)_0Oq0Nq$51JHLSl}fRbG?7Tai1%-^Fv9OWff1|Ci=!NZgTMd$wFe_! zCEvh^R;vXgN~MxyfDSSMbYs!ZfLt!eGT`#^5=ML|y@L@?1IIApiH~Q({m&7Mcpmh_ zh>xGzFe38uHH^5uy@e6i*VmE(I>-RfjYWF^v)PQ5%jIHaw=G#cI`OdT4=1dGXFgV6 zI`^#3PQ9$Q`vKN+I2^2Wk^ca6W03)%@62{j&swY1=IY*3>&_4uA)wOW-7&_M=(ZY;$yZT(9dL5wd Date: Sun, 24 Dec 2023 10:09:51 +0100 Subject: [PATCH 08/19] docs: responsive fixes --- docs/pages/index.html | 6 +-- docs/pages/whats-new.html | 94 ++++++++++++++++++++------------------- 2 files changed, 52 insertions(+), 48 deletions(-) diff --git a/docs/pages/index.html b/docs/pages/index.html index f0fd68f8eb..b39d4930f8 100644 --- a/docs/pages/index.html +++ b/docs/pages/index.html @@ -29,7 +29,7 @@

Refined Storage is a mass storage mod for Minecraft that offers the player a - Download on CurseForge + Download on CurseForge

Refined Storage is a mass storage mod for Minecraft that offers the player a d="M503.16 323.56C514.55 281.47 515.32 235.91 503.2 190.76C466.57 54.2299 326.04 -26.8001 189.33 9.77991C83.8101 38.0199 11.3899 128.07 0.689941 230.47H43.99C54.29 147.33 113.74 74.7298 199.75 51.7098C306.05 23.2598 415.13 80.6699 453.17 181.38L411.03 192.65C391.64 145.8 352.57 111.45 306.3 96.8198L298.56 140.66C335.09 154.13 364.72 184.5 375.56 224.91C391.36 283.8 361.94 344.14 308.56 369.17L320.09 412.16C390.25 383.21 432.4 310.3 422.43 235.14L464.41 223.91C468.91 252.62 467.35 281.16 460.55 308.07L503.16 323.56Z"/> - Download on Modrinth + Download on Modrinth - Download on GitHub + Download on GitHub diff --git a/docs/pages/whats-new.html b/docs/pages/whats-new.html index 7890a52b14..52759343ad 100644 --- a/docs/pages/whats-new.html +++ b/docs/pages/whats-new.html @@ -31,28 +31,30 @@

- - - Download on CurseForge - - - - Download on Modrinth - - - - Download on GitHub - + @@ -95,29 +97,31 @@

- - - Download on CurseForge - - - - Download on Modrinth - - - - Download on GitHub - + From 26995767e9fa27bd006cd7bc10603352851e3198 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sun, 24 Dec 2023 10:18:41 +0100 Subject: [PATCH 09/19] docs: collapsed default state for releases --- docs/pages/whats-new.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pages/whats-new.html b/docs/pages/whats-new.html index 52759343ad..76c8d11529 100644 --- a/docs/pages/whats-new.html +++ b/docs/pages/whats-new.html @@ -63,7 +63,7 @@

Other releases

-

+
+ +
+ + + +
+
+
+

Need help?

+

Join our Discord server for community support.

+ + Join our Discord server + + +
+
+

Found a problem?

+

Issues can be reported on our issue tracker.

+ + Refined Storage on GitHub + + +
+
+

Want to stay up to date?

+

Follow us on Twitter or Mastodon to stay up to date with Refined Mods news and releases.

+ + Follow @refinedmods on Twitter + + + + Follow @refinedmods on Mastodon + + +
+
+
+