diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index f8c8c5b5c..875b35587 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -42,6 +42,10 @@ Valid examples are:
- `fix/GH-123/add-branch-linting`
- `docs/GH-123/cleanup`
+## Translations
+
+If you want to contribute to the translations of this project, please use [Crowdin](https://crowdin.com/project/refined-storage-2).
+
## Versioning
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
index 0d3811bd6..247bb242b 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.yml
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -2,60 +2,59 @@ name: Bug report
description: Found a bug or encountered a crash? Please report it here.
labels: [ bug ]
body:
- - type: markdown
- attributes:
- value: |
- Provide a summary of the issue in the title above.
- - type: textarea
- id: description
- attributes:
- label: Describe the bug
- description: |
- Be as detailed as possible.
- If applicable, also tell us what you expected to happen instead.
- validations:
- required: true
- - type: textarea
- id: reproduce
- attributes:
- label: How can we reproduce this bug or crash?
- description: |
- Provide us with steps on how to reproduce this issue.
- Try to reproduce the issue with only Refined Storage 2 installed, if possible.
- placeholder: |
- 1.
- 2.
- 3.
- validations:
- required: true
- - type: dropdown
- id: minecraft
- attributes:
- label: What Minecraft version is this happening on?
- description: |
- If your Minecraft version isn't listed here, it means that it isn't supported. In that case, don't create an issue.
- options:
- - Minecraft 1.19.4
- - Minecraft 1.20.1
- validations:
- required: true
- - type: input
- id: modloader-version
- attributes:
- label: What Forge or Fabric version is this happening on?
- validations:
- required: true
- - type: input
- id: version
- attributes:
- label: What Refined Storage version is this happening on?
- description: |
- Ensure that you are using the latest version.
- validations:
- required: true
- - type: textarea
- id: logs
- attributes:
- label: Relevant log output
- description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
- render: shell
+ - type: markdown
+ attributes:
+ value: |
+ Provide a summary of the issue in the title above.
+ - type: textarea
+ id: description
+ attributes:
+ label: Describe the bug
+ description: |
+ Be as detailed as possible.
+ If applicable, also tell us what you expected to happen instead.
+ validations:
+ required: true
+ - type: textarea
+ id: reproduce
+ attributes:
+ label: How can we reproduce this bug or crash?
+ description: |
+ Provide us with steps on how to reproduce this issue.
+ Try to reproduce the issue with only Refined Storage 2 installed, if possible.
+ placeholder: |
+ 1.
+ 2.
+ 3.
+ validations:
+ required: true
+ - type: dropdown
+ id: minecraft
+ attributes:
+ label: What Minecraft version is this happening on?
+ description: |
+ If your Minecraft version isn't listed here, it means that it isn't supported. In that case, don't create an issue.
+ options:
+ - Minecraft 1.20.4
+ validations:
+ required: true
+ - type: input
+ id: modloader-version
+ attributes:
+ label: What NeoForge or Fabric version is this happening on?
+ validations:
+ required: true
+ - type: input
+ id: version
+ attributes:
+ label: What Refined Storage version is this happening on?
+ description: |
+ Ensure that you are using the latest version.
+ validations:
+ required: true
+ - type: textarea
+ id: logs
+ attributes:
+ label: Relevant log output
+ description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
+ render: shell
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 268ae06af..bfd3a654c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -8,5 +8,5 @@ on:
types: [ opened, synchronize, reopened ]
jobs:
build:
- uses: refinedmods/refinedarchitect/.github/workflows/build.yml@v0.11.3
+ uses: refinedmods/refinedarchitect/.github/workflows/build.yml@v0.11.5
secrets: inherit
diff --git a/.github/workflows/draft-release.yml b/.github/workflows/draft-release.yml
index 196cb28c4..b34ffa667 100644
--- a/.github/workflows/draft-release.yml
+++ b/.github/workflows/draft-release.yml
@@ -17,7 +17,7 @@ on:
type: string
jobs:
draft:
- uses: refinedmods/refinedarchitect/.github/workflows/draft-release.yml@v0.11.3
+ uses: refinedmods/refinedarchitect/.github/workflows/draft-release.yml@v0.11.5
with:
release-type: ${{ inputs.release-type }}
version-number-override: ${{ inputs.version-number-override }}
diff --git a/.github/workflows/issue-for-unsupported-version.yml b/.github/workflows/issue-for-unsupported-version.yml
index 1fc712916..7aa68ecb9 100644
--- a/.github/workflows/issue-for-unsupported-version.yml
+++ b/.github/workflows/issue-for-unsupported-version.yml
@@ -4,4 +4,4 @@ on:
types: [ labeled, unlabeled, reopened ]
jobs:
unsupported-labeler:
- uses: refinedmods/refinedarchitect/.github/workflows/issue-for-unsupported-version.yml@v0.11.3
\ No newline at end of file
+ uses: refinedmods/refinedarchitect/.github/workflows/issue-for-unsupported-version.yml@v0.11.5
\ No newline at end of file
diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml
index 48fbf42e4..bd9b29525 100644
--- a/.github/workflows/publish-release.yml
+++ b/.github/workflows/publish-release.yml
@@ -7,7 +7,7 @@ on:
- closed
jobs:
publish-release:
- uses: refinedmods/refinedarchitect/.github/workflows/publish-release.yml@v0.11.3
+ uses: refinedmods/refinedarchitect/.github/workflows/publish-release.yml@v0.11.5
secrets: inherit
with:
project-name: 'Refined Storage'
diff --git a/.github/workflows/resolved-issue-locking.yml b/.github/workflows/resolved-issue-locking.yml
index 8d3457d78..cbfb9219d 100644
--- a/.github/workflows/resolved-issue-locking.yml
+++ b/.github/workflows/resolved-issue-locking.yml
@@ -4,4 +4,4 @@ on:
- cron: '0 0 * * *'
jobs:
lock:
- uses: refinedmods/refinedarchitect/.github/workflows/resolved-issue-locking.yml@v0.11.3
\ No newline at end of file
+ uses: refinedmods/refinedarchitect/.github/workflows/resolved-issue-locking.yml@v0.11.5
\ No newline at end of file
diff --git a/.github/workflows/validate-branch-name.yml b/.github/workflows/validate-branch-name.yml
index b3852e5b9..7f4ce5e06 100644
--- a/.github/workflows/validate-branch-name.yml
+++ b/.github/workflows/validate-branch-name.yml
@@ -2,4 +2,4 @@ name: Validate branch name
on: [ pull_request ]
jobs:
validate-branch-name:
- uses: refinedmods/refinedarchitect/.github/workflows/validate-branch-name.yml@v0.11.3
\ No newline at end of file
+ uses: refinedmods/refinedarchitect/.github/workflows/validate-branch-name.yml@v0.11.5
\ No newline at end of file
diff --git a/.github/workflows/validate-changelog.yml b/.github/workflows/validate-changelog.yml
index c3f9f04d0..8b90c5051 100644
--- a/.github/workflows/validate-changelog.yml
+++ b/.github/workflows/validate-changelog.yml
@@ -4,4 +4,4 @@ on:
types: [ opened, synchronize, reopened, ready_for_review, labeled, unlabeled ]
jobs:
validate-changelog:
- uses: refinedmods/refinedarchitect/.github/workflows/validate-changelog.yml@v0.11.3
\ No newline at end of file
+ uses: refinedmods/refinedarchitect/.github/workflows/validate-changelog.yml@v0.11.5
\ No newline at end of file
diff --git a/.github/workflows/validate-commit-messages.yml b/.github/workflows/validate-commit-messages.yml
index f08e60096..d8d12de6b 100644
--- a/.github/workflows/validate-commit-messages.yml
+++ b/.github/workflows/validate-commit-messages.yml
@@ -2,4 +2,4 @@ name: Validate commit messages
on: [ pull_request ]
jobs:
validate-commit-messages:
- uses: refinedmods/refinedarchitect/.github/workflows/validate-commit-messages.yml@v0.11.3
\ No newline at end of file
+ uses: refinedmods/refinedarchitect/.github/workflows/validate-commit-messages.yml@v0.11.5
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 924b02b7b..ae1892911 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,8 @@ eclipse/
*.ipr
*.iws
.idea/
+!.idea/dictionaries/refinedstorage2.xml
+!.idea/icon.png
out/
/bin/
logs/
diff --git a/.idea/dictionaries/refinedstorage2.xml b/.idea/dictionaries/refinedstorage2.xml
new file mode 100644
index 000000000..358caf40a
--- /dev/null
+++ b/.idea/dictionaries/refinedstorage2.xml
@@ -0,0 +1,8 @@
+
+
+
+ autocrafting
+ redstone
+
+
+
\ No newline at end of file
diff --git a/.idea/icon.png b/.idea/icon.png
new file mode 100644
index 000000000..242164c12
Binary files /dev/null and b/.idea/icon.png differ
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9e1bfd107..b3603d3cb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,28 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
+## [2.0.0-milestone.3.5] - 2024-04-04
+
+### Added
+
+- Security Card
+- Fallback Security Card
+- Security Manager
+
+### Changed
+
+- The permissions for a Security Card must be configured through the card itself, instead of via the Security Manager.
+- The Security Card can be bound to other (currently online) players via its GUI.
+- The binding of a Security Card can now be cleared.
+- The Security Card tooltip and GUI now show whether the permission has been touched/changed in any way.
+- As soon as a Security Manager is placed, the storage network will be locked down by default. Start adding Security Cards to allow or deny specific access to players.
+- To not lock the entire network by default for players who do not have a matching Security Card, a Fallback Security Card can be used to configure this behavior.
+- Smooth scrolling, screen size and max row stretch are no longer Grid-specific settings, but are now global settings.
+
+### Fixed
+
+- Wireless Grid name not being correct in the GUI.
+
## [2.0.0-milestone.3.4] - 2024-03-16
### Added
@@ -532,7 +554,9 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
- The Grid can now use smooth scrolling.
- The Grid now has syntax highlighting for the search query.
-[Unreleased]: https://github.com/refinedmods/refinedstorage2/compare/v2.0.0-milestone.3.4...HEAD
+[Unreleased]: https://github.com/refinedmods/refinedstorage2/compare/v2.0.0-milestone.3.5...HEAD
+
+[2.0.0-milestone.3.5]: https://github.com/refinedmods/refinedstorage2/compare/v2.0.0-milestone.3.4...v2.0.0-milestone.3.5
[2.0.0-milestone.3.4]: https://github.com/refinedmods/refinedstorage2/compare/v2.0.0-milestone.3.3...v2.0.0-milestone.3.4
diff --git a/README.md b/README.md
index 84405d714..c7f8db9c9 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
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.
- [![Build Status](https://github.com/refinedmods/refinedstorage2/actions/workflows/build.yml/badge.svg?branch=develop)](https://github.com/refinedmods/refinedstorage2/actions/workflows/build.yml) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=refinedmods_refinedstorage2&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=refinedmods_refinedstorage2) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=refinedmods_refinedstorage2&metric=coverage)](https://sonarcloud.io/summary/new_code?id=refinedmods_refinedstorage2) [![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=refinedmods_refinedstorage2&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=refinedmods_refinedstorage2) [![Downloads on CurseForge](http://cf.way2muchnoise.eu/full_243076_downloads.svg)](http://minecraft.curseforge.com/projects/refined-storage) [![Downloads on Modrinth](https://img.shields.io/modrinth/dt/refined-storage?logo=modrinth)](https://modrinth.com/mod/refined-storage) [![Discord](https://img.shields.io/discord/342942776494653441)](https://discordapp.com/invite/VYzsydb) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE.md)
+ [![Build Status](https://github.com/refinedmods/refinedstorage2/actions/workflows/build.yml/badge.svg?branch=develop)](https://github.com/refinedmods/refinedstorage2/actions/workflows/build.yml) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=refinedmods_refinedstorage2&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=refinedmods_refinedstorage2) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=refinedmods_refinedstorage2&metric=coverage)](https://sonarcloud.io/summary/new_code?id=refinedmods_refinedstorage2) [![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=refinedmods_refinedstorage2&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=refinedmods_refinedstorage2) [![Crowdin](https://badges.crowdin.net/refined-storage-2/localized.svg)](https://crowdin.com/project/refined-storage-2) [![Downloads on CurseForge](http://cf.way2muchnoise.eu/full_243076_downloads.svg)](http://minecraft.curseforge.com/projects/refined-storage) [![Downloads on Modrinth](https://img.shields.io/modrinth/dt/refined-storage?logo=modrinth)](https://modrinth.com/mod/refined-storage) [![Discord](https://img.shields.io/discord/342942776494653441)](https://discordapp.com/invite/VYzsydb) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE.md)
## About
@@ -26,6 +26,7 @@ this mod that allow the player to setup auto-crafting, allowing the crafting of
- [Roadmap](https://github.com/refinedmods/refinedstorage2/projects)
- [Wiki](https://github.com/refinedmods/refinedstorage2/wiki)
- [Refined Mods on GitHub](https://github.com/refinedmods)
+- [Crowdin](https://crowdin.com/project/refined-storage-2)
- [Javadoc](https://refinedmods.com/javadoc/refinedstorage2)
- [Discord](https://discordapp.com/invite/VYzsydb)
- [Twitter](https://twitter.com/refinedmods)
diff --git a/build.gradle b/build.gradle
index 54f67457f..e48c4a030 100644
--- a/build.gradle
+++ b/build.gradle
@@ -22,6 +22,6 @@ enableSonarQube("refinedmods_refinedstorage2")
sonarqube {
properties {
property "sonar.coverage.exclusions", "refinedstorage2-platform-forge/**/*,refinedstorage2-platform-fabric/**/*,refinedstorage2-platform-common/**/*,refinedstorage2-platform-api/**/*"
- property "sonar.cpd.exclusions", "refinedstorage2-platform-forge/src/main/java/com/refinedmods/refinedstorage2/platform/forge/integration/recipemod/rei/*,refinedstorage2-platform-fabric/src/main/java/com/refinedmods/refinedstorage2/platform/fabric/integration/recipemod/rei/*"
+ property "sonar.cpd.exclusions", "refinedstorage2-platform-forge/src/main/java/com/refinedmods/refinedstorage2/platform/forge/recipemod/rei/*,refinedstorage2-platform-fabric/src/main/java/com/refinedmods/refinedstorage2/platform/fabric/recipemod/rei/*"
}
}
diff --git a/crowdin.yml b/crowdin.yml
new file mode 100644
index 000000000..638d88a8d
--- /dev/null
+++ b/crowdin.yml
@@ -0,0 +1,128 @@
+project_identifier: refined-storage-2
+commit_message: "chore: update translation %language% from crowdin"
+append_commit_message: false
+api_key_env: CROWDIN_API_KEY
+base_path: .
+pull_request_labels:
+ - skip-changelog
+files:
+ - source: /refinedstorage2-platform-common/src/main/resources/assets/refinedstorage2/lang/en_us.json
+ translation: /refinedstorage2-platform-common/src/main/resources/assets/refinedstorage2/lang/%locale_with_underscore%.json
+ languages_mapping:
+ locale_with_underscore:
+ af: af_za
+ ar: ar_sa
+ ast: ast_es
+ az: az_az
+ ba: ba_ru
+ be: be_by
+ bg: bg_bg
+ br-FR: br_fr
+ bs: bs_ba
+ ca: ca_es
+ cs: cs_cz
+ cy: cy_gb
+ da: da_dk
+ de-AT: de_at
+ de-CH: de_ch
+ de: de_de
+ el: el_gr
+ en-AU: en_au
+ en-CA: en_ca
+ en-GB: en_gb
+ en-NZ: en_nz
+ en-PT: en_pt
+ en-US: en_us
+ en-ZA: en_za
+ eo: eo_uy
+ es-AR: es_ar
+ es-CL: es_cl
+ es-ES: es_es
+ es-MX: es_mx
+ es-UY: es_uy
+ es-VE: es_ve
+ et: et_ee
+ eu: eu_es
+ fa: fa_ir
+ fi: fi_fi
+ fil: fil_ph
+ fo: fo_fo
+ fr-CA: fr_ca
+ fr: fr_fr
+ fra-DE: fra_de
+ fy-NL: fy_nl
+ ga-IE: ga_ie
+ gd: gd_gb
+ gl: gl_es
+ got: got_de
+ gv: gv_im
+ haw: haw_us
+ he: he_il
+ hi: hi_in
+ hr: hr_hr
+ hu: hu_hu
+ hy-AM: hy_am
+ id: id_id
+ ig: ig_ng
+ ido: io_en
+ is: is_is
+ it: it_it
+ ja: ja_jp
+ jbo: jbo_en
+ ka: ka_ge
+ kab: kab_kab
+ kk: kk_kz
+ kn: kn_in
+ ko: ko_kr
+ kw: kw_gb
+ la-LA: la_va
+ lb: lb_lu
+ li: li_li
+ lol: lol_us
+ lt: lt_lt
+ lv: lv_lv
+ mi: mi_nz
+ mk: mk_mk
+ mn: mn_mn
+ moh: moh_ca
+ ms: ms_my
+ mt: mt_mt
+ nb: nb_no
+ nds: nds_de
+ nl-BE: nl_be
+ nl: nl_nl
+ nn-NO: nn_no
+ #no: nn_no
+ oc: oc_fr
+ oj: oj_ca
+ pl: pl_pl
+ pt-BR: pt_br
+ pt-PT: pt_pt
+ qya-AA: qya_aa
+ ro: ro_ro
+ ru: ru_ru
+ sk: sk_sk
+ sl: sl_si
+ so: so_so
+ sq: sq_al
+ sr: sr_sp
+ sr-CS: sr_cs
+ sv-SE: sv_se
+ ta: ta_in
+ th: th_th
+ tl: tl_ph
+ tlh-AA: tlh_aa
+ tr: tr_tr
+ tt-RU: tt_ru
+ tzl: tzl_tzl
+ uk: uk_ua
+ val-ES: val_es
+ vec: vec_it
+ vi: vi_vn
+ yi: yi_de
+ yo: yo_ng
+ zh-CN: zh_cn
+ zh-TW: zh_tw
+ zh-HK: zh_hk
+ fur-IT: fur_it
+ ry: ry_ua
\ No newline at end of file
diff --git a/refinedstorage2-grid-api/src/main/java/com/refinedmods/refinedstorage2/api/grid/watcher/GridWatcherManagerImpl.java b/refinedstorage2-grid-api/src/main/java/com/refinedmods/refinedstorage2/api/grid/watcher/GridWatcherManagerImpl.java
index c86437cab..a5b85402f 100644
--- a/refinedstorage2-grid-api/src/main/java/com/refinedmods/refinedstorage2/api/grid/watcher/GridWatcherManagerImpl.java
+++ b/refinedstorage2-grid-api/src/main/java/com/refinedmods/refinedstorage2/api/grid/watcher/GridWatcherManagerImpl.java
@@ -31,7 +31,7 @@ public void addWatcher(
attach(registration, storageChannel, false);
}
watchers.put(watcher, registration);
- LOGGER.info("Added watcher {}, new count is {}", watcher, watchers.size());
+ LOGGER.debug("Added watcher {}, new count is {}", watcher, watchers.size());
}
@Override
@@ -57,7 +57,7 @@ private void attach(
final StorageChannel storageChannel,
final boolean replay
) {
- LOGGER.info("Attaching {} to {}", registration, storageChannel);
+ LOGGER.debug("Attaching {} to {}", registration, storageChannel);
registration.attach(storageChannel, replay);
}
@@ -71,17 +71,17 @@ public void removeWatcher(final GridWatcher watcher, @Nullable final StorageChan
detach(registration, storageChannel);
}
watchers.remove(watcher);
- LOGGER.info("Removed watcher {}, remaining {}", watcher, watchers.size());
+ LOGGER.debug("Removed watcher {}, remaining {}", watcher, watchers.size());
}
@Override
public void detachAll(final StorageChannel storageChannel) {
- LOGGER.info("Detaching {} watchers", watchers.size());
+ LOGGER.debug("Detaching {} watchers", watchers.size());
watchers.values().forEach(watcher -> detach(watcher, storageChannel));
}
private void detach(final GridWatcherRegistration registration, final StorageChannel storageChannel) {
- LOGGER.info("Detaching {} from {}", registration, storageChannel);
+ LOGGER.debug("Detaching {} from {}", registration, storageChannel);
registration.detach(storageChannel);
}
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/Network.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/Network.java
index a0dba68c0..1eaec0ac4 100644
--- a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/Network.java
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/Network.java
@@ -1,7 +1,6 @@
package com.refinedmods.refinedstorage2.api.network;
import com.refinedmods.refinedstorage2.api.core.component.ComponentAccessor;
-import com.refinedmods.refinedstorage2.api.network.component.NetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
import java.util.Set;
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/NetworkComponent.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/NetworkComponent.java
similarity index 81%
rename from refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/NetworkComponent.java
rename to refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/NetworkComponent.java
index 1d669a715..6795743a1 100644
--- a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/NetworkComponent.java
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/NetworkComponent.java
@@ -1,6 +1,5 @@
-package com.refinedmods.refinedstorage2.api.network.component;
+package com.refinedmods.refinedstorage2.api.network;
-import com.refinedmods.refinedstorage2.api.network.Network;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
import java.util.Set;
@@ -10,22 +9,17 @@
@API(status = API.Status.STABLE, since = "2.0.0-milestone.1.1")
public interface NetworkComponent {
default void onContainerAdded(NetworkNodeContainer container) {
-
}
default void onContainerRemoved(NetworkNodeContainer container) {
-
}
default void onNetworkRemoved() {
-
}
default void onNetworkSplit(Set networks) {
-
}
default void onNetworkMergedWith(Network newMainNetwork) {
-
}
}
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/EnergyNetworkComponent.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/energy/EnergyNetworkComponent.java
similarity index 65%
rename from refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/EnergyNetworkComponent.java
rename to refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/energy/EnergyNetworkComponent.java
index c8f6067b3..59f01fd78 100644
--- a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/EnergyNetworkComponent.java
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/energy/EnergyNetworkComponent.java
@@ -1,4 +1,6 @@
-package com.refinedmods.refinedstorage2.api.network.component;
+package com.refinedmods.refinedstorage2.api.network.energy;
+
+import com.refinedmods.refinedstorage2.api.network.NetworkComponent;
import org.apiguardian.api.API;
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/GraphNetworkComponent.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/node/GraphNetworkComponent.java
similarity index 89%
rename from refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/GraphNetworkComponent.java
rename to refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/node/GraphNetworkComponent.java
index 3fd9c1071..4da9fa7f0 100644
--- a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/GraphNetworkComponent.java
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/node/GraphNetworkComponent.java
@@ -1,5 +1,6 @@
-package com.refinedmods.refinedstorage2.api.network.component;
+package com.refinedmods.refinedstorage2.api.network.node;
+import com.refinedmods.refinedstorage2.api.network.NetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
import java.util.Set;
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/node/container/NetworkNodeContainer.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/node/container/NetworkNodeContainer.java
index 3f7aaf65d..1bbc43a2b 100644
--- a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/node/container/NetworkNodeContainer.java
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/node/container/NetworkNodeContainer.java
@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage2.api.network.node.container;
+import com.refinedmods.refinedstorage2.api.network.node.GraphNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.NetworkNode;
import javax.annotation.Nullable;
@@ -17,8 +18,7 @@ public interface NetworkNodeContainer {
* The key must be kept stable, and must stay the same for the lifetime of the container.
* If it changes after adding it into the graph, the container would not be removed from the key index when the
* container is removed!
- * The container can be queried by
- * {@link com.refinedmods.refinedstorage2.api.network.component.GraphNetworkComponent#getContainer(Object)}.
+ * The container can be queried by {@link GraphNetworkComponent#getContainer(Object)}.
*
* @return the key, or null if indexing is not required
*/
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/Permission.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/Permission.java
new file mode 100644
index 000000000..83d8d54d9
--- /dev/null
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/Permission.java
@@ -0,0 +1,7 @@
+package com.refinedmods.refinedstorage2.api.network.security;
+
+import org.apiguardian.api.API;
+
+@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.5")
+public interface Permission {
+}
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityActor.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityActor.java
new file mode 100644
index 000000000..07514890c
--- /dev/null
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityActor.java
@@ -0,0 +1,7 @@
+package com.refinedmods.refinedstorage2.api.network.security;
+
+import org.apiguardian.api.API;
+
+@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.5")
+public interface SecurityActor {
+}
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityDecision.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityDecision.java
new file mode 100644
index 000000000..74f0ab94f
--- /dev/null
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityDecision.java
@@ -0,0 +1,19 @@
+package com.refinedmods.refinedstorage2.api.network.security;
+
+import org.apiguardian.api.API;
+
+@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.5")
+public enum SecurityDecision {
+ /**
+ * Allow the operation.
+ */
+ ALLOW,
+ /**
+ * Deny the operation.
+ */
+ DENY,
+ /**
+ * Pass the decision to the next {@link SecurityDecisionProvider}.
+ */
+ PASS
+}
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityDecisionProvider.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityDecisionProvider.java
new file mode 100644
index 000000000..65648e5fc
--- /dev/null
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityDecisionProvider.java
@@ -0,0 +1,17 @@
+package com.refinedmods.refinedstorage2.api.network.security;
+
+import org.apiguardian.api.API;
+
+@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.5")
+@FunctionalInterface
+public interface SecurityDecisionProvider {
+ SecurityDecision isAllowed(Permission permission, SecurityActor actor);
+
+ default SecurityDecision isAllowed(Permission permission) {
+ return SecurityDecision.PASS;
+ }
+
+ default boolean isActive() {
+ return true;
+ }
+}
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityNetworkComponent.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityNetworkComponent.java
new file mode 100644
index 000000000..fcda6ad8c
--- /dev/null
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityNetworkComponent.java
@@ -0,0 +1,11 @@
+package com.refinedmods.refinedstorage2.api.network.security;
+
+import com.refinedmods.refinedstorage2.api.network.NetworkComponent;
+
+import org.apiguardian.api.API;
+
+@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.5")
+@FunctionalInterface
+public interface SecurityNetworkComponent extends NetworkComponent {
+ boolean isAllowed(Permission permission, SecurityActor actor);
+}
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityPolicy.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityPolicy.java
new file mode 100644
index 000000000..fce560a79
--- /dev/null
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/SecurityPolicy.java
@@ -0,0 +1,15 @@
+package com.refinedmods.refinedstorage2.api.network.security;
+
+import java.util.Collections;
+import java.util.Set;
+
+import org.apiguardian.api.API;
+
+@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.5")
+public record SecurityPolicy(Set allowedPermissions) {
+ public static final SecurityPolicy EMPTY = new SecurityPolicy(Collections.emptySet());
+
+ public boolean isAllowed(final Permission permission) {
+ return allowedPermissions.contains(permission);
+ }
+}
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/package-info.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/package-info.java
similarity index 76%
rename from refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/package-info.java
rename to refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/package-info.java
index 6eb332e32..225161f99 100644
--- a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/package-info.java
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/security/package-info.java
@@ -1,6 +1,6 @@
@ParametersAreNonnullByDefault
@FieldsAndMethodsAreNonnullByDefault
-package com.refinedmods.refinedstorage2.api.network.component;
+package com.refinedmods.refinedstorage2.api.network.security;
import com.refinedmods.refinedstorage2.api.core.FieldsAndMethodsAreNonnullByDefault;
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/StorageNetworkComponent.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/storage/StorageNetworkComponent.java
similarity index 79%
rename from refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/StorageNetworkComponent.java
rename to refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/storage/StorageNetworkComponent.java
index 80abdd04e..7b6a9ad0d 100644
--- a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/StorageNetworkComponent.java
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/storage/StorageNetworkComponent.java
@@ -1,5 +1,6 @@
-package com.refinedmods.refinedstorage2.api.network.component;
+package com.refinedmods.refinedstorage2.api.network.storage;
+import com.refinedmods.refinedstorage2.api.network.NetworkComponent;
import com.refinedmods.refinedstorage2.api.storage.Actor;
import com.refinedmods.refinedstorage2.api.storage.TrackedResourceAmount;
import com.refinedmods.refinedstorage2.api.storage.channel.StorageChannel;
diff --git a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/StorageProvider.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/storage/StorageProvider.java
similarity index 94%
rename from refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/StorageProvider.java
rename to refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/storage/StorageProvider.java
index efb73f178..ee7e1cad5 100644
--- a/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/component/StorageProvider.java
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/storage/StorageProvider.java
@@ -1,4 +1,4 @@
-package com.refinedmods.refinedstorage2.api.network.component;
+package com.refinedmods.refinedstorage2.api.network.storage;
import com.refinedmods.refinedstorage2.api.storage.Storage;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/component/package-info.java b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/storage/package-info.java
similarity index 75%
rename from refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/component/package-info.java
rename to refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/storage/package-info.java
index af8789144..8ed1419ba 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/component/package-info.java
+++ b/refinedstorage2-network-api/src/main/java/com/refinedmods/refinedstorage2/api/network/storage/package-info.java
@@ -1,6 +1,6 @@
@ParametersAreNonnullByDefault
@FieldsAndMethodsAreNonnullByDefault
-package com.refinedmods.refinedstorage2.api.network.impl.component;
+package com.refinedmods.refinedstorage2.api.network.storage;
import com.refinedmods.refinedstorage2.api.core.FieldsAndMethodsAreNonnullByDefault;
diff --git a/refinedstorage2-network-test/src/main/java/com/refinedmods/refinedstorage2/network/test/NetworkTestExtension.java b/refinedstorage2-network-test/src/main/java/com/refinedmods/refinedstorage2/network/test/NetworkTestExtension.java
index 7eabe5bba..96c5afaa1 100644
--- a/refinedstorage2-network-test/src/main/java/com/refinedmods/refinedstorage2/network/test/NetworkTestExtension.java
+++ b/refinedstorage2-network-test/src/main/java/com/refinedmods/refinedstorage2/network/test/NetworkTestExtension.java
@@ -2,13 +2,13 @@
import com.refinedmods.refinedstorage2.api.core.Action;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.EnergyNetworkComponent;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.energy.EnergyNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.energy.EnergyStorage;
import com.refinedmods.refinedstorage2.api.network.impl.NetworkImpl;
import com.refinedmods.refinedstorage2.api.network.impl.energy.EnergyStorageImpl;
import com.refinedmods.refinedstorage2.api.network.impl.node.controller.ControllerNetworkNode;
import com.refinedmods.refinedstorage2.api.network.node.NetworkNode;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.storage.channel.StorageChannel;
import com.refinedmods.refinedstorage2.network.test.nodefactory.NetworkNodeFactory;
diff --git a/refinedstorage2-network-test/src/main/java/com/refinedmods/refinedstorage2/network/test/NetworkTestFixtures.java b/refinedstorage2-network-test/src/main/java/com/refinedmods/refinedstorage2/network/test/NetworkTestFixtures.java
index c32013a72..71914cc5f 100644
--- a/refinedstorage2-network-test/src/main/java/com/refinedmods/refinedstorage2/network/test/NetworkTestFixtures.java
+++ b/refinedstorage2-network-test/src/main/java/com/refinedmods/refinedstorage2/network/test/NetworkTestFixtures.java
@@ -2,13 +2,13 @@
import com.refinedmods.refinedstorage2.api.core.component.ComponentMapFactory;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.EnergyNetworkComponent;
-import com.refinedmods.refinedstorage2.api.network.component.GraphNetworkComponent;
-import com.refinedmods.refinedstorage2.api.network.component.NetworkComponent;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
-import com.refinedmods.refinedstorage2.api.network.impl.component.EnergyNetworkComponentImpl;
-import com.refinedmods.refinedstorage2.api.network.impl.component.GraphNetworkComponentImpl;
-import com.refinedmods.refinedstorage2.api.network.impl.component.StorageNetworkComponentImpl;
+import com.refinedmods.refinedstorage2.api.network.NetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.energy.EnergyNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.impl.energy.EnergyNetworkComponentImpl;
+import com.refinedmods.refinedstorage2.api.network.impl.node.GraphNetworkComponentImpl;
+import com.refinedmods.refinedstorage2.api.network.impl.storage.StorageNetworkComponentImpl;
+import com.refinedmods.refinedstorage2.api.network.node.GraphNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.resource.list.ResourceListImpl;
public final class NetworkTestFixtures {
diff --git a/refinedstorage2-network-test/src/test/java/com/refinedmods/refinedstorage2/network/test/NetworkTestExtensionTest.java b/refinedstorage2-network-test/src/test/java/com/refinedmods/refinedstorage2/network/test/NetworkTestExtensionTest.java
index 45af0666f..fa703a9b1 100644
--- a/refinedstorage2-network-test/src/test/java/com/refinedmods/refinedstorage2/network/test/NetworkTestExtensionTest.java
+++ b/refinedstorage2-network-test/src/test/java/com/refinedmods/refinedstorage2/network/test/NetworkTestExtensionTest.java
@@ -1,13 +1,13 @@
package com.refinedmods.refinedstorage2.network.test;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.EnergyNetworkComponent;
-import com.refinedmods.refinedstorage2.api.network.component.GraphNetworkComponent;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.energy.EnergyNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.impl.node.SimpleNetworkNode;
import com.refinedmods.refinedstorage2.api.network.impl.node.multistorage.MultiStorageNetworkNode;
import com.refinedmods.refinedstorage2.api.network.impl.node.storage.StorageNetworkNode;
+import com.refinedmods.refinedstorage2.api.network.node.GraphNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.storage.channel.StorageChannel;
import com.refinedmods.refinedstorage2.network.test.nodefactory.AbstractNetworkNodeFactory;
import com.refinedmods.refinedstorage2.network.test.nodefactory.MultiStorageNetworkNodeFactory;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/NetworkBuilderImpl.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/NetworkBuilderImpl.java
index 5023859cc..52404150c 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/NetworkBuilderImpl.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/NetworkBuilderImpl.java
@@ -5,7 +5,7 @@
import com.refinedmods.refinedstorage2.api.network.Connections;
import com.refinedmods.refinedstorage2.api.network.Network;
import com.refinedmods.refinedstorage2.api.network.NetworkBuilder;
-import com.refinedmods.refinedstorage2.api.network.component.GraphNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.node.GraphNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.NetworkNode;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/NetworkFactory.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/NetworkFactory.java
index 9cf601583..e03c4d389 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/NetworkFactory.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/NetworkFactory.java
@@ -2,7 +2,7 @@
import com.refinedmods.refinedstorage2.api.core.component.ComponentMapFactory;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.NetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.NetworkComponent;
public class NetworkFactory {
private final ComponentMapFactory componentMapFactory;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/NetworkImpl.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/NetworkImpl.java
index b9e1378d0..fd14afd8c 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/NetworkImpl.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/NetworkImpl.java
@@ -3,7 +3,7 @@
import com.refinedmods.refinedstorage2.api.core.component.ComponentMap;
import com.refinedmods.refinedstorage2.api.core.component.ComponentMapFactory;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.NetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.NetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
import java.util.Set;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/component/EnergyNetworkComponentImpl.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/energy/EnergyNetworkComponentImpl.java
similarity index 82%
rename from refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/component/EnergyNetworkComponentImpl.java
rename to refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/energy/EnergyNetworkComponentImpl.java
index 142afe2c2..e9bfe0a3b 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/component/EnergyNetworkComponentImpl.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/energy/EnergyNetworkComponentImpl.java
@@ -1,9 +1,8 @@
-package com.refinedmods.refinedstorage2.api.network.impl.component;
+package com.refinedmods.refinedstorage2.api.network.impl.energy;
import com.refinedmods.refinedstorage2.api.core.Action;
-import com.refinedmods.refinedstorage2.api.network.component.EnergyNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.energy.EnergyNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.energy.EnergyStorage;
-import com.refinedmods.refinedstorage2.api.network.impl.energy.CompositeEnergyStorage;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
public class EnergyNetworkComponentImpl implements EnergyNetworkComponent {
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/component/GraphNetworkComponentImpl.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/GraphNetworkComponentImpl.java
similarity index 96%
rename from refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/component/GraphNetworkComponentImpl.java
rename to refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/GraphNetworkComponentImpl.java
index 9ce369dc1..8abdde984 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/component/GraphNetworkComponentImpl.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/GraphNetworkComponentImpl.java
@@ -1,7 +1,7 @@
-package com.refinedmods.refinedstorage2.api.network.impl.component;
+package com.refinedmods.refinedstorage2.api.network.impl.node;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.GraphNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.node.GraphNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
import java.util.Collections;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/detector/AbstractDetectorAmountStrategy.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/detector/AbstractDetectorAmountStrategy.java
index 0266f5c37..84000d748 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/detector/AbstractDetectorAmountStrategy.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/detector/AbstractDetectorAmountStrategy.java
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage2.api.network.impl.node.detector;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.storage.channel.StorageChannel;
public abstract class AbstractDetectorAmountStrategy implements DetectorAmountStrategy {
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/exporter/ExporterTransferStrategyImpl.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/exporter/ExporterTransferStrategyImpl.java
index 587f0201f..086e9250c 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/exporter/ExporterTransferStrategyImpl.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/exporter/ExporterTransferStrategyImpl.java
@@ -1,8 +1,8 @@
package com.refinedmods.refinedstorage2.api.network.impl.node.exporter;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.exporter.ExporterTransferStrategy;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
import com.refinedmods.refinedstorage2.api.storage.Actor;
import com.refinedmods.refinedstorage2.api.storage.InsertableStorage;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/externalstorage/ExternalStorageNetworkNode.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/externalstorage/ExternalStorageNetworkNode.java
index 6d4d66bb2..7ea8a845b 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/externalstorage/ExternalStorageNetworkNode.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/externalstorage/ExternalStorageNetworkNode.java
@@ -1,8 +1,8 @@
package com.refinedmods.refinedstorage2.api.network.impl.node.externalstorage;
-import com.refinedmods.refinedstorage2.api.network.component.StorageProvider;
import com.refinedmods.refinedstorage2.api.network.impl.storage.AbstractStorageNetworkNode;
import com.refinedmods.refinedstorage2.api.network.node.externalstorage.ExternalStorageProviderFactory;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageProvider;
import com.refinedmods.refinedstorage2.api.storage.Storage;
import com.refinedmods.refinedstorage2.api.storage.external.ExternalStorage;
import com.refinedmods.refinedstorage2.api.storage.tracked.TrackedStorageRepository;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/grid/GridNetworkNode.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/grid/GridNetworkNode.java
index 255721c6c..1df665710 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/grid/GridNetworkNode.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/grid/GridNetworkNode.java
@@ -4,8 +4,8 @@
import com.refinedmods.refinedstorage2.api.grid.watcher.GridWatcherManager;
import com.refinedmods.refinedstorage2.api.grid.watcher.GridWatcherManagerImpl;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.impl.storage.AbstractNetworkNode;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.storage.Actor;
import javax.annotation.Nullable;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/iface/InterfaceNetworkNode.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/iface/InterfaceNetworkNode.java
index 5ebb5580e..95a969da1 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/iface/InterfaceNetworkNode.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/iface/InterfaceNetworkNode.java
@@ -1,11 +1,11 @@
package com.refinedmods.refinedstorage2.api.network.impl.node.iface;
import com.refinedmods.refinedstorage2.api.core.Action;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.impl.node.externalstorage.ExposedExternalStorage;
import com.refinedmods.refinedstorage2.api.network.impl.node.iface.externalstorage.InterfaceExternalStorageProvider;
import com.refinedmods.refinedstorage2.api.network.impl.storage.AbstractNetworkNode;
import com.refinedmods.refinedstorage2.api.network.node.NetworkNodeActor;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
import com.refinedmods.refinedstorage2.api.storage.Actor;
import com.refinedmods.refinedstorage2.api.storage.Storage;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/importer/ImporterTransferStrategyImpl.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/importer/ImporterTransferStrategyImpl.java
index eaf157014..bd343045f 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/importer/ImporterTransferStrategyImpl.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/importer/ImporterTransferStrategyImpl.java
@@ -1,8 +1,8 @@
package com.refinedmods.refinedstorage2.api.network.impl.node.importer;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.importer.ImporterTransferStrategy;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
import com.refinedmods.refinedstorage2.api.resource.filter.Filter;
import com.refinedmods.refinedstorage2.api.storage.Actor;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/multistorage/MultiStorageNetworkNode.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/multistorage/MultiStorageNetworkNode.java
index 667f40117..463778f84 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/multistorage/MultiStorageNetworkNode.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/multistorage/MultiStorageNetworkNode.java
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage2.api.network.impl.node.multistorage;
-import com.refinedmods.refinedstorage2.api.network.component.StorageProvider;
import com.refinedmods.refinedstorage2.api.network.impl.storage.AbstractStorageNetworkNode;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageProvider;
import com.refinedmods.refinedstorage2.api.storage.StateTrackedStorage;
import com.refinedmods.refinedstorage2.api.storage.Storage;
import com.refinedmods.refinedstorage2.api.storage.StorageState;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/security/SecurityDecisionProviderProxyNetworkNode.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/security/SecurityDecisionProviderProxyNetworkNode.java
new file mode 100644
index 000000000..1ab5c878d
--- /dev/null
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/security/SecurityDecisionProviderProxyNetworkNode.java
@@ -0,0 +1,53 @@
+package com.refinedmods.refinedstorage2.api.network.impl.node.security;
+
+import com.refinedmods.refinedstorage2.api.network.impl.storage.AbstractNetworkNode;
+import com.refinedmods.refinedstorage2.api.network.security.Permission;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityActor;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityDecision;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityDecisionProvider;
+
+import javax.annotation.Nullable;
+
+public class SecurityDecisionProviderProxyNetworkNode extends AbstractNetworkNode implements SecurityDecisionProvider {
+ private long energyUsage;
+ @Nullable
+ private SecurityDecisionProvider delegate;
+
+ public SecurityDecisionProviderProxyNetworkNode(final long energyUsage) {
+ this.energyUsage = energyUsage;
+ }
+
+ public SecurityDecisionProviderProxyNetworkNode(final long energyUsage, final SecurityDecisionProvider delegate) {
+ this(energyUsage);
+ this.delegate = delegate;
+ }
+
+ public void setDelegate(@Nullable final SecurityDecisionProvider delegate) {
+ this.delegate = delegate;
+ }
+
+ public void setEnergyUsage(final long energyUsage) {
+ this.energyUsage = energyUsage;
+ }
+
+ @Override
+ public long getEnergyUsage() {
+ return energyUsage;
+ }
+
+ @Override
+ public SecurityDecision isAllowed(final Permission permission, final SecurityActor actor) {
+ if (delegate == null) {
+ return SecurityDecision.PASS;
+ }
+ return delegate.isAllowed(permission, actor);
+ }
+
+ @Override
+ public SecurityDecision isAllowed(final Permission permission) {
+ if (delegate == null) {
+ return SecurityDecision.PASS;
+ }
+ return delegate.isAllowed(permission);
+ }
+}
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/security/package-info.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/security/package-info.java
new file mode 100644
index 000000000..777320ebd
--- /dev/null
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/security/package-info.java
@@ -0,0 +1,7 @@
+@ParametersAreNonnullByDefault
+@FieldsAndMethodsAreNonnullByDefault
+package com.refinedmods.refinedstorage2.api.network.impl.node.security;
+
+import com.refinedmods.refinedstorage2.api.core.FieldsAndMethodsAreNonnullByDefault;
+
+import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/storage/StorageNetworkNode.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/storage/StorageNetworkNode.java
index 6b0b57a45..ca7e2773f 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/storage/StorageNetworkNode.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/node/storage/StorageNetworkNode.java
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage2.api.network.impl.node.storage;
-import com.refinedmods.refinedstorage2.api.network.component.StorageProvider;
import com.refinedmods.refinedstorage2.api.network.impl.storage.AbstractStorageNetworkNode;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageProvider;
import com.refinedmods.refinedstorage2.api.storage.Storage;
import javax.annotation.Nullable;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/security/SecurityDecisionProviderImpl.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/security/SecurityDecisionProviderImpl.java
new file mode 100644
index 000000000..006dc6e91
--- /dev/null
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/security/SecurityDecisionProviderImpl.java
@@ -0,0 +1,52 @@
+package com.refinedmods.refinedstorage2.api.network.impl.security;
+
+import com.refinedmods.refinedstorage2.api.network.security.Permission;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityActor;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityDecision;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityDecisionProvider;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityPolicy;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.annotation.Nullable;
+
+public class SecurityDecisionProviderImpl implements SecurityDecisionProvider {
+ private final Map policyByActor = new HashMap<>();
+ @Nullable
+ private SecurityPolicy defaultPolicy;
+
+ public SecurityDecisionProviderImpl setPolicy(final SecurityActor actor, final SecurityPolicy policy) {
+ policyByActor.put(actor, policy);
+ return this;
+ }
+
+ public SecurityDecisionProviderImpl setDefaultPolicy(@Nullable final SecurityPolicy policy) {
+ this.defaultPolicy = policy;
+ return this;
+ }
+
+ public void clearPolicies() {
+ policyByActor.clear();
+ }
+
+ @Override
+ public SecurityDecision isAllowed(final Permission permission, final SecurityActor actor) {
+ final SecurityPolicy policy = policyByActor.get(actor);
+ if (policy == null) {
+ return SecurityDecision.PASS;
+ }
+ return allowOrDeny(policy.isAllowed(permission));
+ }
+
+ @Override
+ public SecurityDecision isAllowed(final Permission permission) {
+ if (defaultPolicy == null) {
+ return SecurityDecision.PASS;
+ }
+ return allowOrDeny(defaultPolicy.isAllowed(permission));
+ }
+
+ private static SecurityDecision allowOrDeny(final boolean allowed) {
+ return allowed ? SecurityDecision.ALLOW : SecurityDecision.DENY;
+ }
+}
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/security/SecurityNetworkComponentImpl.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/security/SecurityNetworkComponentImpl.java
new file mode 100644
index 000000000..1b3eceeb0
--- /dev/null
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/security/SecurityNetworkComponentImpl.java
@@ -0,0 +1,70 @@
+package com.refinedmods.refinedstorage2.api.network.impl.security;
+
+import com.refinedmods.refinedstorage2.api.core.CoreValidations;
+import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
+import com.refinedmods.refinedstorage2.api.network.security.Permission;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityActor;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityDecision;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityDecisionProvider;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityPolicy;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+public class SecurityNetworkComponentImpl implements SecurityNetworkComponent {
+ private final Set providers = new LinkedHashSet<>();
+ private final SecurityPolicy defaultPolicy;
+
+ public SecurityNetworkComponentImpl(final SecurityPolicy defaultPolicy) {
+ this.defaultPolicy = defaultPolicy;
+ }
+
+ @Override
+ public void onContainerAdded(final NetworkNodeContainer container) {
+ if (container.getNode() instanceof SecurityDecisionProvider provider) {
+ providers.add(provider);
+ }
+ }
+
+ @Override
+ public void onContainerRemoved(final NetworkNodeContainer container) {
+ if (container.getNode() instanceof SecurityDecisionProvider provider) {
+ providers.remove(provider);
+ }
+ }
+
+ @Override
+ public boolean isAllowed(final Permission permission, final SecurityActor actor) {
+ final Set activeProviders = providers.stream()
+ .filter(SecurityDecisionProvider::isActive)
+ .collect(Collectors.toSet());
+ if (activeProviders.isEmpty()) {
+ return defaultPolicy.isAllowed(permission);
+ }
+ final Set decisions = activeProviders.stream().map(provider ->
+ CoreValidations.validateNotNull(provider.isAllowed(permission, actor), "Decision cannot be null")
+ ).collect(Collectors.toSet());
+ final boolean anyDenied = decisions.stream().anyMatch(decision -> decision == SecurityDecision.DENY);
+ if (anyDenied) {
+ return false;
+ }
+ final boolean anyAllowed = decisions.stream().anyMatch(decision -> decision == SecurityDecision.ALLOW);
+ if (anyAllowed) {
+ return true;
+ }
+ return tryFallback(permission, activeProviders);
+ }
+
+ private boolean tryFallback(final Permission permission, final Set activeProviders) {
+ final Set decisions = activeProviders.stream().map(provider ->
+ CoreValidations.validateNotNull(provider.isAllowed(permission), "Decision cannot be null")
+ ).collect(Collectors.toSet());
+ final boolean anyDenied = decisions.stream().anyMatch(decision -> decision == SecurityDecision.DENY);
+ if (anyDenied) {
+ return false;
+ }
+ return decisions.stream().anyMatch(decision -> decision == SecurityDecision.ALLOW);
+ }
+}
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/security/package-info.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/security/package-info.java
new file mode 100644
index 000000000..ea536fa20
--- /dev/null
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/security/package-info.java
@@ -0,0 +1,7 @@
+@ParametersAreNonnullByDefault
+@FieldsAndMethodsAreNonnullByDefault
+package com.refinedmods.refinedstorage2.api.network.impl.security;
+
+import com.refinedmods.refinedstorage2.api.core.FieldsAndMethodsAreNonnullByDefault;
+
+import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/storage/AbstractNetworkNode.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/storage/AbstractNetworkNode.java
index 8a6955d77..62668a51e 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/storage/AbstractNetworkNode.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/storage/AbstractNetworkNode.java
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage2.api.network.impl.storage;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.EnergyNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.energy.EnergyNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.NetworkNode;
import javax.annotation.Nullable;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/storage/AbstractStorageNetworkNode.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/storage/AbstractStorageNetworkNode.java
index 3712bbe59..695e0a26f 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/storage/AbstractStorageNetworkNode.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/storage/AbstractStorageNetworkNode.java
@@ -1,6 +1,6 @@
package com.refinedmods.refinedstorage2.api.network.impl.storage;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
import com.refinedmods.refinedstorage2.api.resource.filter.Filter;
import com.refinedmods.refinedstorage2.api.resource.filter.FilterMode;
diff --git a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/component/StorageNetworkComponentImpl.java b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/storage/StorageNetworkComponentImpl.java
similarity index 88%
rename from refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/component/StorageNetworkComponentImpl.java
rename to refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/storage/StorageNetworkComponentImpl.java
index 27f9c57a3..6e25cc557 100644
--- a/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/component/StorageNetworkComponentImpl.java
+++ b/refinedstorage2-network/src/main/java/com/refinedmods/refinedstorage2/api/network/impl/storage/StorageNetworkComponentImpl.java
@@ -1,8 +1,8 @@
-package com.refinedmods.refinedstorage2.api.network.impl.component;
+package com.refinedmods.refinedstorage2.api.network.impl.storage;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
-import com.refinedmods.refinedstorage2.api.network.component.StorageProvider;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageProvider;
import com.refinedmods.refinedstorage2.api.resource.list.ResourceList;
import com.refinedmods.refinedstorage2.api.storage.Actor;
import com.refinedmods.refinedstorage2.api.storage.Storage;
diff --git a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/AbstractNetworkBuilderImplTest.java b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/AbstractNetworkBuilderImplTest.java
index 756321467..7baf1d54b 100644
--- a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/AbstractNetworkBuilderImplTest.java
+++ b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/AbstractNetworkBuilderImplTest.java
@@ -3,7 +3,7 @@
import com.refinedmods.refinedstorage2.api.core.component.ComponentMapFactory;
import com.refinedmods.refinedstorage2.api.network.Network;
import com.refinedmods.refinedstorage2.api.network.NetworkBuilder;
-import com.refinedmods.refinedstorage2.api.network.component.NetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.NetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.NetworkNode;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
import com.refinedmods.refinedstorage2.network.test.NetworkTestFixtures;
diff --git a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/InitializeNetworkBuilderImplTest.java b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/InitializeNetworkBuilderImplTest.java
index 76f4d1e9a..4fdfe747f 100644
--- a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/InitializeNetworkBuilderImplTest.java
+++ b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/InitializeNetworkBuilderImplTest.java
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage2.api.network.impl;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.GraphNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.node.GraphNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
import org.junit.jupiter.api.Test;
diff --git a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/RemoveNetworkBuilderImplTest.java b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/RemoveNetworkBuilderImplTest.java
index 16aeb3b0d..d83d71a2a 100644
--- a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/RemoveNetworkBuilderImplTest.java
+++ b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/RemoveNetworkBuilderImplTest.java
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage2.api.network.impl;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.GraphNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.node.GraphNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
import java.util.List;
diff --git a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/UpdateNetworkBuilderImplTest.java b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/UpdateNetworkBuilderImplTest.java
index deba09825..bfa4da26f 100644
--- a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/UpdateNetworkBuilderImplTest.java
+++ b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/UpdateNetworkBuilderImplTest.java
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage2.api.network.impl;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.GraphNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.node.GraphNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
import java.util.Set;
diff --git a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/component/EnergyNetworkComponentImplTest.java b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/energy/EnergyNetworkComponentImplTest.java
similarity index 92%
rename from refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/component/EnergyNetworkComponentImplTest.java
rename to refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/energy/EnergyNetworkComponentImplTest.java
index 784282354..e7ca16904 100644
--- a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/component/EnergyNetworkComponentImplTest.java
+++ b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/energy/EnergyNetworkComponentImplTest.java
@@ -1,8 +1,7 @@
-package com.refinedmods.refinedstorage2.api.network.impl.component;
+package com.refinedmods.refinedstorage2.api.network.impl.energy;
import com.refinedmods.refinedstorage2.api.core.Action;
-import com.refinedmods.refinedstorage2.api.network.component.EnergyNetworkComponent;
-import com.refinedmods.refinedstorage2.api.network.impl.energy.EnergyStorageImpl;
+import com.refinedmods.refinedstorage2.api.network.energy.EnergyNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.impl.node.controller.ControllerNetworkNode;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
diff --git a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/component/GraphNetworkComponentImplTest.java b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/GraphNetworkComponentImplTest.java
similarity index 97%
rename from refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/component/GraphNetworkComponentImplTest.java
rename to refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/GraphNetworkComponentImplTest.java
index 901e04bb8..b577f37c2 100644
--- a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/component/GraphNetworkComponentImplTest.java
+++ b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/GraphNetworkComponentImplTest.java
@@ -1,8 +1,7 @@
-package com.refinedmods.refinedstorage2.api.network.impl.component;
+package com.refinedmods.refinedstorage2.api.network.impl.node;
-import com.refinedmods.refinedstorage2.api.network.component.GraphNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.impl.NetworkImpl;
-import com.refinedmods.refinedstorage2.api.network.impl.node.SimpleNetworkNode;
+import com.refinedmods.refinedstorage2.api.network.node.GraphNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.NetworkNode;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
import com.refinedmods.refinedstorage2.network.test.NetworkTestFixtures;
diff --git a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/SimpleNetworkNodeTest.java b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/SimpleNetworkNodeTest.java
index 2adab7ad3..cb3d53eb9 100644
--- a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/SimpleNetworkNodeTest.java
+++ b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/SimpleNetworkNodeTest.java
@@ -1,6 +1,6 @@
package com.refinedmods.refinedstorage2.api.network.impl.node;
-import com.refinedmods.refinedstorage2.api.network.component.EnergyNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.energy.EnergyNetworkComponent;
import com.refinedmods.refinedstorage2.network.test.AddNetworkNode;
import com.refinedmods.refinedstorage2.network.test.InjectNetworkEnergyComponent;
import com.refinedmods.refinedstorage2.network.test.NetworkTest;
diff --git a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/exporter/AbstractExporterNetworkNodeTest.java b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/exporter/AbstractExporterNetworkNodeTest.java
index e8f24c153..e36a0c7f9 100644
--- a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/exporter/AbstractExporterNetworkNodeTest.java
+++ b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/exporter/AbstractExporterNetworkNodeTest.java
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage2.api.network.impl.node.exporter;
import com.refinedmods.refinedstorage2.api.core.Action;
-import com.refinedmods.refinedstorage2.api.network.component.EnergyNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.energy.EnergyNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.exporter.ExporterTransferStrategy;
import com.refinedmods.refinedstorage2.api.network.node.task.TaskExecutor;
import com.refinedmods.refinedstorage2.api.resource.ResourceAmount;
diff --git a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/iface/InterfaceNetworkNodeTest.java b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/iface/InterfaceNetworkNodeTest.java
index 3e995a5ca..7365d7687 100644
--- a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/iface/InterfaceNetworkNodeTest.java
+++ b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/iface/InterfaceNetworkNodeTest.java
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage2.api.network.impl.node.iface;
import com.refinedmods.refinedstorage2.api.core.Action;
-import com.refinedmods.refinedstorage2.api.network.component.EnergyNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.energy.EnergyNetworkComponent;
import com.refinedmods.refinedstorage2.api.resource.ResourceAmount;
import com.refinedmods.refinedstorage2.api.storage.EmptyActor;
import com.refinedmods.refinedstorage2.api.storage.InMemoryStorageImpl;
diff --git a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/importer/ImporterNetworkNodeTest.java b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/importer/ImporterNetworkNodeTest.java
index 870b03c00..03e491b57 100644
--- a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/importer/ImporterNetworkNodeTest.java
+++ b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/node/importer/ImporterNetworkNodeTest.java
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage2.api.network.impl.node.importer;
import com.refinedmods.refinedstorage2.api.core.Action;
-import com.refinedmods.refinedstorage2.api.network.component.EnergyNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.energy.EnergyNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.node.importer.ImporterTransferStrategy;
import com.refinedmods.refinedstorage2.api.resource.ResourceAmount;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
diff --git a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/security/SecurityNetworkComponentImplTest.java b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/security/SecurityNetworkComponentImplTest.java
new file mode 100644
index 000000000..596534a0c
--- /dev/null
+++ b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/security/SecurityNetworkComponentImplTest.java
@@ -0,0 +1,204 @@
+package com.refinedmods.refinedstorage2.api.network.impl.security;
+
+import com.refinedmods.refinedstorage2.api.network.impl.node.security.SecurityDecisionProviderProxyNetworkNode;
+import com.refinedmods.refinedstorage2.api.network.security.Permission;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityActor;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityDecisionProvider;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityPolicy;
+
+import java.util.Set;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class SecurityNetworkComponentImplTest {
+ SecurityNetworkComponent sut;
+ SecurityDecisionProviderImpl securityDecisionProvider;
+ SecurityDecisionProviderProxyNetworkNode node;
+
+ @BeforeEach
+ void setUp() {
+ sut = new SecurityNetworkComponentImpl(policy(TestPermissions.ALLOW_BY_DEFAULT));
+ securityDecisionProvider = new SecurityDecisionProviderImpl();
+ node = createNode(securityDecisionProvider);
+ }
+
+ @Test
+ void shouldUseDefaultPolicyIfNoSecurityDecisionProvidersArePresent() {
+ // Act & assert
+ assertThat(sut.isAllowed(TestPermissions.ALLOW_BY_DEFAULT, TestActors.A)).isTrue();
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.A)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.A)).isFalse();
+
+ assertThat(sut.isAllowed(TestPermissions.ALLOW_BY_DEFAULT, TestActors.B)).isTrue();
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.B)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.B)).isFalse();
+ }
+
+ @Test
+ void shouldDenyAllIfAtLeastOneSecurityDecisionProviderIsPresent() {
+ // Arrange
+ sut.onContainerAdded(() -> node);
+
+ // Act & assert
+ assertThat(sut.isAllowed(TestPermissions.ALLOW_BY_DEFAULT, TestActors.A)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.A)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.A)).isFalse();
+
+ assertThat(sut.isAllowed(TestPermissions.ALLOW_BY_DEFAULT, TestActors.B)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.B)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.B)).isFalse();
+ }
+
+ @Test
+ void shouldUseDefaultPolicyIfAllSecurityDecisionProvidersAreInactive() {
+ // Arrange
+ sut.onContainerAdded(() -> createNode(new SecurityDecisionProviderImpl()
+ .setDefaultPolicy(policy(TestPermissions.OTHER)), false));
+
+ // Act & assert
+ assertThat(sut.isAllowed(TestPermissions.ALLOW_BY_DEFAULT, TestActors.A)).isTrue();
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.A)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.A)).isFalse();
+
+ assertThat(sut.isAllowed(TestPermissions.ALLOW_BY_DEFAULT, TestActors.B)).isTrue();
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.B)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.B)).isFalse();
+ }
+
+ @Test
+ void shouldAllowOrDeny() {
+ // Arrange
+ securityDecisionProvider.setPolicy(TestActors.A, policy(TestPermissions.OTHER));
+ sut.onContainerAdded(() -> node);
+
+ // Act & assert
+ assertThat(sut.isAllowed(TestPermissions.ALLOW_BY_DEFAULT, TestActors.A)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.A)).isTrue();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.A)).isFalse();
+
+ assertThat(sut.isAllowed(TestPermissions.ALLOW_BY_DEFAULT, TestActors.B)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.B)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.B)).isFalse();
+ }
+
+ @Test
+ void shouldOnlyAllowIfAllSecurityDecisionProvidersAllow() {
+ // Arrange
+ sut.onContainerAdded(() -> createNode(new SecurityDecisionProviderImpl()
+ .setPolicy(TestActors.A, policy(TestPermissions.OTHER))
+ ));
+
+ sut.onContainerAdded(() -> createNode(new SecurityDecisionProviderImpl()
+ .setPolicy(TestActors.A, policy(TestPermissions.OTHER2))
+ ));
+
+ sut.onContainerAdded(() -> createNode(new SecurityDecisionProviderImpl()
+ .setPolicy(TestActors.B, policy(TestPermissions.OTHER))
+ ));
+
+ sut.onContainerAdded(() -> createNode(new SecurityDecisionProviderImpl()
+ .setPolicy(TestActors.A, policy(TestPermissions.ALLOW_BY_DEFAULT))
+ .setDefaultPolicy(policy(TestPermissions.OTHER, TestPermissions.OTHER2)), false));
+
+ // Act & assert
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.A)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.A)).isFalse();
+
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.B)).isTrue();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.B)).isFalse();
+
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.C)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.C)).isFalse();
+ }
+
+ @Test
+ void shouldUseDefaultPolicyOfSecurityDecisionProviderIfAllProvidersPassDecision() {
+ // Arrange
+ sut.onContainerAdded(() -> createNode(new SecurityDecisionProviderImpl()
+ .setPolicy(TestActors.A, policy(TestPermissions.OTHER))
+ .setDefaultPolicy(policy(TestPermissions.ALLOW_BY_DEFAULT))
+ ));
+
+ sut.onContainerAdded(() -> createNode(new SecurityDecisionProviderImpl()
+ .setPolicy(TestActors.A, policy(TestPermissions.OTHER))
+ .setDefaultPolicy(policy(TestPermissions.ALLOW_BY_DEFAULT, TestPermissions.OTHER2))
+ ));
+
+ sut.onContainerAdded(() -> createNode(new SecurityDecisionProviderImpl()
+ .setPolicy(TestActors.C, policy(TestPermissions.OTHER))
+ ));
+
+ // Act & assert
+ assertThat(sut.isAllowed(TestPermissions.ALLOW_BY_DEFAULT, TestActors.A)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.A)).isTrue();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.A)).isFalse();
+
+ assertThat(sut.isAllowed(TestPermissions.ALLOW_BY_DEFAULT, TestActors.B)).isTrue();
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.B)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.B)).isFalse();
+
+ assertThat(sut.isAllowed(TestPermissions.ALLOW_BY_DEFAULT, TestActors.C)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.C)).isTrue();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.C)).isFalse();
+ }
+
+ @Test
+ void shouldRemoveContainer() {
+ // Arrange
+ sut.onContainerAdded(() -> createNode(new SecurityDecisionProviderImpl()
+ .setDefaultPolicy(policy(TestPermissions.ALLOW_BY_DEFAULT))
+ ));
+
+ final var removedNode = createNode(new SecurityDecisionProviderImpl()
+ .setDefaultPolicy(policy(TestPermissions.OTHER)));
+ sut.onContainerAdded(() -> removedNode);
+
+ // Act
+ sut.onContainerRemoved(() -> removedNode);
+
+ // Assert
+ assertThat(sut.isAllowed(TestPermissions.ALLOW_BY_DEFAULT, TestActors.A)).isTrue();
+ }
+
+ @Test
+ void shouldClearPolicies() {
+ // Arrange
+ sut.onContainerAdded(() -> node);
+ securityDecisionProvider.setPolicy(TestActors.A, policy(TestPermissions.OTHER));
+ securityDecisionProvider.setDefaultPolicy(policy(TestPermissions.OTHER2));
+
+ // Act
+ securityDecisionProvider.clearPolicies();
+
+ // Assert
+ assertThat(sut.isAllowed(TestPermissions.OTHER, TestActors.A)).isFalse();
+ assertThat(sut.isAllowed(TestPermissions.OTHER2, TestActors.A)).isTrue();
+ }
+
+ private static SecurityDecisionProviderProxyNetworkNode createNode(final SecurityDecisionProvider provider) {
+ return createNode(provider, true);
+ }
+
+ private static SecurityDecisionProviderProxyNetworkNode createNode(final SecurityDecisionProvider provider,
+ final boolean active) {
+ final var node = new SecurityDecisionProviderProxyNetworkNode(0, provider);
+ node.setActive(active);
+ return node;
+ }
+
+ enum TestPermissions implements Permission {
+ ALLOW_BY_DEFAULT, OTHER, OTHER2
+ }
+
+ enum TestActors implements SecurityActor {
+ A, B, C
+ }
+
+ private SecurityPolicy policy(final Permission... permissions) {
+ return new SecurityPolicy(Set.of(permissions));
+ }
+}
diff --git a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/component/StorageNetworkComponentImplTest.java b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/storage/StorageNetworkComponentImplTest.java
similarity index 96%
rename from refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/component/StorageNetworkComponentImplTest.java
rename to refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/storage/StorageNetworkComponentImplTest.java
index c4720c52e..0e8246008 100644
--- a/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/component/StorageNetworkComponentImplTest.java
+++ b/refinedstorage2-network/src/test/java/com/refinedmods/refinedstorage2/api/network/impl/storage/StorageNetworkComponentImplTest.java
@@ -1,10 +1,10 @@
-package com.refinedmods.refinedstorage2.api.network.impl.component;
+package com.refinedmods.refinedstorage2.api.network.impl.storage;
import com.refinedmods.refinedstorage2.api.core.Action;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.network.impl.NetworkImpl;
import com.refinedmods.refinedstorage2.api.network.impl.node.storage.StorageNetworkNode;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.resource.ResourceAmount;
import com.refinedmods.refinedstorage2.api.resource.list.ResourceListImpl;
import com.refinedmods.refinedstorage2.api.storage.EmptyActor;
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/PlatformApi.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/PlatformApi.java
index 74ce585f4..a0414004d 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/PlatformApi.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/PlatformApi.java
@@ -2,8 +2,9 @@
import com.refinedmods.refinedstorage2.api.core.component.ComponentMapFactory;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.NetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.NetworkComponent;
import com.refinedmods.refinedstorage2.api.network.energy.EnergyStorage;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityPolicy;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
import com.refinedmods.refinedstorage2.platform.api.constructordestructor.ConstructorStrategyFactory;
import com.refinedmods.refinedstorage2.platform.api.constructordestructor.DestructorStrategyFactory;
@@ -20,6 +21,8 @@
import com.refinedmods.refinedstorage2.platform.api.grid.strategy.GridScrollingStrategyFactory;
import com.refinedmods.refinedstorage2.platform.api.importer.ImporterTransferStrategyFactory;
import com.refinedmods.refinedstorage2.platform.api.recipemod.IngredientConverter;
+import com.refinedmods.refinedstorage2.platform.api.security.BuiltinPermissions;
+import com.refinedmods.refinedstorage2.platform.api.security.PlatformPermission;
import com.refinedmods.refinedstorage2.platform.api.storage.StorageContainerItemHelper;
import com.refinedmods.refinedstorage2.platform.api.storage.StorageRepository;
import com.refinedmods.refinedstorage2.platform.api.storage.StorageType;
@@ -44,8 +47,10 @@
import java.util.Optional;
import java.util.Set;
+import net.minecraft.core.BlockPos;
import net.minecraft.network.FriendlyByteBuf;
-import net.minecraft.network.chat.MutableComponent;
+import net.minecraft.network.chat.Component;
+import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
@@ -53,6 +58,7 @@
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.world.level.block.state.BlockState;
import org.apiguardian.api.API;
@API(status = API.Status.STABLE, since = "2.0.0-milestone.1.0")
@@ -91,8 +97,6 @@ public interface PlatformApi {
StorageMonitorInsertionStrategy getStorageMonitorInsertionStrategy();
- MutableComponent createTranslation(String category, String value, Object... args);
-
ComponentMapFactory getNetworkComponentMapFactory();
PlatformRegistry getGridSynchronizerRegistry();
@@ -110,7 +114,7 @@ public interface PlatformApi {
void requestNetworkNodeUpdate(PlatformNetworkNodeContainer container, Level level);
GridInsertionStrategy createGridInsertionStrategy(AbstractContainerMenu containerMenu,
- Player player,
+ ServerPlayer player,
Grid grid);
void addGridInsertionStrategyFactory(GridInsertionStrategyFactory insertionStrategyFactory);
@@ -120,13 +124,13 @@ GridInsertionStrategy createGridInsertionStrategy(AbstractContainerMenu containe
GridInsertionHints getGridInsertionHints();
GridExtractionStrategy createGridExtractionStrategy(AbstractContainerMenu containerMenu,
- Player player,
+ ServerPlayer player,
Grid grid);
void addGridExtractionStrategyFactory(GridExtractionStrategyFactory extractionStrategyFactory);
GridScrollingStrategy createGridScrollingStrategy(AbstractContainerMenu containerMenu,
- Player player,
+ ServerPlayer player,
Grid grid);
void addGridScrollingStrategyFactory(GridScrollingStrategyFactory scrollingStrategyFactory);
@@ -180,4 +184,16 @@ EnergyStorage asBlockItemEnergyStorage(
SlotReference createInventorySlotReference(Player player, InteractionHand hand);
void useNetworkBoundItem(Player player, Item... items);
+
+ BuiltinPermissions getBuiltinPermissions();
+
+ PlatformRegistry getPermissionRegistry();
+
+ SecurityPolicy createDefaultSecurityPolicy();
+
+ void sendNoPermissionToOpenMessage(ServerPlayer player, Component target);
+
+ void sendNoPermissionMessage(ServerPlayer player, Component message);
+
+ boolean canPlaceNetworkNode(ServerPlayer player, Level level, BlockPos pos, BlockState state);
}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/PlatformApiProxy.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/PlatformApiProxy.java
index 840eebc04..d67c643f9 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/PlatformApiProxy.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/PlatformApiProxy.java
@@ -2,8 +2,9 @@
import com.refinedmods.refinedstorage2.api.core.component.ComponentMapFactory;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.NetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.NetworkComponent;
import com.refinedmods.refinedstorage2.api.network.energy.EnergyStorage;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityPolicy;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
import com.refinedmods.refinedstorage2.platform.api.constructordestructor.ConstructorStrategyFactory;
import com.refinedmods.refinedstorage2.platform.api.constructordestructor.DestructorStrategyFactory;
@@ -20,6 +21,8 @@
import com.refinedmods.refinedstorage2.platform.api.grid.strategy.GridScrollingStrategyFactory;
import com.refinedmods.refinedstorage2.platform.api.importer.ImporterTransferStrategyFactory;
import com.refinedmods.refinedstorage2.platform.api.recipemod.IngredientConverter;
+import com.refinedmods.refinedstorage2.platform.api.security.BuiltinPermissions;
+import com.refinedmods.refinedstorage2.platform.api.security.PlatformPermission;
import com.refinedmods.refinedstorage2.platform.api.storage.StorageContainerItemHelper;
import com.refinedmods.refinedstorage2.platform.api.storage.StorageRepository;
import com.refinedmods.refinedstorage2.platform.api.storage.StorageType;
@@ -45,8 +48,10 @@
import java.util.Set;
import javax.annotation.Nullable;
+import net.minecraft.core.BlockPos;
import net.minecraft.network.FriendlyByteBuf;
-import net.minecraft.network.chat.MutableComponent;
+import net.minecraft.network.chat.Component;
+import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
@@ -54,6 +59,7 @@
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.world.level.block.state.BlockState;
public class PlatformApiProxy implements PlatformApi {
@Nullable
@@ -146,11 +152,6 @@ public StorageMonitorInsertionStrategy getStorageMonitorInsertionStrategy() {
return ensureLoaded().getStorageMonitorInsertionStrategy();
}
- @Override
- public MutableComponent createTranslation(final String category, final String value, final Object... args) {
- return ensureLoaded().createTranslation(category, value, args);
- }
-
@Override
public ComponentMapFactory getNetworkComponentMapFactory() {
return ensureLoaded().getNetworkComponentMapFactory();
@@ -195,7 +196,7 @@ public void requestNetworkNodeUpdate(final PlatformNetworkNodeContainer containe
@Override
public GridInsertionStrategy createGridInsertionStrategy(final AbstractContainerMenu containerMenu,
- final Player player,
+ final ServerPlayer player,
final Grid grid) {
return ensureLoaded().createGridInsertionStrategy(containerMenu, player, grid);
}
@@ -217,7 +218,7 @@ public GridInsertionHints getGridInsertionHints() {
@Override
public GridExtractionStrategy createGridExtractionStrategy(final AbstractContainerMenu containerMenu,
- final Player player,
+ final ServerPlayer player,
final Grid grid) {
return ensureLoaded().createGridExtractionStrategy(containerMenu, player, grid);
}
@@ -229,7 +230,7 @@ public void addGridExtractionStrategyFactory(final GridExtractionStrategyFactory
@Override
public GridScrollingStrategy createGridScrollingStrategy(final AbstractContainerMenu containerMenu,
- final Player player,
+ final ServerPlayer player,
final Grid grid) {
return ensureLoaded().createGridScrollingStrategy(containerMenu, player, grid);
}
@@ -357,6 +358,39 @@ public void useNetworkBoundItem(final Player player, final Item... items) {
ensureLoaded().useNetworkBoundItem(player, items);
}
+ @Override
+ public BuiltinPermissions getBuiltinPermissions() {
+ return ensureLoaded().getBuiltinPermissions();
+ }
+
+ @Override
+ public PlatformRegistry getPermissionRegistry() {
+ return ensureLoaded().getPermissionRegistry();
+ }
+
+ @Override
+ public SecurityPolicy createDefaultSecurityPolicy() {
+ return ensureLoaded().createDefaultSecurityPolicy();
+ }
+
+ @Override
+ public void sendNoPermissionToOpenMessage(final ServerPlayer player, final Component target) {
+ ensureLoaded().sendNoPermissionToOpenMessage(player, target);
+ }
+
+ @Override
+ public void sendNoPermissionMessage(final ServerPlayer player, final Component message) {
+ ensureLoaded().sendNoPermissionMessage(player, message);
+ }
+
+ @Override
+ public boolean canPlaceNetworkNode(final ServerPlayer player,
+ final Level level,
+ final BlockPos pos,
+ final BlockState state) {
+ return ensureLoaded().canPlaceNetworkNode(player, level, pos, state);
+ }
+
private PlatformApi ensureLoaded() {
if (delegate == null) {
throw new IllegalStateException("Platform API not loaded yet");
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/Grid.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/Grid.java
index c07944903..79a2b36b3 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/Grid.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/Grid.java
@@ -9,6 +9,7 @@
import java.util.List;
+import net.minecraft.server.level.ServerPlayer;
import org.apiguardian.api.API;
@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.0")
@@ -23,5 +24,5 @@ public interface Grid {
List getResources(Class extends Actor> actorType);
- GridOperations createOperations(ResourceType resourceType, Actor actor);
+ GridOperations createOperations(ResourceType resourceType, ServerPlayer player);
}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/strategy/GridExtractionStrategyFactory.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/strategy/GridExtractionStrategyFactory.java
index 5ed2926fd..5b5a5340a 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/strategy/GridExtractionStrategyFactory.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/strategy/GridExtractionStrategyFactory.java
@@ -2,12 +2,12 @@
import com.refinedmods.refinedstorage2.platform.api.grid.Grid;
-import net.minecraft.world.entity.player.Player;
+import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.inventory.AbstractContainerMenu;
import org.apiguardian.api.API;
@API(status = API.Status.STABLE, since = "2.0.0-milestone.2.6")
@FunctionalInterface
public interface GridExtractionStrategyFactory {
- GridExtractionStrategy create(AbstractContainerMenu containerMenu, Player player, Grid grid);
+ GridExtractionStrategy create(AbstractContainerMenu containerMenu, ServerPlayer player, Grid grid);
}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/strategy/GridInsertionStrategyFactory.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/strategy/GridInsertionStrategyFactory.java
index 05594da03..fe11f125a 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/strategy/GridInsertionStrategyFactory.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/strategy/GridInsertionStrategyFactory.java
@@ -2,12 +2,12 @@
import com.refinedmods.refinedstorage2.platform.api.grid.Grid;
-import net.minecraft.world.entity.player.Player;
+import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.inventory.AbstractContainerMenu;
import org.apiguardian.api.API;
@API(status = API.Status.STABLE, since = "2.0.0-milestone.2.6")
@FunctionalInterface
public interface GridInsertionStrategyFactory {
- GridInsertionStrategy create(AbstractContainerMenu containerMenu, Player player, Grid grid);
+ GridInsertionStrategy create(AbstractContainerMenu containerMenu, ServerPlayer player, Grid grid);
}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/strategy/GridScrollingStrategyFactory.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/strategy/GridScrollingStrategyFactory.java
index e3638940c..f67268b0d 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/strategy/GridScrollingStrategyFactory.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/grid/strategy/GridScrollingStrategyFactory.java
@@ -2,12 +2,12 @@
import com.refinedmods.refinedstorage2.platform.api.grid.Grid;
-import net.minecraft.world.entity.player.Player;
+import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.inventory.AbstractContainerMenu;
import org.apiguardian.api.API;
@API(status = API.Status.STABLE, since = "2.0.0-milestone.2.6")
@FunctionalInterface
public interface GridScrollingStrategyFactory {
- GridScrollingStrategy create(AbstractContainerMenu containerMenu, Player player, Grid grid);
+ GridScrollingStrategy create(AbstractContainerMenu containerMenu, ServerPlayer player, Grid grid);
}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/BuiltinPermissions.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/BuiltinPermissions.java
new file mode 100644
index 000000000..5ff12f708
--- /dev/null
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/BuiltinPermissions.java
@@ -0,0 +1,14 @@
+package com.refinedmods.refinedstorage2.platform.api.security;
+
+import org.apiguardian.api.API;
+
+@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.5")
+public record BuiltinPermissions(
+ PlatformPermission insert,
+ PlatformPermission extract,
+ PlatformPermission autocrafting,
+ PlatformPermission modify,
+ PlatformPermission build,
+ PlatformPermission security
+) {
+}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/PlatformPermission.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/PlatformPermission.java
new file mode 100644
index 000000000..1f505b106
--- /dev/null
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/PlatformPermission.java
@@ -0,0 +1,32 @@
+package com.refinedmods.refinedstorage2.platform.api.security;
+
+import com.refinedmods.refinedstorage2.api.network.security.Permission;
+
+import net.minecraft.network.chat.Component;
+import org.apiguardian.api.API;
+
+@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.5")
+public interface PlatformPermission extends Permission {
+ /**
+ * @return the permission name
+ */
+ Component getName();
+
+ /**
+ * @return a short description of the permission
+ */
+ Component getDescription();
+
+ /**
+ * @return the name of the mod that adds this permission
+ */
+ Component getOwnerName();
+
+ /**
+ * Determines whether this permission is allowed by default, when it is not configured (yet)
+ * in a Security Card.
+ *
+ * @return true if this permission is allowed by default, false otherwise
+ */
+ boolean isAllowedByDefault();
+}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/PlatformSecurityNetworkComponent.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/PlatformSecurityNetworkComponent.java
new file mode 100644
index 000000000..3850fd466
--- /dev/null
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/PlatformSecurityNetworkComponent.java
@@ -0,0 +1,13 @@
+package com.refinedmods.refinedstorage2.platform.api.security;
+
+import com.refinedmods.refinedstorage2.api.network.NetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.security.Permission;
+
+import net.minecraft.server.level.ServerPlayer;
+import org.apiguardian.api.API;
+
+@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.5")
+@FunctionalInterface
+public interface PlatformSecurityNetworkComponent extends NetworkComponent {
+ boolean isAllowed(Permission permission, ServerPlayer player);
+}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/SecurityHelper.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/SecurityHelper.java
new file mode 100644
index 000000000..0c4ef5038
--- /dev/null
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/SecurityHelper.java
@@ -0,0 +1,24 @@
+package com.refinedmods.refinedstorage2.platform.api.security;
+
+import com.refinedmods.refinedstorage2.api.network.Network;
+import com.refinedmods.refinedstorage2.api.network.node.NetworkNode;
+import com.refinedmods.refinedstorage2.api.network.security.Permission;
+
+import net.minecraft.server.level.ServerPlayer;
+
+public final class SecurityHelper {
+ private SecurityHelper() {
+ }
+
+ public static boolean isAllowed(final ServerPlayer player, final Permission permission, final NetworkNode node) {
+ final Network network = node.getNetwork();
+ if (network == null) {
+ return false;
+ }
+ return isAllowed(player, permission, network);
+ }
+
+ public static boolean isAllowed(final ServerPlayer player, final Permission permission, final Network network) {
+ return network.getComponent(PlatformSecurityNetworkComponent.class).isAllowed(permission, player);
+ }
+}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/SecurityPolicyContainerItem.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/SecurityPolicyContainerItem.java
new file mode 100644
index 000000000..d7d417076
--- /dev/null
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/SecurityPolicyContainerItem.java
@@ -0,0 +1,33 @@
+package com.refinedmods.refinedstorage2.platform.api.security;
+
+import com.refinedmods.refinedstorage2.api.network.security.SecurityActor;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityPolicy;
+
+import java.util.Optional;
+
+import net.minecraft.world.item.ItemStack;
+import org.apiguardian.api.API;
+
+/**
+ * Represents an item that can contain a {@link SecurityPolicy}. Typically, a Security Card.
+ */
+@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.5")
+public interface SecurityPolicyContainerItem {
+ boolean isValid(ItemStack stack);
+
+ Optional getActor(ItemStack stack);
+
+ /**
+ * Returns a {@link SecurityPolicy} containing all the permissions that this {@link SecurityPolicyContainerItem}
+ * permits.
+ * It is important to have all the relevant permissions in the {@link SecurityPolicy},
+ * even the ones that are "allowed by default" via {@link PlatformPermission#isAllowedByDefault()}.
+ * If not, even a permission that is allowed by default will not be allowed.
+ *
+ * @param stack the stack
+ * @return the policy, if present
+ */
+ Optional getPolicy(ItemStack stack);
+
+ long getEnergyUsage();
+}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/package-info.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/package-info.java
new file mode 100644
index 000000000..256520c96
--- /dev/null
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/security/package-info.java
@@ -0,0 +1,7 @@
+@ParametersAreNonnullByDefault
+@FieldsAndMethodsAreNonnullByDefault
+package com.refinedmods.refinedstorage2.platform.api.security;
+
+import com.refinedmods.refinedstorage2.api.core.FieldsAndMethodsAreNonnullByDefault;
+
+import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/network/PlatformNetworkNodeContainer.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/network/PlatformNetworkNodeContainer.java
index ec7d815c7..e1151c134 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/network/PlatformNetworkNodeContainer.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/network/PlatformNetworkNodeContainer.java
@@ -1,9 +1,12 @@
package com.refinedmods.refinedstorage2.platform.api.support.network;
import com.refinedmods.refinedstorage2.api.network.node.container.NetworkNodeContainer;
+import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
+import com.refinedmods.refinedstorage2.platform.api.security.SecurityHelper;
import net.minecraft.core.Direction;
import net.minecraft.core.GlobalPos;
+import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;
import org.apiguardian.api.API;
@@ -39,4 +42,8 @@ public interface PlatformNetworkNodeContainer extends NetworkNodeContainer {
GlobalPos getContainerPosition();
boolean isContainerRemoved();
+
+ default boolean canBreakOrRotate(final ServerPlayer player) {
+ return SecurityHelper.isAllowed(player, PlatformApi.INSTANCE.getBuiltinPermissions().build(), getNode());
+ }
}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/registry/PlatformRegistry.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/registry/PlatformRegistry.java
index 1e179ce6e..29a490e35 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/registry/PlatformRegistry.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/registry/PlatformRegistry.java
@@ -21,11 +21,6 @@ public interface PlatformRegistry {
*/
void register(ResourceLocation id, T value);
- /**
- * @return whether if there is any other value, ignoring any default value
- */
- boolean isEmpty();
-
/**
* @param value the value
* @return the id of the value, if present
@@ -38,11 +33,6 @@ public interface PlatformRegistry {
*/
Optional get(ResourceLocation id);
- /**
- * @return the default value
- */
- T getDefault();
-
/**
* @return an unmodifiable list of all values
*/
@@ -50,16 +40,7 @@ public interface PlatformRegistry {
/**
* Returns the next value in the ordered list.
- * If the value is not found, it will return the default value.
- *
- * @param value the given value
- * @return the next value after the given value
- */
- T next(T value);
-
- /**
- * Returns the next value in the ordered list.
- * If the value is not found, it will the default value.
+ * If the value is not found, it will return the first value.
* If the value is the last value in the ordered list, it will return null.
*
* @param value the given value
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/black_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/black_security_manager.json
new file mode 100644
index 000000000..8b1b082d0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/black_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/black",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/black"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/black",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/black",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/blue_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/blue_security_manager.json
new file mode 100644
index 000000000..e3e6cf425
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/blue_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/blue",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/blue"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/blue",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/blue",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/brown_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/brown_security_manager.json
new file mode 100644
index 000000000..94c2baa51
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/brown_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/brown",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/brown"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/brown",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/brown",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/cyan_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/cyan_security_manager.json
new file mode 100644
index 000000000..39a4f2936
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/cyan_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/cyan",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/cyan"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/cyan",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/cyan",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/gray_security_manager.json
new file mode 100644
index 000000000..b81f036ca
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/gray_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/gray",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/gray"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/gray",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/gray",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/green_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/green_security_manager.json
new file mode 100644
index 000000000..a441897fd
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/green_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/green",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/green"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/green",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/green",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/light_gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/light_gray_security_manager.json
new file mode 100644
index 000000000..0d4e1f070
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/light_gray_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/light_gray",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/light_gray"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/light_gray",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/light_gray",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/lime_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/lime_security_manager.json
new file mode 100644
index 000000000..1e4b8ecf6
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/lime_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/lime",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/lime"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/lime",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/lime",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/magenta_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/magenta_security_manager.json
new file mode 100644
index 000000000..94aa92374
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/magenta_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/magenta",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/magenta"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/magenta",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/magenta",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/orange_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/orange_security_manager.json
new file mode 100644
index 000000000..9b0f12848
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/orange_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/orange",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/orange"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/orange",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/orange",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/pink_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/pink_security_manager.json
new file mode 100644
index 000000000..07715e635
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/pink_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/pink",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/pink"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/pink",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/pink",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/purple_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/purple_security_manager.json
new file mode 100644
index 000000000..1862553e8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/purple_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/purple",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/purple"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/purple",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/purple",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/red_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/red_security_manager.json
new file mode 100644
index 000000000..b9341743d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/red_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/red",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/red"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/red",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/red",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/security_manager.json
new file mode 100644
index 000000000..9bc1d02f9
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/light_blue",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/light_blue"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/light_blue",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/light_blue",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/white_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/white_security_manager.json
new file mode 100644
index 000000000..348271d18
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/white_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/white",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/white"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/white",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/white",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/yellow_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/yellow_security_manager.json
new file mode 100644
index 000000000..cce362476
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/blockstates/yellow_security_manager.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "active=false,direction=east": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 90
+ },
+ "active=false,direction=north": {
+ "model": "refinedstorage2:block/security_manager/inactive"
+ },
+ "active=false,direction=south": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 180
+ },
+ "active=false,direction=west": {
+ "model": "refinedstorage2:block/security_manager/inactive",
+ "y": 270
+ },
+ "active=true,direction=east": {
+ "model": "refinedstorage2:block/security_manager/yellow",
+ "y": 90
+ },
+ "active=true,direction=north": {
+ "model": "refinedstorage2:block/security_manager/yellow"
+ },
+ "active=true,direction=south": {
+ "model": "refinedstorage2:block/security_manager/yellow",
+ "y": 180
+ },
+ "active=true,direction=west": {
+ "model": "refinedstorage2:block/security_manager/yellow",
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/black.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/black.json
new file mode 100644
index 000000000..f0e16728a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/black.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/black",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/black",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/black",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/black",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/black",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/blue.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/blue.json
new file mode 100644
index 000000000..84c0ea549
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/blue.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/blue",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/blue",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/blue",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/blue",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/blue",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/brown.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/brown.json
new file mode 100644
index 000000000..77150c297
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/brown.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/brown",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/brown",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/brown",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/brown",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/brown",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/cyan.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/cyan.json
new file mode 100644
index 000000000..476b8ebc1
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/cyan.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/cyan",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/cyan",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/cyan",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/cyan",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/cyan",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/gray.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/gray.json
new file mode 100644
index 000000000..6d098c4e4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/gray.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/gray",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/gray",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/gray",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/gray",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/gray",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/green.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/green.json
new file mode 100644
index 000000000..408f308b8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/green.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/green",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/green",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/green",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/green",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/green",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/inactive.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/inactive.json
new file mode 100644
index 000000000..6ae233e27
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/inactive.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/inactive",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/inactive",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/inactive",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/inactive",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/inactive",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/light_blue.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/light_blue.json
new file mode 100644
index 000000000..f8a18ecf9
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/light_blue.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/light_blue",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/light_blue",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/light_blue",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/light_blue",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/light_blue",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/light_gray.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/light_gray.json
new file mode 100644
index 000000000..03840489f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/light_gray.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/light_gray",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/light_gray",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/light_gray",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/light_gray",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/light_gray",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/lime.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/lime.json
new file mode 100644
index 000000000..dedd0d204
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/lime.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/lime",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/lime",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/lime",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/lime",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/lime",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/magenta.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/magenta.json
new file mode 100644
index 000000000..ed56a5d31
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/magenta.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/magenta",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/magenta",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/magenta",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/magenta",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/magenta",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/orange.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/orange.json
new file mode 100644
index 000000000..42d6d1cb4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/orange.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/orange",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/orange",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/orange",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/orange",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/orange",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/pink.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/pink.json
new file mode 100644
index 000000000..5b26e7557
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/pink.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/pink",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/pink",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/pink",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/pink",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/pink",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/purple.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/purple.json
new file mode 100644
index 000000000..d079f109b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/purple.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/purple",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/purple",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/purple",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/purple",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/purple",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/red.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/red.json
new file mode 100644
index 000000000..3eb01cbbc
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/red.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/red",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/red",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/red",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/red",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/red",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/white.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/white.json
new file mode 100644
index 000000000..9db7a41bb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/white.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/white",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/white",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/white",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/white",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/white",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/yellow.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/yellow.json
new file mode 100644
index 000000000..d82bec405
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/block/security_manager/yellow.json
@@ -0,0 +1,18 @@
+{
+ "parent": "refinedstorage2:block/emissive_cutout",
+ "textures": {
+ "cutout_down": "refinedstorage2:block/bottom",
+ "cutout_east": "refinedstorage2:block/security_manager/cutouts/right/yellow",
+ "cutout_north": "refinedstorage2:block/security_manager/cutouts/front/yellow",
+ "cutout_south": "refinedstorage2:block/security_manager/cutouts/back/yellow",
+ "cutout_up": "refinedstorage2:block/security_manager/cutouts/top/yellow",
+ "cutout_west": "refinedstorage2:block/security_manager/cutouts/left/yellow",
+ "down": "refinedstorage2:block/bottom",
+ "east": "refinedstorage2:block/security_manager/right",
+ "north": "refinedstorage2:block/security_manager/front",
+ "particle": "refinedstorage2:block/security_manager/back",
+ "south": "refinedstorage2:block/security_manager/back",
+ "up": "refinedstorage2:block/security_manager/top",
+ "west": "refinedstorage2:block/security_manager/left"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/black_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/black_security_manager.json
new file mode 100644
index 000000000..ee13ead75
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/black_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/black"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/blue_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/blue_security_manager.json
new file mode 100644
index 000000000..5b2b172fd
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/blue_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/blue"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/brown_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/brown_security_manager.json
new file mode 100644
index 000000000..e4d259faf
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/brown_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/brown"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/cyan_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/cyan_security_manager.json
new file mode 100644
index 000000000..d4ac29b94
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/cyan_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/cyan"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/gray_security_manager.json
new file mode 100644
index 000000000..f82d44b8a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/gray_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/gray"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/green_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/green_security_manager.json
new file mode 100644
index 000000000..922448244
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/green_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/green"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/light_gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/light_gray_security_manager.json
new file mode 100644
index 000000000..3ca73b68d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/light_gray_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/light_gray"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/lime_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/lime_security_manager.json
new file mode 100644
index 000000000..d9a5821ab
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/lime_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/lime"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/magenta_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/magenta_security_manager.json
new file mode 100644
index 000000000..b3b6dbfc0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/magenta_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/magenta"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/orange_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/orange_security_manager.json
new file mode 100644
index 000000000..40e80c498
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/orange_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/orange"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/pink_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/pink_security_manager.json
new file mode 100644
index 000000000..94f2729d4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/pink_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/pink"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/purple_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/purple_security_manager.json
new file mode 100644
index 000000000..d36ab505b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/purple_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/purple"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/red_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/red_security_manager.json
new file mode 100644
index 000000000..256ec88fc
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/red_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/red"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/security_manager.json
new file mode 100644
index 000000000..6d3285847
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/light_blue"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/white_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/white_security_manager.json
new file mode 100644
index 000000000..6edd61a27
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/white_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/white"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/yellow_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/yellow_security_manager.json
new file mode 100644
index 000000000..e1e4c506f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/assets/refinedstorage2/models/item/yellow_security_manager.json
@@ -0,0 +1,3 @@
+{
+ "parent": "refinedstorage2:block/security_manager/yellow"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_cable.json
index c2ce00c55..d3db991f0 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/black_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_constructor.json
index 5448c581a..1dd5e8d4b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/black_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_controller.json
index 40cc99ade..9c61d03da 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/black_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_crafting_grid.json
index c249a8d00..f63aa8ac7 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/black_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_destructor.json
index 7aa16bd69..084f62c1f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/black_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_detector.json
index fcd3f2add..647cf0300 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/black_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_exporter.json
index 8cfac38f6..19461a32b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/black_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_external_storage.json
index 7a03921a0..b63faf1bc 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/black_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_grid.json
index 626db107e..dc32ec5e7 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/black_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_importer.json
index 1e5a0ac56..e1e5f246c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/black_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_network_receiver.json
index c7b33755b..a25c7205b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/black_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_network_transmitter.json
index d62881c05..b31d9bcc2 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/black_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_security_manager.json
new file mode 100644
index 000000000..1c8eadbfb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_wireless_transmitter.json
index 2f85c7a7c..75467defa 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/black_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_cable.json
index da93a6f48..d6ab78505 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/blue_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_constructor.json
index a6e0a1e87..7f14346e2 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/blue_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_controller.json
index aed107af8..eed4ee1ef 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/blue_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_crafting_grid.json
index a87c376f0..7d5bc773a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/blue_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_destructor.json
index 099e7ab5e..10284b92a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/blue_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_detector.json
index 47fd21589..c46103976 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/blue_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_exporter.json
index 5dbb32bca..3293b363d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/blue_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_external_storage.json
index 16629ca31..021e6300b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/blue_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_grid.json
index fcda6e7c9..c43c0b299 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/blue_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_importer.json
index 6abba04c2..6ed2abe77 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/blue_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_network_receiver.json
index 22f8c8709..79acce956 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/blue_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_network_transmitter.json
index 5fb93f8d0..d692e772c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/blue_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_security_manager.json
new file mode 100644
index 000000000..160bfa32b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_wireless_transmitter.json
index c26a239fa..0297bb91c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/blue_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_cable.json
index 4bcfb0045..36eb6d6ff 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/brown_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_constructor.json
index 6de0eeaba..1826b2c6d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/brown_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_controller.json
index 76c1980e9..153a130df 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/brown_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_crafting_grid.json
index a6af02fd1..85633ff2d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/brown_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_destructor.json
index 0d6e4eb47..23445c672 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/brown_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_detector.json
index 55c0146d0..a3badbb5e 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/brown_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_exporter.json
index d976e742c..a376591e8 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/brown_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_external_storage.json
index dafedb20b..f32dd9ca8 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/brown_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_grid.json
index 5efdf67ae..b0030066e 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/brown_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_importer.json
index acc0ad356..4314c14e9 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/brown_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_network_receiver.json
index 2dcce70a1..194e86e3a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/brown_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_network_transmitter.json
index f8472f93e..88736f539 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/brown_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_security_manager.json
new file mode 100644
index 000000000..1b680cccb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_wireless_transmitter.json
index 9147d3182..163ff2101 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/brown_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_cable.json
index 4b87be60f..0302bfb36 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/cyan_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_constructor.json
index b0f8d2840..d1ae5f9ea 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/cyan_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_controller.json
index b516088e3..db27f5170 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/cyan_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_crafting_grid.json
index f418314d8..26cfd294c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/cyan_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_destructor.json
index cd9a0d923..6067674d3 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/cyan_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_detector.json
index c01a89630..1e09263e9 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/cyan_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_exporter.json
index fceb13585..60ab95120 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/cyan_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_external_storage.json
index 917a4a793..92c1398d8 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/cyan_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_grid.json
index c3e274f6f..b091dacfa 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/cyan_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_importer.json
index 9b7ce2f8c..8878b3d27 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/cyan_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_network_receiver.json
index 5579db0c2..5816a373b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/cyan_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_network_transmitter.json
index 212262dfe..1d4f20b4c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/cyan_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_security_manager.json
new file mode 100644
index 000000000..dc3fa7712
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_wireless_transmitter.json
index 5b6e8dcee..fef581b84 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/cyan_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_cable.json
index d3eb34203..70d872141 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/gray_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_constructor.json
index 2b48ccf56..1ec85077d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/gray_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_controller.json
index 09fed3c44..4239623f9 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/gray_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_crafting_grid.json
index 42d9c32c7..58e0adb2c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/gray_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_destructor.json
index a1395f1fb..74d9347fb 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/gray_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_detector.json
index 4250150d0..7040db113 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/gray_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_exporter.json
index 97b52adcb..de6223b7d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/gray_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_external_storage.json
index c6e82bd27..1050b7fe6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/gray_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_grid.json
index 56ad56deb..1c5ccba36 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/gray_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_importer.json
index 8650088ef..2c8c3581f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/gray_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_network_receiver.json
index f91f93326..0de56015d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/gray_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_network_transmitter.json
index 003794319..5de9bb735 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/gray_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_security_manager.json
new file mode 100644
index 000000000..8dfa953ea
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_wireless_transmitter.json
index 81b0f4c6f..2a6d0da6b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/gray_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_cable.json
index e956c509c..24be1c12e 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/green_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_constructor.json
index e5eec7a04..d3f92385d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/green_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_controller.json
index 2a728a3e5..9439a48be 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/green_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_crafting_grid.json
index 0ab2309dc..691ede3dd 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/green_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_destructor.json
index 3e1f21c65..82e6917cf 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/green_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_detector.json
index e4d1d6ec0..c19a599cb 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/green_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_exporter.json
index d0d052e40..3625522a6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/green_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_external_storage.json
index e8b90603e..d1f361f81 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/green_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_grid.json
index 11d739cd4..b8f0def56 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/green_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_importer.json
index e1c605460..6c45f05f1 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/green_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_network_receiver.json
index 4213a221a..0aac86085 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/green_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_network_transmitter.json
index 5944c16a4..e1c1680dc 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/green_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_security_manager.json
new file mode 100644
index 000000000..da323c613
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_wireless_transmitter.json
index b4e0ca28e..49164ba8b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/green_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_cable.json
index 8f5bcbcf2..ed91eb4d0 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_blue_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_constructor.json
index 540f5e7c3..3396ea2b1 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_blue_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_controller.json
index 57138ee09..afc6b1b15 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_blue_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_crafting_grid.json
index a7fe68329..4d8a692d6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_blue_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_destructor.json
index ee5d6913a..071729d51 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_blue_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_detector.json
index bda7c908f..3a7b78639 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_blue_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_exporter.json
index e458a4fb7..4a255bab4 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_blue_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_external_storage.json
index abc3c0138..49a924928 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_blue_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_grid.json
index a545faeb4..610baf8c0 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_blue_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_importer.json
index 860b58deb..13a4bc3da 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_blue_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_network_receiver.json
index d1053d126..00638c4ac 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_blue_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_network_transmitter.json
index f194d254d..0ba8c5ccb 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_blue_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_security_manager.json
new file mode 100644
index 000000000..509373708
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_wireless_transmitter.json
index c7b4ed99b..0750362c6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_blue_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_cable.json
index 666af33e4..f2a2ddc6a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_gray_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_constructor.json
index 782ab7ae5..b40e6a001 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_gray_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_controller.json
index 6060e0ed1..2a0344eb4 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_gray_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_crafting_grid.json
index db2fc8eba..1fc9ad612 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_gray_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_destructor.json
index 5d33992c5..f2a798a2d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_gray_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_detector.json
index be4f81bb3..4d554feca 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_gray_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_exporter.json
index e4f023aa1..baa2b23aa 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_gray_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_external_storage.json
index 974296c55..7b9b00cb3 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_gray_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_grid.json
index 2dfa51383..8a5d3f4d4 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_gray_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_importer.json
index 91cf433aa..1229fb09e 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_gray_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_network_receiver.json
index 3ddba8f5d..edc0cafe1 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_gray_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_network_transmitter.json
index 691df5431..81ee89e5f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_gray_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_security_manager.json
new file mode 100644
index 000000000..be6a18ddb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_wireless_transmitter.json
index 5909bc045..bf5c05053 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/light_gray_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_cable.json
index c7e42d10f..f036152b7 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/lime_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_constructor.json
index ea634b284..af59234ad 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/lime_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_controller.json
index 91d54260d..98a0b48c6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/lime_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_crafting_grid.json
index 0a081c894..e8d644c80 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/lime_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_destructor.json
index 0ef8da2b0..7000778a6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/lime_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_detector.json
index 588d61bf7..059a9cec8 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/lime_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_exporter.json
index 491635053..3a080ef54 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/lime_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_external_storage.json
index d6f916e86..5251287c0 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/lime_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_grid.json
index 1af9a55ef..3b644ae8e 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/lime_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_importer.json
index 24b9b3c10..c18d8d042 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/lime_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_network_receiver.json
index 4304825b5..13226fa91 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/lime_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_network_transmitter.json
index 27e675c29..8186b4d10 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/lime_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_security_manager.json
new file mode 100644
index 000000000..727c71661
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_wireless_transmitter.json
index 73ca47661..6268dc123 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/lime_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_cable.json
index b94c91b41..fabef1c76 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/magenta_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_constructor.json
index b88bbea84..1303f9eba 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/magenta_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_controller.json
index 1b91de63e..45b19c436 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/magenta_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_crafting_grid.json
index 4a3cafa31..e553a097e 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/magenta_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_destructor.json
index 0b7c84f10..1285cc6ce 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/magenta_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_detector.json
index b5c9feb2c..62d44798d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/magenta_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_exporter.json
index ee06fd332..400335a10 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/magenta_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_external_storage.json
index 87f47602b..19ffa164c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/magenta_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_grid.json
index 66d028bea..a9e38b2d0 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/magenta_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_importer.json
index 730c32126..bf6e0a693 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/magenta_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_network_receiver.json
index 6eac125ee..186fdc0e1 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/magenta_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_network_transmitter.json
index 6cdba8303..99be2e932 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/magenta_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_security_manager.json
new file mode 100644
index 000000000..4a1a0ae89
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_wireless_transmitter.json
index c75ed2bcc..fea49c827 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/magenta_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_cable.json
index 72945e042..0285255cb 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/orange_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_constructor.json
index 61f00552c..32c8ad26c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/orange_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_controller.json
index 1263fd5d9..49c981231 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/orange_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_crafting_grid.json
index fe6ca6b0f..e3539cf72 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/orange_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_destructor.json
index 6cd444479..f5f2a7aa2 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/orange_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_detector.json
index 748706779..0e74d3dc6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/orange_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_exporter.json
index 1a90e567a..b75722db9 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/orange_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_external_storage.json
index c7d77e64b..231a43c1a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/orange_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_grid.json
index c0e03af1f..851c33b29 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/orange_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_importer.json
index ae1217e7f..7a61d79f6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/orange_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_network_receiver.json
index a68106768..b431a22cb 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/orange_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_network_transmitter.json
index bcf7a5a24..b5c9fee67 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/orange_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_security_manager.json
new file mode 100644
index 000000000..f53c67264
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_wireless_transmitter.json
index 490111439..cf0d51e26 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/orange_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_cable.json
index d30654bfd..075f77bf9 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/pink_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_constructor.json
index 38a138e1a..77a35f5e0 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/pink_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_controller.json
index 2f9317058..ddcf2b74b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/pink_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_crafting_grid.json
index 0ffcfbb5f..55eafcb5a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/pink_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_destructor.json
index 9ff581aab..c0d6b97e1 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/pink_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_detector.json
index 77f463847..bb09f83da 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/pink_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_exporter.json
index 789ab4f22..9b15831dc 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/pink_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_external_storage.json
index 99aae73ee..b8992ae5d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/pink_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_grid.json
index 267a3e7a1..ba5e6b45c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/pink_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_importer.json
index 88bd9162f..7d6ae0423 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/pink_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_network_receiver.json
index 3d4551d03..7f409edd2 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/pink_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_network_transmitter.json
index cbb5dbab7..2a182295a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/pink_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_security_manager.json
new file mode 100644
index 000000000..dc4adf64e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_wireless_transmitter.json
index 9b36d5e85..74e50c3f3 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/pink_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_cable.json
index 02a4a193a..c3f5c4b7c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/purple_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_constructor.json
index b67f655dc..6491e37b5 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/purple_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_controller.json
index a6117bf26..3b99479f9 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/purple_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_crafting_grid.json
index 41d2a0d9f..6131d8467 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/purple_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_destructor.json
index de5af634c..1adb6c96a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/purple_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_detector.json
index 64af6ac2e..9bef13044 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/purple_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_exporter.json
index 8f7c72887..97ed5f52b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/purple_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_external_storage.json
index 9289c8dfa..5129f4a43 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/purple_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_grid.json
index 4e5ea53f3..0daf73dc0 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/purple_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_importer.json
index 60b172977..32b71ef30 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/purple_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_network_receiver.json
index cf37cb575..53cb7df95 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/purple_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_network_transmitter.json
index aba85fa45..9babbd664 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/purple_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_security_manager.json
new file mode 100644
index 000000000..8fb8d9831
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_wireless_transmitter.json
index 7fbd3a1fa..e82d0ed5d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/purple_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_cable.json
index 5f287b2cc..ebdc8bc40 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/red_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_constructor.json
index ee73bce20..06d07941c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/red_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_controller.json
index 5f680cce5..dac1b12d5 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/red_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_crafting_grid.json
index 0adc4a01e..2de8f3d60 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/red_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_destructor.json
index 711816674..47d2b537c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/red_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_detector.json
index 98253ce6f..88044470f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/red_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_exporter.json
index 7ae723b27..b1bda95f9 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/red_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_external_storage.json
index 02809c018..ca6b06064 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/red_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_grid.json
index 86e8e50cb..20c87df16 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/red_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_importer.json
index e32ce9456..34b68501b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/red_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_network_receiver.json
index 7a0d917dd..e19c1aca1 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/red_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_network_transmitter.json
index 178e31944..04ca13c8a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/red_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_security_manager.json
new file mode 100644
index 000000000..91eb31661
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_wireless_transmitter.json
index fcd5ba77d..01070f18d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/red_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_cable.json
index 0ba766635..a7b1b118a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/white_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_constructor.json
index bc6e21f0d..ed20df42f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/white_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_controller.json
index 118fd3bf5..4801f1d09 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/white_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_crafting_grid.json
index 9ecb9b6dd..86d8d6d4f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/white_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_destructor.json
index 51ad4bbcf..1b16d153f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/white_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_detector.json
index 33a26237b..cbcba7a1d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/white_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_exporter.json
index 27ed7a5b8..44ced3052 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/white_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_external_storage.json
index d7243cd7b..ef91d74df 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/white_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_grid.json
index c034d5c54..946abadf9 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/white_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_importer.json
index 33ab1737e..4c4b35fac 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/white_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_network_receiver.json
index c0d7cf997..d1630ef19 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/white_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_network_transmitter.json
index e173f3582..36b49b2ae 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/white_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_security_manager.json
new file mode 100644
index 000000000..cb8ea3ca4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_wireless_transmitter.json
index dac38efab..0ae9fd1ec 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/white_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_cable.json
index dc8637946..f725523f7 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_cable.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_cables",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_cables"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/yellow_cable"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_constructor.json
index 49fad2a85..93ddb72fa 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_constructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_constructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_constructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/yellow_constructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_controller.json
index fea864e44..dc7fc6e3f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_controller.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_controllers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_controllers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/yellow_controller"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_crafting_grid.json
index 7ad62c552..793f0105a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_crafting_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_crafting_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_crafting_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/yellow_crafting_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_destructor.json
index e700d3ff1..0a1688f8e 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_destructor.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_destructors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_destructors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/yellow_destructor"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_detector.json
index 4bce6d300..ea594146f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_detector.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_detectors",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_detectors"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/yellow_detector"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_exporter.json
index aef2ee98d..50b5808ed 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_exporter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_exporter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_exporters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_exporters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/yellow_exporter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_external_storage.json
index 57927b01a..fa82da1df 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_external_storage.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_external_storage.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_external_storages",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_external_storages"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/yellow_external_storage"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_grid.json
index 6fae68308..e1ffee07d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_grid.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_grids",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_grids"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/yellow_grid"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_importer.json
index b24d50eeb..38e632731 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_importer.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_importer.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_importers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_importers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/yellow_importer"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_network_receiver.json
index 28300c863..9ef41ddc1 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_network_receiver.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_receivers",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_receivers"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/yellow_network_receiver"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_network_transmitter.json
index 68a1b2078..503197c8b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_network_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_network_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_network_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/yellow_network_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_security_manager.json
new file mode 100644
index 000000000..3a3b93a86
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_security_manager"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_security_managers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_security_manager"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_wireless_transmitter.json
index 7441aac81..ced350d20 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_wireless_transmitter.json
@@ -20,14 +20,13 @@
},
"requirements": [
[
- "has_wireless_transmitters",
- "has_the_recipe"
+ "has_the_recipe",
+ "has_wireless_transmitters"
]
],
"rewards": {
"recipes": [
"refinedstorage2:coloring/yellow_wireless_transmitter"
]
- },
- "sends_telemetry_event": false
+ }
}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_cable.json
index e2cfdf303..eff94e73f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_constructor.json
index 52234d1e6..753922d66 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_controller.json
index c3b8bf3b0..01bc58310 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_crafting_grid.json
index 15dce14b8..4a80bf7d7 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_creative_controller.json
index 796ee92a0..d43a40079 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_destructor.json
index 2e74ccb8f..3ac5fd96a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_detector.json
index ec453b08b..55dca85cf 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_grid.json
index 7b3915599..b74138620 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_network_receiver.json
index 0ffff7793..2a5a00d4e 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_network_transmitter.json
index f925deda4..2ce2581b7 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_security_manager.json
new file mode 100644
index 000000000..4fd9781dd
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:black_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/black_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_wireless_transmitter.json
index aac4414b8..71b4c8adb 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_cable.json
index 8e60be672..563325194 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_constructor.json
index 7337fb0ac..388e5bdc0 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_controller.json
index 0bbd4161a..390df51b6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_crafting_grid.json
index 52b199ebb..1750a90b1 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_creative_controller.json
index f95ab87ed..64cf2a64e 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_destructor.json
index 79f923813..e1005c998 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_detector.json
index ad0a77e16..acef0289b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_grid.json
index ec94cd31f..be447f5c9 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_network_receiver.json
index dd9a16080..7f7f55aaf 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_network_transmitter.json
index 44656ecfa..4b6d5871a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_security_manager.json
new file mode 100644
index 000000000..c6b69b0e3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:blue_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/blue_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_wireless_transmitter.json
index 700a5b4d5..376e0aa4b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_cable.json
index c0de48a91..0100a7b2c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_constructor.json
index cb5beced7..9c07417e5 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_controller.json
index 6f7131de0..b01b69478 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_crafting_grid.json
index 544eef0d5..ce03dd013 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_creative_controller.json
index 7390d4919..06c1cd897 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_destructor.json
index d3f32fd39..28591c9e7 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_detector.json
index 4dcf4fb8f..ceb90498a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_grid.json
index 18ad70cc3..a5573be2e 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_network_receiver.json
index 126e8020a..4968b9168 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_network_transmitter.json
index 4e548e328..3196e10e6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_security_manager.json
new file mode 100644
index 000000000..316fbf1f7
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:brown_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/brown_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_wireless_transmitter.json
index 999709155..e8deea0e8 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cable.json
index bc75140b7..b1be9e0da 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/constructor.json
index c828c3788..7c2b6d059 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/controller.json
index af54b8c3a..c90360d3b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/crafting_grid.json
index 64f93b407..c96954927 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/creative_controller.json
index dd6f3550e..e4657e54b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_cable.json
index 478b80a7d..339b1c487 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_constructor.json
index cb8fdf17f..8d0b3bd0a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_controller.json
index d892078dc..d67a53588 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_crafting_grid.json
index e16bfd020..ed3650356 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_creative_controller.json
index 538f397d0..c67540990 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_destructor.json
index 372aae582..a78b7a597 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_detector.json
index 321be8bf1..aae8bcf1e 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_grid.json
index 4a05ed59f..f4ef95783 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_network_receiver.json
index 09b99f3ff..336cfb96a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_network_transmitter.json
index f92f09225..b0ad4ad1f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_security_manager.json
new file mode 100644
index 000000000..6e3cd9ddf
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:cyan_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/cyan_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_wireless_transmitter.json
index bc519e8f2..ffa5b37d4 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/destructor.json
index 66aea6788..daed8dffa 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/detector.json
index 505644a67..e49d218e0 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_controller.json
index 56b7bec33..023383749 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_crafting_grid.json
index af754251c..ef824f9e8 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_creative_controller.json
index c905f2260..0efaad58a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_detector.json
index 066c3ee66..e42e98f0d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_grid.json
index 7667ffc26..093482b2c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_network_receiver.json
index 0b6fa43d1..391a6546c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_network_transmitter.json
index b4ad2b8f3..496d28ea7 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_security_manager.json
new file mode 100644
index 000000000..d90110b34
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:gray_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/gray_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_wireless_transmitter.json
index 57a970c1b..663c4db65 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_cable.json
index cddce171f..1b14dae94 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_constructor.json
index 73b3c1a9f..1d25fc4b6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_controller.json
index c09b4bceb..083a51bc7 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_crafting_grid.json
index 7386f9e02..a806a35b6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_creative_controller.json
index 57082d5a1..a76bf9664 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_destructor.json
index b8761d8ec..cd2d9f2f3 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_detector.json
index ae5a4b356..bc173e80a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_grid.json
index c64bc912b..23f41e9cc 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_network_receiver.json
index db633f063..439eb4a2d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_network_transmitter.json
index 954149bde..8a9a96cdc 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_security_manager.json
new file mode 100644
index 000000000..b63db65e0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:green_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/green_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_wireless_transmitter.json
index fcdf20e4f..4c1dfaff6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/grid.json
index ed2c54f9c..20c0277bb 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_cable.json
index e938f9347..7491212a7 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_constructor.json
index 65c0f40a0..32bbf6e2f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_destructor.json
index a0d3a4f89..49af40ee0 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_cable.json
index 12085e27a..91b44a8db 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_constructor.json
index 239a790f8..156bcec4c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_controller.json
index 516f38265..28742125c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_crafting_grid.json
index 5807a3694..4aad99ac8 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_creative_controller.json
index 3758999fb..e8b44c91a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_destructor.json
index a7db33903..72bbe173d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_detector.json
index 4fe040506..99971e977 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_grid.json
index 08b41c906..cba39f571 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_network_receiver.json
index 3e81cc321..fffe0d175 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_network_transmitter.json
index 48e4801ea..7c7b2060e 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_security_manager.json
new file mode 100644
index 000000000..ebf2714e3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:light_gray_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/light_gray_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_wireless_transmitter.json
index 63a18bdc3..05dcfb99a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_cable.json
index b801d3d03..e5ba63283 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_constructor.json
index 6a2ba44be..5cbc5a8bb 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_controller.json
index 5a14808ad..def85bb51 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_crafting_grid.json
index 5d9304d3f..3119b1de4 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_creative_controller.json
index 54c894202..abda659ee 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_destructor.json
index ad178ca74..35204ed7f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_detector.json
index 808d8d8b0..4ced33fd0 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_grid.json
index 78b70f199..f617cf60a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_network_receiver.json
index 7e2244265..a77be133b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_network_transmitter.json
index eed497cfa..3003ee5ca 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_security_manager.json
new file mode 100644
index 000000000..99a7b4554
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:lime_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/lime_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_wireless_transmitter.json
index 49c297dc6..e661ef3b1 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_cable.json
index c17cc4dae..a9925716d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_constructor.json
index cf1d4b808..e03d2e406 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_controller.json
index 1e6f015e8..d2d6e9785 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_crafting_grid.json
index 5919d0f2a..8ec7cedb1 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_creative_controller.json
index 29fd85f5b..fb9cfcd94 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_destructor.json
index 6a1aacd9a..8e461396e 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_detector.json
index f1be4a1ab..0dc9901a6 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_grid.json
index 7a60d4239..2e8e1464d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_network_receiver.json
index eda8e2384..176a955c1 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_network_transmitter.json
index 15777c802..782b74e49 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_security_manager.json
new file mode 100644
index 000000000..3c90dc9c2
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:magenta_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/magenta_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_wireless_transmitter.json
index 5694135d2..a63f5a601 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/network_receiver.json
index 34a5d8900..47358ed7a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/network_transmitter.json
index 80d86c15b..df0825083 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_cable.json
index f8a86ba33..5910707d0 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_constructor.json
index 054d147b3..22d46c36f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_controller.json
index af69c7994..48cc35100 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_crafting_grid.json
index 185bb57e6..c9321c88d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_creative_controller.json
index c3f2ef813..d027af4b9 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_destructor.json
index b11ad2b40..19a0e2596 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_detector.json
index 53503f347..db1e1ed96 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_grid.json
index 44634b606..b011aaecd 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_network_receiver.json
index f61f350bd..98722f49f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_network_transmitter.json
index 5bab22f68..4c3beee56 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_security_manager.json
new file mode 100644
index 000000000..326088094
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:orange_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/orange_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_wireless_transmitter.json
index 86becf6e7..e3ef20fc5 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_cable.json
index ef42b7fbd..31d0a4961 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_constructor.json
index 133ee2c9d..690f0268f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_controller.json
index 4b750c25b..af41cdaa9 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_crafting_grid.json
index 6a5a11f7a..703b20845 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_creative_controller.json
index e8957e2d3..7ab6dbfc7 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_destructor.json
index d0123f4cf..40e00870c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_detector.json
index ddaffe7b7..895fca408 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_grid.json
index 7aca478b3..f39fc6644 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_network_receiver.json
index 962eea8de..30297ee72 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_network_transmitter.json
index 70c0580c8..46de8d798 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_security_manager.json
new file mode 100644
index 000000000..e2ff9bf92
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:pink_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/pink_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_wireless_transmitter.json
index 162626eaa..da03da537 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_cable.json
index 8eb0d07c2..f96f27896 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_constructor.json
index 3e3d8d945..322f8ee65 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_controller.json
index cca450e42..8686b8aae 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_crafting_grid.json
index a229fb325..e2d0b1a01 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_creative_controller.json
index d3859283a..dc8360927 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_destructor.json
index 8c39f9ffb..5112e726d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_detector.json
index 9b1540893..bbaa5a9cc 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_grid.json
index 3531b1eeb..7107b2627 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_network_receiver.json
index 59612d49b..ac5c1f0e2 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_network_transmitter.json
index 71e632a40..7fb4dd113 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_security_manager.json
new file mode 100644
index 000000000..6975ab4da
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:purple_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/purple_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_wireless_transmitter.json
index a39f427aa..f3674203f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_cable.json
index c47ac0e54..4c23ac676 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_constructor.json
index 0a103c014..90122e7c5 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_controller.json
index bdd81d2d7..0b9348890 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_crafting_grid.json
index 23c3ede51..7246dc446 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_creative_controller.json
index 1c47f0137..fc039287a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_destructor.json
index 61642d00e..e4a8e5050 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_detector.json
index 73081eb78..d394bd026 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_grid.json
index 0457f182a..c894a3ca4 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_network_receiver.json
index 9019cb58b..fc732590f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_network_transmitter.json
index d891359c3..2d253ea54 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_security_manager.json
new file mode 100644
index 000000000..989b85699
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:red_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/red_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_wireless_transmitter.json
index aaaee6423..a2ebfb507 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/security_manager.json
new file mode 100644
index 000000000..b98b0b671
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_cable.json
index a7668c676..a748edeac 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_constructor.json
index bf11acf4f..5b6a1c86d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_controller.json
index 682dd8150..04ae38487 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_crafting_grid.json
index 7e0b47cec..6ae9c631a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_creative_controller.json
index 0950b095b..927a4cd6c 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_destructor.json
index 5f53b01d4..ad803f531 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_detector.json
index 04695cf34..d149876b4 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_grid.json
index e9e0b79fb..edfd2aba3 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_network_receiver.json
index cccc597dc..beab19808 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_network_transmitter.json
index 4c1bdc48a..b3407b6b8 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_security_manager.json
new file mode 100644
index 000000000..1bb6ac5e7
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:white_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/white_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_wireless_transmitter.json
index 0ef3b6fb2..d3cc6214a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/wireless_transmitter.json
index 193747431..f86b96a1a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_cable.json
index 6dd9e5b74..ccebb6c10 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_cable.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_cable.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_constructor.json
index 0003bab4f..72570910d 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_constructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_constructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_controller.json
index 3497684bf..351b5d8e1 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"functions": [
{
"function": "refinedstorage2:energy"
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_crafting_grid.json
index 2336129d9..450c5b703 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_crafting_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_crafting_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_creative_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_creative_controller.json
index cbd6769a0..2ee3240be 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_creative_controller.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_creative_controller.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_destructor.json
index a6fd2e5a3..cc5abe315 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_destructor.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_destructor.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_detector.json
index c93c8db28..a0cea357f 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_detector.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_detector.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_grid.json
index 5e966b46e..4a2960442 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_grid.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_grid.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_network_receiver.json
index 9aa605850..5dd21ad2a 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_network_receiver.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_network_receiver.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_network_transmitter.json
index 14549c329..b92dc2c60 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_network_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_network_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_security_manager.json
new file mode 100644
index 000000000..47f43dbc6
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_security_manager.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "refinedstorage2:yellow_security_manager"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ],
+ "random_sequence": "refinedstorage2:blocks/yellow_security_manager"
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_wireless_transmitter.json
index a977b9fbb..74fe8195b 100644
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_wireless_transmitter.json
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_wireless_transmitter.json
@@ -1,4 +1,5 @@
{
+ "type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_security_manager.json
new file mode 100644
index 000000000..82f2b3780
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:black_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_security_manager.json
new file mode 100644
index 000000000..c5416e72f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:blue_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_security_manager.json
new file mode 100644
index 000000000..287036f5a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:brown_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_security_manager.json
new file mode 100644
index 000000000..8f3dd7cc5
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:cyan_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_security_manager.json
new file mode 100644
index 000000000..f5926ad95
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:gray_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_security_manager.json
new file mode 100644
index 000000000..5e9f5db34
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:green_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_security_manager.json
new file mode 100644
index 000000000..d9026e427
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_security_manager.json
new file mode 100644
index 000000000..8d044e90f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:light_gray_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_security_manager.json
new file mode 100644
index 000000000..b66210948
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:lime_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_security_manager.json
new file mode 100644
index 000000000..29a1ef8de
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:magenta_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_security_manager.json
new file mode 100644
index 000000000..1d1d32708
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:orange_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_security_manager.json
new file mode 100644
index 000000000..0730360e5
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:pink_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_security_manager.json
new file mode 100644
index 000000000..014bf959a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:purple_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_security_manager.json
new file mode 100644
index 000000000..5183299ab
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:red_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_security_manager.json
new file mode 100644
index 000000000..c84fd7abc
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:white_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_security_manager.json
new file mode 100644
index 000000000..c6a01a55f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_security_manager.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "item": "refinedstorage2:yellow_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/security_managers.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/security_managers.json
new file mode 100644
index 000000000..1ad2bddc6
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/security_managers.json
@@ -0,0 +1,20 @@
+{
+ "values": [
+ "refinedstorage2:white_security_manager",
+ "refinedstorage2:orange_security_manager",
+ "refinedstorage2:magenta_security_manager",
+ "refinedstorage2:security_manager",
+ "refinedstorage2:yellow_security_manager",
+ "refinedstorage2:lime_security_manager",
+ "refinedstorage2:pink_security_manager",
+ "refinedstorage2:gray_security_manager",
+ "refinedstorage2:light_gray_security_manager",
+ "refinedstorage2:cyan_security_manager",
+ "refinedstorage2:purple_security_manager",
+ "refinedstorage2:blue_security_manager",
+ "refinedstorage2:brown_security_manager",
+ "refinedstorage2:green_security_manager",
+ "refinedstorage2:red_security_manager",
+ "refinedstorage2:black_security_manager"
+ ]
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/AbstractClientModInitializer.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/AbstractClientModInitializer.java
index 87096e77e..8530d48e2 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/AbstractClientModInitializer.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/AbstractClientModInitializer.java
@@ -10,6 +10,7 @@
import com.refinedmods.refinedstorage2.platform.common.detector.DetectorScreen;
import com.refinedmods.refinedstorage2.platform.common.exporter.ExporterScreen;
import com.refinedmods.refinedstorage2.platform.common.grid.GridContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.grid.NoopGridSynchronizer;
import com.refinedmods.refinedstorage2.platform.common.grid.WirelessGridContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.grid.screen.CraftingGridScreen;
import com.refinedmods.refinedstorage2.platform.common.grid.screen.GridScreen;
@@ -17,6 +18,9 @@
import com.refinedmods.refinedstorage2.platform.common.iface.InterfaceScreen;
import com.refinedmods.refinedstorage2.platform.common.importer.ImporterScreen;
import com.refinedmods.refinedstorage2.platform.common.networking.NetworkTransmitterScreen;
+import com.refinedmods.refinedstorage2.platform.common.security.FallbackSecurityCardScreen;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityCardScreen;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityManagerScreen;
import com.refinedmods.refinedstorage2.platform.common.storage.FluidStorageType;
import com.refinedmods.refinedstorage2.platform.common.storage.ItemStorageType;
import com.refinedmods.refinedstorage2.platform.common.storage.diskdrive.DiskDriveScreen;
@@ -46,6 +50,13 @@
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createIdentifier;
public abstract class AbstractClientModInitializer {
+ protected static void registerBaseGridSynchronizer() {
+ PlatformApi.INSTANCE.getGridSynchronizerRegistry().register(
+ createIdentifier("off"),
+ NoopGridSynchronizer.INSTANCE
+ );
+ }
+
protected static void registerScreens(final ScreenRegistration registration) {
registration.register(Menus.INSTANCE.getDiskDrive(), DiskDriveScreen::new);
registration.register(Menus.INSTANCE.getGrid(), GridScreen::new);
@@ -67,6 +78,9 @@ protected static void registerScreens(final ScreenRegistration registration) {
registration.register(Menus.INSTANCE.getNetworkTransmitter(), NetworkTransmitterScreen::new);
registration.register(Menus.INSTANCE.getPortableGridBlock(), PortableGridScreen::new);
registration.register(Menus.INSTANCE.getPortableGridItem(), PortableGridScreen::new);
+ registration.register(Menus.INSTANCE.getSecurityCard(), SecurityCardScreen::new);
+ registration.register(Menus.INSTANCE.getFallbackSecurityCard(), FallbackSecurityCardScreen::new);
+ registration.register(Menus.INSTANCE.getSecurityManager(), SecurityManagerScreen::new);
}
protected static void registerAlternativeGridHints() {
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/AbstractModInitializer.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/AbstractModInitializer.java
index e692aaa46..a346ee107 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/AbstractModInitializer.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/AbstractModInitializer.java
@@ -1,13 +1,14 @@
package com.refinedmods.refinedstorage2.platform.common;
-import com.refinedmods.refinedstorage2.api.network.component.EnergyNetworkComponent;
-import com.refinedmods.refinedstorage2.api.network.component.GraphNetworkComponent;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
-import com.refinedmods.refinedstorage2.api.network.impl.component.EnergyNetworkComponentImpl;
-import com.refinedmods.refinedstorage2.api.network.impl.component.GraphNetworkComponentImpl;
+import com.refinedmods.refinedstorage2.api.network.energy.EnergyNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.impl.energy.EnergyNetworkComponentImpl;
+import com.refinedmods.refinedstorage2.api.network.impl.node.GraphNetworkComponentImpl;
import com.refinedmods.refinedstorage2.api.network.impl.node.SimpleNetworkNode;
+import com.refinedmods.refinedstorage2.api.network.node.GraphNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import com.refinedmods.refinedstorage2.platform.api.PlatformApiProxy;
+import com.refinedmods.refinedstorage2.platform.api.security.PlatformSecurityNetworkComponent;
import com.refinedmods.refinedstorage2.platform.api.upgrade.AbstractUpgradeItem;
import com.refinedmods.refinedstorage2.platform.common.configurationcard.ConfigurationCardItem;
import com.refinedmods.refinedstorage2.platform.common.constructordestructor.BlockBreakDestructorStrategyFactory;
@@ -43,7 +44,6 @@
import com.refinedmods.refinedstorage2.platform.common.grid.GridBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.grid.GridContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.grid.WirelessGridContainerMenu;
-import com.refinedmods.refinedstorage2.platform.common.grid.WirelessGridItem;
import com.refinedmods.refinedstorage2.platform.common.iface.InterfaceBlock;
import com.refinedmods.refinedstorage2.platform.common.iface.InterfaceBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.iface.InterfaceContainerMenu;
@@ -55,6 +55,12 @@
import com.refinedmods.refinedstorage2.platform.common.networking.NetworkReceiverBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.networking.NetworkTransmitterBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.networking.NetworkTransmitterContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.security.BuiltinPermission;
+import com.refinedmods.refinedstorage2.platform.common.security.FallbackSecurityCardContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.security.PlatformSecurityNetworkComponentImpl;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityCardContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityManagerBlockEntity;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityManagerContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.storage.FluidStorageType;
import com.refinedmods.refinedstorage2.platform.common.storage.ItemStorageType;
import com.refinedmods.refinedstorage2.platform.common.storage.StorageTypes;
@@ -66,7 +72,6 @@
import com.refinedmods.refinedstorage2.platform.common.storage.portablegrid.AbstractPortableGridBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.storage.portablegrid.PortableGridBlock;
import com.refinedmods.refinedstorage2.platform.common.storage.portablegrid.PortableGridBlockContainerMenu;
-import com.refinedmods.refinedstorage2.platform.common.storage.portablegrid.PortableGridBlockItem;
import com.refinedmods.refinedstorage2.platform.common.storage.portablegrid.PortableGridItemContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.storage.portablegrid.PortableGridLootItemFunction;
import com.refinedmods.refinedstorage2.platform.common.storage.portablegrid.PortableGridType;
@@ -88,11 +93,13 @@
import com.refinedmods.refinedstorage2.platform.common.storagemonitor.StorageMonitorBlock;
import com.refinedmods.refinedstorage2.platform.common.storagemonitor.StorageMonitorBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.storagemonitor.StorageMonitorContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.support.BaseBlockItem;
+import com.refinedmods.refinedstorage2.platform.common.support.NetworkNodeBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.SimpleBlock;
-import com.refinedmods.refinedstorage2.platform.common.support.SimpleBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.SimpleItem;
import com.refinedmods.refinedstorage2.platform.common.support.energy.EnergyLootItemFunction;
import com.refinedmods.refinedstorage2.platform.common.support.network.NetworkNodeContainerBlockEntityImpl;
+import com.refinedmods.refinedstorage2.platform.common.support.network.bounditem.InventorySlotReferenceFactory;
import com.refinedmods.refinedstorage2.platform.common.support.network.component.PlatformStorageNetworkComponent;
import com.refinedmods.refinedstorage2.platform.common.support.resource.FluidResourceFactory;
import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceTypes;
@@ -131,13 +138,13 @@
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.CRAFTING_GRID;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.CREATIVE_CONTROLLER;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.CREATIVE_PORTABLE_GRID;
-import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.CREATIVE_WIRELESS_GRID;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.DESTRUCTION_CORE;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.DESTRUCTOR;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.DETECTOR;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.DISK_DRIVE;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.EXPORTER;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.EXTERNAL_STORAGE;
+import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.FALLBACK_SECURITY_CARD;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.FLUID_STORAGE_BLOCK;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.GRID;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.IMPORTER;
@@ -151,6 +158,8 @@
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.QUARTZ_ENRICHED_IRON;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.QUARTZ_ENRICHED_IRON_BLOCK;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.REGULATOR_UPGRADE;
+import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.SECURITY_CARD;
+import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.SECURITY_MANAGER;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.SILICON;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.STORAGE_BLOCK;
import static com.refinedmods.refinedstorage2.platform.common.content.ContentIds.STORAGE_HOUSING;
@@ -168,12 +177,13 @@
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createIdentifier;
public abstract class AbstractModInitializer {
+ private static final String ITEM_REGISTRY_KEY = "item";
private static final String FLUID_REGISTRY_KEY = "fluid";
protected final void initializePlatformApi() {
((PlatformApiProxy) PlatformApi.INSTANCE).setDelegate(new PlatformApiImpl());
- registerAdditionalStorageTypes();
- registerAdditionalResourceTypes();
+ registerStorageTypes();
+ registerResourceTypes();
registerAdditionalResourceFactories();
registerDestructorStrategyFactories();
registerConstructorStrategyFactories();
@@ -181,16 +191,26 @@ protected final void initializePlatformApi() {
registerStorageMonitorExtractionStrategies();
registerNetworkComponents();
registerWirelessTransmitterRangeModifiers();
+ registerPermissions();
+ registerSlotReferenceProviders();
}
- private void registerAdditionalStorageTypes() {
+ private void registerStorageTypes() {
+ PlatformApi.INSTANCE.getStorageTypeRegistry().register(
+ createIdentifier(ITEM_REGISTRY_KEY),
+ StorageTypes.ITEM
+ );
PlatformApi.INSTANCE.getStorageTypeRegistry().register(
createIdentifier(FLUID_REGISTRY_KEY),
StorageTypes.FLUID
);
}
- private void registerAdditionalResourceTypes() {
+ private void registerResourceTypes() {
+ PlatformApi.INSTANCE.getResourceTypeRegistry().register(
+ createIdentifier(ITEM_REGISTRY_KEY),
+ ResourceTypes.ITEM
+ );
PlatformApi.INSTANCE.getResourceTypeRegistry().register(
createIdentifier(FLUID_REGISTRY_KEY),
ResourceTypes.FLUID
@@ -240,6 +260,10 @@ private void registerNetworkComponents() {
StorageNetworkComponent.class,
network -> new PlatformStorageNetworkComponent()
);
+ PlatformApi.INSTANCE.getNetworkComponentMapFactory().addFactory(
+ PlatformSecurityNetworkComponent.class,
+ network -> new PlatformSecurityNetworkComponentImpl(PlatformApi.INSTANCE.createDefaultSecurityPolicy())
+ );
}
private void registerWirelessTransmitterRangeModifiers() {
@@ -250,6 +274,12 @@ private void registerWirelessTransmitterRangeModifiers() {
);
}
+ private void registerPermissions() {
+ for (final BuiltinPermission permission : BuiltinPermission.values()) {
+ PlatformApi.INSTANCE.getPermissionRegistry().register(permission.getId(), permission);
+ }
+ }
+
protected final void registerBlocks(
final RegistryCallback callback,
final BiFunction diskDriveBlockEntityFactory,
@@ -297,16 +327,10 @@ protected final void registerBlocks(
PortableGridType.CREATIVE,
creativePortableGridBlockEntityFactory
)));
+ Blocks.INSTANCE.getSecurityManager().registerBlocks(callback);
}
- protected final void registerItems(
- final RegistryCallback- callback,
- final Supplier regulatorUpgradeItemSupplier,
- final Supplier wirelessGridItemSupplier,
- final Supplier creativeWirelessGridItemSupplier,
- final Supplier portableGridBlockItemSupplier,
- final Supplier creativePortableGridBlockItemSupplier
- ) {
+ protected final void registerItems(final RegistryCallback
- callback) {
registerSimpleItems(callback);
Blocks.INSTANCE.getGrid().registerItems(callback);
Blocks.INSTANCE.getCraftingGrid().registerItems(callback);
@@ -322,33 +346,24 @@ protected final void registerItems(
Blocks.INSTANCE.getWirelessTransmitter().registerItems(callback, Items.INSTANCE::addWirelessTransmitter);
Blocks.INSTANCE.getNetworkReceiver().registerItems(callback, Items.INSTANCE::addNetworkReceiver);
Blocks.INSTANCE.getNetworkTransmitter().registerItems(callback, Items.INSTANCE::addNetworkTransmitter);
+ Blocks.INSTANCE.getSecurityManager().registerItems(callback, Items.INSTANCE::addSecurityManager);
registerStorageItems(callback);
- registerUpgrades(callback, regulatorUpgradeItemSupplier);
- Items.INSTANCE.setWirelessGrid(callback.register(WIRELESS_GRID, wirelessGridItemSupplier));
- Items.INSTANCE.setCreativeWirelessGrid(callback.register(
- CREATIVE_WIRELESS_GRID,
- creativeWirelessGridItemSupplier
- ));
- callback.register(STORAGE_MONITOR, () -> new SimpleBlockItem(Blocks.INSTANCE.getStorageMonitor()));
- Items.INSTANCE.setPortableGrid(callback.register(PORTABLE_GRID, portableGridBlockItemSupplier));
- Items.INSTANCE.setCreativePortableGrid(callback.register(
- CREATIVE_PORTABLE_GRID,
- creativePortableGridBlockItemSupplier
- ));
+ registerUpgrades(callback);
}
private void registerSimpleItems(final RegistryCallback
- callback) {
Items.INSTANCE.setQuartzEnrichedIron(callback.register(QUARTZ_ENRICHED_IRON, SimpleItem::new));
callback.register(
QUARTZ_ENRICHED_IRON_BLOCK,
- () -> new SimpleBlockItem(Blocks.INSTANCE.getQuartzEnrichedIronBlock())
+ () -> new BaseBlockItem(Blocks.INSTANCE.getQuartzEnrichedIronBlock())
);
Items.INSTANCE.setSilicon(callback.register(SILICON, SimpleItem::new));
Items.INSTANCE.setProcessorBinding(callback.register(PROCESSOR_BINDING, SimpleItem::new));
callback.register(DISK_DRIVE, () -> Blocks.INSTANCE.getDiskDrive().createBlockItem());
Items.INSTANCE.setWrench(callback.register(WRENCH, WrenchItem::new));
Items.INSTANCE.setStorageHousing(callback.register(STORAGE_HOUSING, SimpleItem::new));
- callback.register(MACHINE_CASING, () -> new SimpleBlockItem(Blocks.INSTANCE.getMachineCasing()));
+ callback.register(MACHINE_CASING, () -> new BaseBlockItem(Blocks.INSTANCE.getMachineCasing()));
+ callback.register(STORAGE_MONITOR, () -> new NetworkNodeBlockItem(Blocks.INSTANCE.getStorageMonitor()));
callback.register(INTERFACE, () -> Blocks.INSTANCE.getInterface().createBlockItem());
Items.INSTANCE.setConstructionCore(callback.register(CONSTRUCTION_CORE, SimpleItem::new));
Items.INSTANCE.setDestructionCore(callback.register(DESTRUCTION_CORE, SimpleItem::new));
@@ -411,10 +426,7 @@ private void registerFluidStorageItems(final RegistryCallback
- callback,
);
}
- private void registerUpgrades(
- final RegistryCallback
- callback,
- final Supplier regulatorUpgradeItemSupplier
- ) {
+ private void registerUpgrades(final RegistryCallback
- callback) {
Items.INSTANCE.setUpgrade(callback.register(
ContentIds.UPGRADE,
SimpleItem::new
@@ -461,10 +473,6 @@ private void registerUpgrades(
)
);
Items.INSTANCE.setSilkTouchUpgrade(silkTouchUpgrade);
- Items.INSTANCE.setRegulatorUpgrade(callback.register(
- ContentIds.REGULATOR_UPGRADE,
- regulatorUpgradeItemSupplier
- ));
Items.INSTANCE.setRangeUpgrade(callback.register(
ContentIds.RANGE_UPGRADE,
() -> new RangeUpgradeItem(PlatformApi.INSTANCE.getUpgradeRegistry(), false)
@@ -627,6 +635,13 @@ protected final void registerBlockEntities(
Blocks.INSTANCE.getCreativePortableGrid()
)
));
+ BlockEntities.INSTANCE.setSecurityManager(callback.register(
+ SECURITY_MANAGER,
+ () -> typeFactory.create(
+ SecurityManagerBlockEntity::new,
+ Blocks.INSTANCE.getSecurityManager().toArray()
+ )
+ ));
}
protected final void registerMenus(final RegistryCallback> callback,
@@ -711,6 +726,17 @@ protected final void registerMenus(final RegistryCallback> callback,
createIdentifier("portable_grid_item"),
() -> menuTypeFactory.create(PortableGridItemContainerMenu::new)
));
+ Menus.INSTANCE.setSecurityCard(callback.register(
+ SECURITY_CARD,
+ () -> menuTypeFactory.create(SecurityCardContainerMenu::new)
+ ));
+ Menus.INSTANCE.setFallbackSecurityCard(callback.register(
+ FALLBACK_SECURITY_CARD,
+ () -> menuTypeFactory.create(FallbackSecurityCardContainerMenu::new)
+ ));
+ Menus.INSTANCE.setSecurityManager(callback.register(SECURITY_MANAGER, () -> menuTypeFactory.create(
+ (syncId, playerInventory, buf) -> new SecurityManagerContainerMenu(syncId, playerInventory)
+ )));
}
protected final void registerLootFunctions(final RegistryCallback callback) {
@@ -742,6 +768,13 @@ protected final void registerRecipeSerializers(final RegistryCallback getResourceTypeId();
void setResourceTypeId(ResourceLocation resourceTypeId);
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/PlatformApiImpl.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/PlatformApiImpl.java
index 07d5805d0..803d80feb 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/PlatformApiImpl.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/PlatformApiImpl.java
@@ -3,10 +3,11 @@
import com.refinedmods.refinedstorage2.api.core.component.ComponentMapFactory;
import com.refinedmods.refinedstorage2.api.network.Network;
import com.refinedmods.refinedstorage2.api.network.NetworkBuilder;
-import com.refinedmods.refinedstorage2.api.network.component.NetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.NetworkComponent;
import com.refinedmods.refinedstorage2.api.network.energy.EnergyStorage;
import com.refinedmods.refinedstorage2.api.network.impl.NetworkBuilderImpl;
import com.refinedmods.refinedstorage2.api.network.impl.NetworkFactory;
+import com.refinedmods.refinedstorage2.api.network.security.SecurityPolicy;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import com.refinedmods.refinedstorage2.platform.api.constructordestructor.ConstructorStrategyFactory;
@@ -24,6 +25,9 @@
import com.refinedmods.refinedstorage2.platform.api.grid.strategy.GridScrollingStrategyFactory;
import com.refinedmods.refinedstorage2.platform.api.importer.ImporterTransferStrategyFactory;
import com.refinedmods.refinedstorage2.platform.api.recipemod.IngredientConverter;
+import com.refinedmods.refinedstorage2.platform.api.security.BuiltinPermissions;
+import com.refinedmods.refinedstorage2.platform.api.security.PlatformPermission;
+import com.refinedmods.refinedstorage2.platform.api.security.PlatformSecurityNetworkComponent;
import com.refinedmods.refinedstorage2.platform.api.storage.StorageContainerItemHelper;
import com.refinedmods.refinedstorage2.platform.api.storage.StorageRepository;
import com.refinedmods.refinedstorage2.platform.api.storage.StorageType;
@@ -44,7 +48,6 @@
import com.refinedmods.refinedstorage2.platform.api.upgrade.UpgradeRegistry;
import com.refinedmods.refinedstorage2.platform.api.wirelesstransmitter.WirelessTransmitterRangeModifier;
import com.refinedmods.refinedstorage2.platform.common.grid.AbstractGridContainerMenu;
-import com.refinedmods.refinedstorage2.platform.common.grid.NoopGridSynchronizer;
import com.refinedmods.refinedstorage2.platform.common.grid.screen.hint.GridInsertionHintsImpl;
import com.refinedmods.refinedstorage2.platform.common.grid.screen.hint.ItemGridInsertionHint;
import com.refinedmods.refinedstorage2.platform.common.grid.screen.hint.SingleItemGridInsertionHint;
@@ -52,6 +55,7 @@
import com.refinedmods.refinedstorage2.platform.common.grid.strategy.CompositeGridInsertionStrategy;
import com.refinedmods.refinedstorage2.platform.common.grid.strategy.CompositeGridScrollingStrategy;
import com.refinedmods.refinedstorage2.platform.common.recipemod.CompositeIngredientConverter;
+import com.refinedmods.refinedstorage2.platform.common.security.BuiltinPermission;
import com.refinedmods.refinedstorage2.platform.common.storage.ClientStorageRepository;
import com.refinedmods.refinedstorage2.platform.common.storage.StorageContainerItemHelperImpl;
import com.refinedmods.refinedstorage2.platform.common.storage.StorageRepositoryImpl;
@@ -64,15 +68,12 @@
import com.refinedmods.refinedstorage2.platform.common.support.network.ConnectionProviderImpl;
import com.refinedmods.refinedstorage2.platform.common.support.network.bounditem.CompositeSlotReferenceProvider;
import com.refinedmods.refinedstorage2.platform.common.support.network.bounditem.InventorySlotReference;
-import com.refinedmods.refinedstorage2.platform.common.support.network.bounditem.InventorySlotReferenceFactory;
import com.refinedmods.refinedstorage2.platform.common.support.network.bounditem.NetworkBoundItemHelperImpl;
import com.refinedmods.refinedstorage2.platform.common.support.registry.PlatformRegistryImpl;
import com.refinedmods.refinedstorage2.platform.common.support.resource.FluidResourceFactory;
import com.refinedmods.refinedstorage2.platform.common.support.resource.ItemResourceFactory;
-import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceTypes;
import com.refinedmods.refinedstorage2.platform.common.upgrade.BuiltinUpgradeDestinationsImpl;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeRegistryImpl;
-import com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil;
import com.refinedmods.refinedstorage2.platform.common.util.ServerEventQueue;
import com.refinedmods.refinedstorage2.platform.common.wirelesstransmitter.CompositeWirelessTransmitterRangeModifier;
@@ -89,44 +90,43 @@
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Set;
+import java.util.stream.Collectors;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.FriendlyByteBuf;
-import net.minecraft.network.chat.MutableComponent;
+import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
+import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
+import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.saveddata.SavedData;
-import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createIdentifier;
+import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createTranslation;
public class PlatformApiImpl implements PlatformApi {
- private static final String ITEM_REGISTRY_KEY = "item";
-
private final StorageRepository clientStorageRepository =
new ClientStorageRepository(Platform.INSTANCE.getClientToServerCommunications()::sendStorageInfoRequest);
private final ComponentMapFactory networkComponentMapFactory =
new ComponentMapFactory<>();
private final NetworkBuilder networkBuilder =
new NetworkBuilderImpl(new NetworkFactory(networkComponentMapFactory));
- private final PlatformRegistry storageTypeRegistry =
- new PlatformRegistryImpl<>(createIdentifier(ITEM_REGISTRY_KEY), StorageTypes.ITEM);
- private final PlatformRegistry resourceTypeRegistry =
- new PlatformRegistryImpl<>(createIdentifier(ITEM_REGISTRY_KEY), ResourceTypes.ITEM);
- private final PlatformRegistry gridSynchronizerRegistry =
- new PlatformRegistryImpl<>(createIdentifier("off"), new NoopGridSynchronizer());
+ private final PlatformRegistry storageTypeRegistry = new PlatformRegistryImpl<>();
+ private final PlatformRegistry resourceTypeRegistry = new PlatformRegistryImpl<>();
+ private final PlatformRegistry gridSynchronizerRegistry = new PlatformRegistryImpl<>();
private final PlatformRegistry importerTransferStrategyRegistry =
- new PlatformRegistryImpl<>(createIdentifier("noop"),
- (level, pos, direction, upgradeState, amountOverride) -> (filter, actor, network) -> false);
+ new PlatformRegistryImpl<>();
private final PlatformRegistry exporterTransferStrategyRegistry =
- new PlatformRegistryImpl<>(createIdentifier("noop"),
- (level, pos, direction, upgradeState, amountOverride, fuzzyMode) -> (resource, actor, network) -> false);
+ new PlatformRegistryImpl<>();
private final UpgradeRegistry upgradeRegistry = new UpgradeRegistryImpl();
private final BuiltinUpgradeDestinations builtinUpgradeDestinations = new BuiltinUpgradeDestinationsImpl();
private final Queue externalStorageProviderFactories = new PriorityQueue<>(
@@ -159,11 +159,9 @@ public class PlatformApiImpl implements PlatformApi {
new CompositeWirelessTransmitterRangeModifier();
private final EnergyItemHelper energyItemHelper = new EnergyItemHelperImpl();
private final NetworkBoundItemHelper networkBoundItemHelper = new NetworkBoundItemHelperImpl();
- private final PlatformRegistry slotReferenceFactoryRegistry = new PlatformRegistryImpl<>(
- createIdentifier("inventory"),
- InventorySlotReferenceFactory.INSTANCE
- );
+ private final PlatformRegistry slotReferenceFactoryRegistry = new PlatformRegistryImpl<>();
private final CompositeSlotReferenceProvider slotReferenceProvider = new CompositeSlotReferenceProvider();
+ private final PlatformRegistry permissionRegistry = new PlatformRegistryImpl<>();
@Override
public PlatformRegistry getStorageTypeRegistry() {
@@ -264,11 +262,6 @@ public StorageMonitorInsertionStrategy getStorageMonitorInsertionStrategy() {
return storageMonitorInsertionStrategy;
}
- @Override
- public MutableComponent createTranslation(final String category, final String value, final Object... args) {
- return IdentifierUtil.createTranslation(category, value, args);
- }
-
@Override
public ComponentMapFactory getNetworkComponentMapFactory() {
return networkComponentMapFactory;
@@ -335,7 +328,7 @@ public void requestNetworkNodeUpdate(final PlatformNetworkNodeContainer containe
@Override
public GridInsertionStrategy createGridInsertionStrategy(final AbstractContainerMenu containerMenu,
- final Player player,
+ final ServerPlayer player,
final Grid grid) {
return new CompositeGridInsertionStrategy(
Platform.INSTANCE.getDefaultGridInsertionStrategyFactory().create(
@@ -368,7 +361,7 @@ public GridInsertionHints getGridInsertionHints() {
@Override
public GridExtractionStrategy createGridExtractionStrategy(final AbstractContainerMenu containerMenu,
- final Player player,
+ final ServerPlayer player,
final Grid grid) {
final List strategies = gridExtractionStrategyFactories
.stream()
@@ -384,7 +377,7 @@ public void addGridExtractionStrategyFactory(final GridExtractionStrategyFactory
@Override
public GridScrollingStrategy createGridScrollingStrategy(final AbstractContainerMenu containerMenu,
- final Player player,
+ final ServerPlayer player,
final Grid grid) {
final List strategies = gridScrollingStrategyFactories
.stream()
@@ -527,4 +520,60 @@ public void useNetworkBoundItem(final Player player, final Item... items) {
slotReference -> Platform.INSTANCE.getClientToServerCommunications().sendUseNetworkBoundItem(slotReference)
);
}
+
+ @Override
+ public BuiltinPermissions getBuiltinPermissions() {
+ return BuiltinPermission.VIEW;
+ }
+
+ @Override
+ public PlatformRegistry getPermissionRegistry() {
+ return permissionRegistry;
+ }
+
+ @Override
+ public SecurityPolicy createDefaultSecurityPolicy() {
+ return new SecurityPolicy(permissionRegistry.getAll()
+ .stream()
+ .filter(PlatformPermission::isAllowedByDefault)
+ .collect(Collectors.toSet()));
+ }
+
+ @Override
+ public void sendNoPermissionToOpenMessage(final ServerPlayer player, final Component target) {
+ sendNoPermissionMessage(player, createTranslation("misc", "no_permission.open", target));
+ }
+
+ @Override
+ public void sendNoPermissionMessage(final ServerPlayer player, final Component message) {
+ Platform.INSTANCE.getServerToClientCommunications().sendNoPermission(player, message);
+ }
+
+ @Override
+ public boolean canPlaceNetworkNode(final ServerPlayer player,
+ final Level level,
+ final BlockPos pos,
+ final BlockState state) {
+ for (final Direction direction : Direction.values()) {
+ final BlockPos adjacentPos = pos.relative(direction);
+ final BlockEntity adjacentBlockEntity = level.getBlockEntity(adjacentPos);
+ if (!(adjacentBlockEntity instanceof PlatformNetworkNodeContainer platformNetworkNodeContainer)
+ || !platformNetworkNodeContainer.canAcceptIncomingConnection(direction.getOpposite(), state)
+ || platformNetworkNodeContainer.getNode().getNetwork() == null) {
+ continue;
+ }
+ final PlatformSecurityNetworkComponent security = platformNetworkNodeContainer
+ .getNode()
+ .getNetwork()
+ .getComponent(PlatformSecurityNetworkComponent.class);
+ if (!security.isAllowed(BuiltinPermission.BUILD, player)) {
+ PlatformApi.INSTANCE.sendNoPermissionMessage(
+ player,
+ createTranslation("misc", "no_permission.build.place", state.getBlock().getName())
+ );
+ return false;
+ }
+ }
+ return true;
+ }
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/AbstractItemConstructorStrategy.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/AbstractItemConstructorStrategy.java
index deaff8a3c..fd1086858 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/AbstractItemConstructorStrategy.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/AbstractItemConstructorStrategy.java
@@ -2,7 +2,7 @@
import com.refinedmods.refinedstorage2.api.core.Action;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
import com.refinedmods.refinedstorage2.api.storage.Actor;
import com.refinedmods.refinedstorage2.api.storage.channel.StorageChannel;
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/BlockBreakDestructorStrategy.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/BlockBreakDestructorStrategy.java
index 0b15939a8..923363145 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/BlockBreakDestructorStrategy.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/BlockBreakDestructorStrategy.java
@@ -2,7 +2,7 @@
import com.refinedmods.refinedstorage2.api.core.Action;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.resource.filter.Filter;
import com.refinedmods.refinedstorage2.api.storage.Actor;
import com.refinedmods.refinedstorage2.api.storage.channel.StorageChannel;
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ConstructorBlock.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ConstructorBlock.java
index e8c9ea21f..751fa6880 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ConstructorBlock.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ConstructorBlock.java
@@ -3,8 +3,9 @@
import com.refinedmods.refinedstorage2.platform.common.content.BlockColorMap;
import com.refinedmods.refinedstorage2.platform.common.content.BlockEntities;
import com.refinedmods.refinedstorage2.platform.common.content.Blocks;
+import com.refinedmods.refinedstorage2.platform.common.support.BaseBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.BlockItemProvider;
-import com.refinedmods.refinedstorage2.platform.common.support.NamedBlockItem;
+import com.refinedmods.refinedstorage2.platform.common.support.NetworkNodeBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.network.NetworkNodeBlockEntityTicker;
import javax.annotation.Nullable;
@@ -13,15 +14,14 @@
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.item.DyeColor;
-import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createTranslation;
public class ConstructorBlock extends AbstractConstructorDestructorBlock<
- ConstructorBlock, ConstructorBlockEntity, NamedBlockItem
- > implements BlockItemProvider {
+ ConstructorBlock, ConstructorBlockEntity, BaseBlockItem
+ > implements BlockItemProvider {
private static final Component HELP = createTranslation("item", "constructor.help");
public ConstructorBlock(final DyeColor color, final MutableComponent name) {
@@ -32,7 +32,7 @@ public ConstructorBlock(final DyeColor color, final MutableComponent name) {
}
@Override
- public BlockColorMap getBlockColorMap() {
+ public BlockColorMap getBlockColorMap() {
return Blocks.INSTANCE.getConstructor();
}
@@ -43,7 +43,7 @@ public BlockEntity newBlockEntity(final BlockPos blockPos, final BlockState bloc
}
@Override
- public NamedBlockItem createBlockItem() {
- return new NamedBlockItem(this, new Item.Properties(), getName(), HELP);
+ public BaseBlockItem createBlockItem() {
+ return new NetworkNodeBlockItem(this, HELP);
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/DestructorBlock.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/DestructorBlock.java
index eb95d5e00..c9988df10 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/DestructorBlock.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/DestructorBlock.java
@@ -3,8 +3,9 @@
import com.refinedmods.refinedstorage2.platform.common.content.BlockColorMap;
import com.refinedmods.refinedstorage2.platform.common.content.BlockEntities;
import com.refinedmods.refinedstorage2.platform.common.content.Blocks;
+import com.refinedmods.refinedstorage2.platform.common.support.BaseBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.BlockItemProvider;
-import com.refinedmods.refinedstorage2.platform.common.support.NamedBlockItem;
+import com.refinedmods.refinedstorage2.platform.common.support.NetworkNodeBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.network.NetworkNodeBlockEntityTicker;
import javax.annotation.Nullable;
@@ -13,15 +14,14 @@
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.item.DyeColor;
-import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createTranslation;
public class DestructorBlock extends AbstractConstructorDestructorBlock<
- DestructorBlock, DestructorBlockEntity, NamedBlockItem
- > implements BlockItemProvider {
+ DestructorBlock, DestructorBlockEntity, BaseBlockItem
+ > implements BlockItemProvider {
private static final Component HELP = createTranslation("item", "destructor.help");
public DestructorBlock(final DyeColor color, final MutableComponent name) {
@@ -32,7 +32,7 @@ public DestructorBlock(final DyeColor color, final MutableComponent name) {
}
@Override
- public BlockColorMap getBlockColorMap() {
+ public BlockColorMap getBlockColorMap() {
return Blocks.INSTANCE.getDestructor();
}
@@ -43,7 +43,7 @@ public BlockEntity newBlockEntity(final BlockPos blockPos, final BlockState bloc
}
@Override
- public NamedBlockItem createBlockItem() {
- return new NamedBlockItem(this, new Item.Properties(), getName(), HELP);
+ public BaseBlockItem createBlockItem() {
+ return new NetworkNodeBlockItem(this, HELP);
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/DestructorBlockEntity.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/DestructorBlockEntity.java
index 87441fbdc..5f90c77bd 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/DestructorBlockEntity.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/DestructorBlockEntity.java
@@ -13,7 +13,7 @@
import com.refinedmods.refinedstorage2.platform.common.support.AbstractDirectionalBlock;
import com.refinedmods.refinedstorage2.platform.common.support.FilterModeSettings;
import com.refinedmods.refinedstorage2.platform.common.support.FilterWithFuzzyMode;
-import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ExtendedMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeMenuProvider;
import com.refinedmods.refinedstorage2.platform.common.support.network.AbstractUpgradeableNetworkNodeContainerBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerImpl;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeDestinations;
@@ -34,7 +34,7 @@
import net.minecraft.world.level.block.state.BlockState;
public class DestructorBlockEntity extends AbstractUpgradeableNetworkNodeContainerBlockEntity
- implements ExtendedMenuProvider {
+ implements NetworkNodeMenuProvider {
private static final String TAG_FILTER_MODE = "fim";
private static final String TAG_PICKUP_ITEMS = "pi";
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/FluidBreakDestructorStrategy.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/FluidBreakDestructorStrategy.java
index 74bdc3a7b..f258547be 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/FluidBreakDestructorStrategy.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/FluidBreakDestructorStrategy.java
@@ -2,7 +2,7 @@
import com.refinedmods.refinedstorage2.api.core.Action;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.resource.filter.Filter;
import com.refinedmods.refinedstorage2.api.storage.Actor;
import com.refinedmods.refinedstorage2.api.storage.channel.StorageChannel;
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ItemPickupDestructorStrategy.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ItemPickupDestructorStrategy.java
index b010c19fc..43c6a13e8 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ItemPickupDestructorStrategy.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ItemPickupDestructorStrategy.java
@@ -2,7 +2,7 @@
import com.refinedmods.refinedstorage2.api.core.Action;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.resource.filter.Filter;
import com.refinedmods.refinedstorage2.api.storage.Actor;
import com.refinedmods.refinedstorage2.api.storage.channel.StorageChannel;
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/PlaceFluidConstructorStrategy.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/PlaceFluidConstructorStrategy.java
index b44515091..16cd1b25c 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/PlaceFluidConstructorStrategy.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/PlaceFluidConstructorStrategy.java
@@ -2,7 +2,7 @@
import com.refinedmods.refinedstorage2.api.core.Action;
import com.refinedmods.refinedstorage2.api.network.Network;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
import com.refinedmods.refinedstorage2.api.storage.Actor;
import com.refinedmods.refinedstorage2.api.storage.channel.StorageChannel;
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/BlockEntities.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/BlockEntities.java
index 4fdfd24b0..3868df5bb 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/BlockEntities.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/BlockEntities.java
@@ -12,6 +12,7 @@
import com.refinedmods.refinedstorage2.platform.common.importer.ImporterBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.networking.NetworkReceiverBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.networking.NetworkTransmitterBlockEntity;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityManagerBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.storage.FluidStorageType;
import com.refinedmods.refinedstorage2.platform.common.storage.ItemStorageType;
import com.refinedmods.refinedstorage2.platform.common.storage.diskdrive.AbstractDiskDriveBlockEntity;
@@ -77,6 +78,8 @@ public final class BlockEntities {
private Supplier> portableGrid;
@Nullable
private Supplier> creativePortableGrid;
+ @Nullable
+ private Supplier> securityManager;
private BlockEntities() {
}
@@ -252,4 +255,12 @@ public BlockEntityType getCreativePortableGrid(
public void setCreativePortableGrid(final Supplier> supplier) {
this.creativePortableGrid = supplier;
}
+
+ public BlockEntityType getSecurityManager() {
+ return requireNonNull(securityManager).get();
+ }
+
+ public void setSecurityManager(final Supplier> supplier) {
+ this.securityManager = supplier;
+ }
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Blocks.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Blocks.java
index b13f8e159..f393da0a5 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Blocks.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Blocks.java
@@ -17,6 +17,7 @@
import com.refinedmods.refinedstorage2.platform.common.networking.CableBlock;
import com.refinedmods.refinedstorage2.platform.common.networking.NetworkReceiverBlock;
import com.refinedmods.refinedstorage2.platform.common.networking.NetworkTransmitterBlock;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityManagerBlock;
import com.refinedmods.refinedstorage2.platform.common.storage.FluidStorageType;
import com.refinedmods.refinedstorage2.platform.common.storage.ItemStorageType;
import com.refinedmods.refinedstorage2.platform.common.storage.diskdrive.DiskDriveBlock;
@@ -25,7 +26,7 @@
import com.refinedmods.refinedstorage2.platform.common.storage.storageblock.FluidStorageBlock;
import com.refinedmods.refinedstorage2.platform.common.storage.storageblock.ItemStorageBlock;
import com.refinedmods.refinedstorage2.platform.common.storagemonitor.StorageMonitorBlock;
-import com.refinedmods.refinedstorage2.platform.common.support.NamedBlockItem;
+import com.refinedmods.refinedstorage2.platform.common.support.BaseBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.SimpleBlock;
import com.refinedmods.refinedstorage2.platform.common.wirelesstransmitter.WirelessTransmitterBlock;
@@ -43,25 +44,25 @@ public final class Blocks {
public static final DyeColor CABLE_LIKE_COLOR = DyeColor.GRAY;
public static final Blocks INSTANCE = new Blocks();
- private final BlockColorMap cable = new BlockColorMap<>(
+ private final BlockColorMap cable = new BlockColorMap<>(
CableBlock::new,
ContentIds.CABLE,
ContentNames.CABLE,
CABLE_LIKE_COLOR
);
- private final BlockColorMap grid = new BlockColorMap<>(
+ private final BlockColorMap grid = new BlockColorMap<>(
GridBlock::new,
ContentIds.GRID,
ContentNames.GRID,
COLOR
);
- private final BlockColorMap craftingGrid = new BlockColorMap<>(
+ private final BlockColorMap craftingGrid = new BlockColorMap<>(
CraftingGridBlock::new,
ContentIds.CRAFTING_GRID,
ContentNames.CRAFTING_GRID,
COLOR
);
- private final BlockColorMap detector = new BlockColorMap<>(
+ private final BlockColorMap detector = new BlockColorMap<>(
DetectorBlock::new,
ContentIds.DETECTOR,
ContentNames.DETECTOR,
@@ -89,54 +90,60 @@ public final class Blocks {
ContentNames.CREATIVE_CONTROLLER,
COLOR
);
- private final BlockColorMap exporter = new BlockColorMap<>(
+ private final BlockColorMap exporter = new BlockColorMap<>(
ExporterBlock::new,
ContentIds.EXPORTER,
ContentNames.EXPORTER,
CABLE_LIKE_COLOR
);
- private final BlockColorMap importer = new BlockColorMap<>(
+ private final BlockColorMap importer = new BlockColorMap<>(
ImporterBlock::new,
ContentIds.IMPORTER,
ContentNames.IMPORTER,
CABLE_LIKE_COLOR
);
- private final BlockColorMap externalStorage = new BlockColorMap<>(
+ private final BlockColorMap externalStorage = new BlockColorMap<>(
ExternalStorageBlock::new,
ContentIds.EXTERNAL_STORAGE,
ContentNames.EXTERNAL_STORAGE,
CABLE_LIKE_COLOR
);
- private final BlockColorMap destructor = new BlockColorMap<>(
+ private final BlockColorMap destructor = new BlockColorMap<>(
DestructorBlock::new,
ContentIds.DESTRUCTOR,
ContentNames.DESTRUCTOR,
CABLE_LIKE_COLOR
);
- private final BlockColorMap constructor = new BlockColorMap<>(
+ private final BlockColorMap constructor = new BlockColorMap<>(
ConstructorBlock::new,
ContentIds.CONSTRUCTOR,
ContentNames.CONSTRUCTOR,
CABLE_LIKE_COLOR
);
- private final BlockColorMap wirelessTransmitter = new BlockColorMap<>(
+ private final BlockColorMap wirelessTransmitter = new BlockColorMap<>(
WirelessTransmitterBlock::new,
ContentIds.WIRELESS_TRANSMITTER,
ContentNames.WIRELESS_TRANSMITTER,
COLOR
);
- private final BlockColorMap networkReceiver = new BlockColorMap<>(
+ private final BlockColorMap networkReceiver = new BlockColorMap<>(
NetworkReceiverBlock::new,
ContentIds.NETWORK_RECEIVER,
ContentNames.NETWORK_RECEIVER,
COLOR
);
- private final BlockColorMap networkTransmitter = new BlockColorMap<>(
+ private final BlockColorMap networkTransmitter = new BlockColorMap<>(
NetworkTransmitterBlock::new,
ContentIds.NETWORK_TRANSMITTER,
ContentNames.NETWORK_TRANSMITTER,
COLOR
);
+ private final BlockColorMap securityManager = new BlockColorMap<>(
+ SecurityManagerBlock::new,
+ ContentIds.SECURITY_MANAGER,
+ ContentNames.SECURITY_MANAGER,
+ COLOR
+ );
@Nullable
private Supplier quartzEnrichedIronBlock;
@@ -160,7 +167,7 @@ public final class Blocks {
private Blocks() {
}
- public BlockColorMap getCable() {
+ public BlockColorMap getCable() {
return cable;
}
@@ -176,11 +183,11 @@ public SimpleBlock getMachineCasing() {
return requireNonNull(machineCasing).get();
}
- public BlockColorMap getGrid() {
+ public BlockColorMap getGrid() {
return grid;
}
- public BlockColorMap getCraftingGrid() {
+ public BlockColorMap getCraftingGrid() {
return craftingGrid;
}
@@ -223,11 +230,11 @@ public FluidStorageBlock getFluidStorageBlock(final FluidStorageType.Variant var
return fluidStorageBlocks.get(variant).get();
}
- public BlockColorMap getImporter() {
+ public BlockColorMap getImporter() {
return importer;
}
- public BlockColorMap getExporter() {
+ public BlockColorMap getExporter() {
return exporter;
}
@@ -239,23 +246,23 @@ public InterfaceBlock getInterface() {
return requireNonNull(iface).get();
}
- public BlockColorMap getExternalStorage() {
+ public BlockColorMap getExternalStorage() {
return externalStorage;
}
- public BlockColorMap getDetector() {
+ public BlockColorMap getDetector() {
return detector;
}
- public BlockColorMap getDestructor() {
+ public BlockColorMap getDestructor() {
return destructor;
}
- public BlockColorMap getConstructor() {
+ public BlockColorMap getConstructor() {
return constructor;
}
- public BlockColorMap getWirelessTransmitter() {
+ public BlockColorMap getWirelessTransmitter() {
return wirelessTransmitter;
}
@@ -267,11 +274,11 @@ public StorageMonitorBlock getStorageMonitor() {
return requireNonNull(storageMonitor).get();
}
- public BlockColorMap getNetworkReceiver() {
+ public BlockColorMap getNetworkReceiver() {
return networkReceiver;
}
- public BlockColorMap getNetworkTransmitter() {
+ public BlockColorMap getNetworkTransmitter() {
return networkTransmitter;
}
@@ -290,4 +297,8 @@ public PortableGridBlock getCreativePortableGrid() {
public void setCreativePortableGrid(final Supplier supplier) {
this.creativePortableGrid = supplier;
}
+
+ public BlockColorMap getSecurityManager() {
+ return securityManager;
+ }
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ContentIds.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ContentIds.java
index 0eb7ca2bb..c1898295d 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ContentIds.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ContentIds.java
@@ -54,6 +54,9 @@ public final class ContentIds {
public static final ResourceLocation NETWORK_TRANSMITTER = createIdentifier("network_transmitter");
public static final ResourceLocation PORTABLE_GRID = createIdentifier("portable_grid");
public static final ResourceLocation CREATIVE_PORTABLE_GRID = createIdentifier("creative_portable_grid");
+ public static final ResourceLocation SECURITY_CARD = createIdentifier("security_card");
+ public static final ResourceLocation FALLBACK_SECURITY_CARD = createIdentifier("fallback_security_card");
+ public static final ResourceLocation SECURITY_MANAGER = createIdentifier("security_manager");
private ContentIds() {
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ContentNames.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ContentNames.java
index d938b5a6a..9a6ea25f5 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ContentNames.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ContentNames.java
@@ -1,10 +1,14 @@
package com.refinedmods.refinedstorage2.platform.common.content;
+import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
+import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.MOD_ID;
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createTranslation;
public final class ContentNames {
+ public static final String MOD_TRANSLATION_KEY = "mod." + MOD_ID;
+ public static final MutableComponent MOD = Component.translatable(MOD_TRANSLATION_KEY);
public static final MutableComponent CABLE = name("cable");
public static final MutableComponent GRID = name("grid");
public static final MutableComponent CRAFTING_GRID = name("crafting_grid");
@@ -16,7 +20,7 @@ public final class ContentNames {
public static final MutableComponent DESTRUCTOR = name("destructor");
public static final MutableComponent CONTROLLER = name("controller");
public static final MutableComponent CREATIVE_CONTROLLER = name("creative_controller");
- public static final MutableComponent WIRELESS_GRID = name("wireless_grid");
+ public static final MutableComponent WIRELESS_GRID = createTranslation("item", "wireless_grid");
public static final MutableComponent WIRELESS_TRANSMITTER = name("wireless_transmitter");
public static final MutableComponent REGULATOR_UPGRADE = name("regulator_upgrade");
public static final MutableComponent STORAGE_MONITOR = name("storage_monitor");
@@ -25,6 +29,9 @@ public final class ContentNames {
public static final MutableComponent NETWORK_RECEIVER = name("network_receiver");
public static final MutableComponent NETWORK_TRANSMITTER = name("network_transmitter");
public static final MutableComponent PORTABLE_GRID = name("portable_grid");
+ public static final MutableComponent SECURITY_CARD = createTranslation("item", "security_card");
+ public static final MutableComponent FALLBACK_SECURITY_CARD = createTranslation("item", "fallback_security_card");
+ public static final MutableComponent SECURITY_MANAGER = name("security_manager");
private ContentNames() {
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/CreativeModeTabItems.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/CreativeModeTabItems.java
index 239dd8ea5..fd43e703b 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/CreativeModeTabItems.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/CreativeModeTabItems.java
@@ -53,6 +53,7 @@ private static void appendBlocks(final Consumer consumer) {
itemConsumer.accept(Blocks.INSTANCE.getStorageMonitor());
Items.INSTANCE.getNetworkTransmitters().stream().map(Supplier::get).forEach(itemConsumer);
Items.INSTANCE.getNetworkReceivers().stream().map(Supplier::get).forEach(itemConsumer);
+ Items.INSTANCE.getSecurityManagers().stream().map(Supplier::get).forEach(itemConsumer);
}
private static void appendBlockColors(final Consumer consumer, final BlockColorMap, ?> map) {
@@ -103,5 +104,7 @@ private static void appendItems(final Consumer consumer) {
itemConsumer.accept(Items.INSTANCE.getCreativeWirelessGrid());
itemConsumer.accept(Items.INSTANCE.getConfigurationCard());
itemConsumer.accept(Items.INSTANCE.getNetworkCard());
+ itemConsumer.accept(Items.INSTANCE.getSecurityCard());
+ itemConsumer.accept(Items.INSTANCE.getFallbackSecurityCard());
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/DefaultEnergyUsage.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/DefaultEnergyUsage.java
index bdbd5caf9..d01592d55 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/DefaultEnergyUsage.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/DefaultEnergyUsage.java
@@ -16,6 +16,7 @@ public final class DefaultEnergyUsage {
public static final long STORAGE_MONITOR = 4;
public static final long NETWORK_RECEIVER = 8;
public static final long NETWORK_TRANSMITTER = 32;
+ public static final long SECURITY_MANAGER = 16;
public static final long CONTROLLER_CAPACITY = 1000;
@@ -41,6 +42,8 @@ public final class DefaultEnergyUsage {
public static final long RANGE_UPGRADE = 8;
public static final long CREATIVE_RANGE_UPGRADE = 0;
public static final int RANGE_UPGRADE_RANGE = 8;
+ public static final long SECURITY_CARD = 2;
+ public static final long FALLBACK_SECURITY_CARD = 4;
public static final long WIRELESS_GRID_CAPACITY = 1000;
public static final long WIRELESS_GRID_OPEN = 5;
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Items.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Items.java
index 75b7eea13..4d8dea711 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Items.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Items.java
@@ -5,10 +5,12 @@
import com.refinedmods.refinedstorage2.platform.common.controller.CreativeControllerBlockItem;
import com.refinedmods.refinedstorage2.platform.common.grid.WirelessGridItem;
import com.refinedmods.refinedstorage2.platform.common.misc.ProcessorItem;
+import com.refinedmods.refinedstorage2.platform.common.security.FallbackSecurityCardItem;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityCardItem;
import com.refinedmods.refinedstorage2.platform.common.storage.FluidStorageType;
import com.refinedmods.refinedstorage2.platform.common.storage.ItemStorageType;
import com.refinedmods.refinedstorage2.platform.common.storage.portablegrid.PortableGridBlockItem;
-import com.refinedmods.refinedstorage2.platform.common.support.NamedBlockItem;
+import com.refinedmods.refinedstorage2.platform.common.support.BaseBlockItem;
import java.util.ArrayList;
import java.util.Collections;
@@ -35,16 +37,17 @@ public final class Items {
= new EnumMap<>(FluidStorageType.Variant.class);
private final List> allControllers = new ArrayList<>();
private final List> allCreativeControllers = new ArrayList<>();
- private final List> allCables = new ArrayList<>();
- private final List> allExporters = new ArrayList<>();
- private final List> allImporters = new ArrayList<>();
- private final List> allExternalStorages = new ArrayList<>();
- private final List> allDetectors = new ArrayList<>();
- private final List> allDestructors = new ArrayList<>();
- private final List> allConstructors = new ArrayList<>();
- private final List> allWirelessTransmitters = new ArrayList<>();
- private final List> allNetworkReceivers = new ArrayList<>();
- private final List> allNetworkTransmitters = new ArrayList<>();
+ private final List> allCables = new ArrayList<>();
+ private final List> allExporters = new ArrayList<>();
+ private final List> allImporters = new ArrayList<>();
+ private final List> allExternalStorages = new ArrayList<>();
+ private final List> allDetectors = new ArrayList<>();
+ private final List> allDestructors = new ArrayList<>();
+ private final List> allConstructors = new ArrayList<>();
+ private final List> allWirelessTransmitters = new ArrayList<>();
+ private final List> allNetworkReceivers = new ArrayList<>();
+ private final List> allNetworkTransmitters = new ArrayList<>();
+ private final List> allSecurityManagers = new ArrayList<>();
@Nullable
private Supplier
- quartzEnrichedIron;
@Nullable
@@ -92,6 +95,10 @@ public final class Items {
private Supplier portableGrid;
@Nullable
private Supplier creativePortableGrid;
+ @Nullable
+ private Supplier securityCard;
+ @Nullable
+ private Supplier fallbackSecurityCard;
private Items() {
}
@@ -200,67 +207,67 @@ public List> getControllers() {
return Collections.unmodifiableList(allControllers);
}
- public void addCable(final Supplier supplier) {
+ public void addCable(final Supplier supplier) {
allCables.add(supplier);
}
- public List> getCables() {
+ public List> getCables() {
return Collections.unmodifiableList(allCables);
}
- public void addExporter(final Supplier supplier) {
+ public void addExporter(final Supplier supplier) {
allExporters.add(supplier);
}
- public List> getExporters() {
+ public List> getExporters() {
return Collections.unmodifiableList(allExporters);
}
- public void addImporter(final Supplier supplier) {
+ public void addImporter(final Supplier supplier) {
allImporters.add(supplier);
}
- public List> getImporters() {
+ public List> getImporters() {
return Collections.unmodifiableList(allImporters);
}
- public void addExternalStorage(final Supplier supplier) {
+ public void addExternalStorage(final Supplier supplier) {
allExternalStorages.add(supplier);
}
- public List> getExternalStorages() {
+ public List> getExternalStorages() {
return Collections.unmodifiableList(allExternalStorages);
}
- public void addDetector(final Supplier supplier) {
+ public void addDetector(final Supplier supplier) {
allDetectors.add(supplier);
}
- public List> getDetectors() {
+ public List> getDetectors() {
return Collections.unmodifiableList(allDetectors);
}
- public void addDestructor(final Supplier supplier) {
+ public void addDestructor(final Supplier supplier) {
allDestructors.add(supplier);
}
- public List> getDestructors() {
+ public List> getDestructors() {
return Collections.unmodifiableList(allDestructors);
}
- public void addConstructor(final Supplier supplier) {
+ public void addConstructor(final Supplier supplier) {
allConstructors.add(supplier);
}
- public List> getConstructors() {
+ public List> getConstructors() {
return Collections.unmodifiableList(allConstructors);
}
- public void addWirelessTransmitter(final Supplier supplier) {
+ public void addWirelessTransmitter(final Supplier supplier) {
allWirelessTransmitters.add(supplier);
}
- public List> getWirelessTransmitters() {
+ public List> getWirelessTransmitters() {
return Collections.unmodifiableList(allWirelessTransmitters);
}
@@ -376,22 +383,30 @@ public void setConfigurationCard(final Supplier
- supplier) {
this.configurationCard = supplier;
}
- public void addNetworkReceiver(final Supplier supplier) {
+ public void addNetworkReceiver(final Supplier supplier) {
allNetworkReceivers.add(supplier);
}
- public List> getNetworkReceivers() {
+ public List> getNetworkReceivers() {
return Collections.unmodifiableList(allNetworkReceivers);
}
- public void addNetworkTransmitter(final Supplier supplier) {
+ public void addNetworkTransmitter(final Supplier supplier) {
allNetworkTransmitters.add(supplier);
}
- public List> getNetworkTransmitters() {
+ public List> getNetworkTransmitters() {
return Collections.unmodifiableList(allNetworkTransmitters);
}
+ public void addSecurityManager(final Supplier supplier) {
+ allSecurityManagers.add(supplier);
+ }
+
+ public List> getSecurityManagers() {
+ return Collections.unmodifiableList(allSecurityManagers);
+ }
+
public Item getNetworkCard() {
return requireNonNull(networkCard).get();
}
@@ -415,4 +430,20 @@ public PortableGridBlockItem getCreativePortableGrid() {
public void setCreativePortableGrid(final Supplier supplier) {
this.creativePortableGrid = supplier;
}
+
+ public SecurityCardItem getSecurityCard() {
+ return requireNonNull(securityCard).get();
+ }
+
+ public void setSecurityCard(final Supplier securityCard) {
+ this.securityCard = securityCard;
+ }
+
+ public FallbackSecurityCardItem getFallbackSecurityCard() {
+ return requireNonNull(fallbackSecurityCard).get();
+ }
+
+ public void setFallbackSecurityCard(final Supplier fallbackSecurityCard) {
+ this.fallbackSecurityCard = fallbackSecurityCard;
+ }
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Menus.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Menus.java
index 98e8a9e96..197b59973 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Menus.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Menus.java
@@ -11,6 +11,9 @@
import com.refinedmods.refinedstorage2.platform.common.iface.InterfaceContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.importer.ImporterContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.networking.NetworkTransmitterContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.security.FallbackSecurityCardContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityCardContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityManagerContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.storage.diskdrive.DiskDriveContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.storage.externalstorage.ExternalStorageContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.storage.portablegrid.PortableGridBlockContainerMenu;
@@ -71,6 +74,12 @@ public final class Menus {
private Supplier> portableGridBlock;
@Nullable
private Supplier> portableGridItem;
+ @Nullable
+ private Supplier> securityCard;
+ @Nullable
+ private Supplier> fallbackSecurityCard;
+ @Nullable
+ private Supplier> securityManager;
private Menus() {
}
@@ -234,4 +243,30 @@ public MenuType getPortableGridItem() {
public void setPortableGridItem(final Supplier> portableGridItem) {
this.portableGridItem = portableGridItem;
}
+
+ public MenuType getSecurityCard() {
+ return requireNonNull(securityCard).get();
+ }
+
+ public void setSecurityCard(final Supplier> securityCard) {
+ this.securityCard = securityCard;
+ }
+
+ public MenuType getFallbackSecurityCard() {
+ return requireNonNull(fallbackSecurityCard).get();
+ }
+
+ public void setFallbackSecurityCard(
+ final Supplier> fallbackSecurityCard
+ ) {
+ this.fallbackSecurityCard = fallbackSecurityCard;
+ }
+
+ public MenuType getSecurityManager() {
+ return requireNonNull(securityManager).get();
+ }
+
+ public void setSecurityManager(final Supplier> securityManager) {
+ this.securityManager = securityManager;
+ }
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Tags.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Tags.java
index be33cae1e..c46aeeb72 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Tags.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Tags.java
@@ -23,6 +23,7 @@ public final class Tags {
public static final TagKey
- WIRELESS_TRANSMITTERS = createTag("wireless_transmitters");
public static final TagKey
- NETWORK_RECEIVERS = createTag("network_receivers");
public static final TagKey
- NETWORK_TRANSMITTERS = createTag("network_transmitters");
+ public static final TagKey
- SECURITY_MANAGERS = createTag("security_managers");
private Tags() {
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/AbstractControllerBlock.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/AbstractControllerBlock.java
index 7acfa9e89..0619f81fe 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/AbstractControllerBlock.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/AbstractControllerBlock.java
@@ -27,7 +27,7 @@ public abstract class AbstractControllerBlock
ControllerEnergyType.class
);
- protected final MutableComponent name;
+ private final MutableComponent name;
private final ControllerType type;
private final ControllerBlockEntityTicker ticker;
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerBlock.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerBlock.java
index 68f216341..1359ff2dc 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerBlock.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerBlock.java
@@ -20,6 +20,6 @@ public BlockColorMap, ControllerBlo
@Override
public ControllerBlockItem createBlockItem() {
- return new ControllerBlockItem(this, name);
+ return new ControllerBlockItem(this);
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerBlockEntity.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerBlockEntity.java
index ca239b878..e7d99bc8c 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerBlockEntity.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerBlockEntity.java
@@ -7,7 +7,7 @@
import com.refinedmods.refinedstorage2.platform.common.Platform;
import com.refinedmods.refinedstorage2.platform.common.content.BlockEntities;
import com.refinedmods.refinedstorage2.platform.common.content.ContentNames;
-import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ExtendedMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeMenuProvider;
import com.refinedmods.refinedstorage2.platform.common.support.energy.BlockEntityEnergyStorage;
import com.refinedmods.refinedstorage2.platform.common.support.energy.CreativeEnergyStorage;
import com.refinedmods.refinedstorage2.platform.common.support.energy.ItemBlockEnergyStorage;
@@ -29,7 +29,7 @@
import org.slf4j.LoggerFactory;
public class ControllerBlockEntity extends AbstractRedstoneModeNetworkNodeContainerBlockEntity
- implements ExtendedMenuProvider, TransferableBlockEntityEnergy {
+ implements NetworkNodeMenuProvider, TransferableBlockEntityEnergy {
private static final Logger LOGGER = LoggerFactory.getLogger(ControllerBlockEntity.class);
private static final String TAG_CAPACITY = "capacity";
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerBlockItem.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerBlockItem.java
index d78218c88..984707d77 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerBlockItem.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerBlockItem.java
@@ -11,29 +11,32 @@
import java.util.Optional;
import net.minecraft.network.chat.Component;
+import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.inventory.tooltip.TooltipComponent;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.state.BlockState;
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createTranslation;
public class ControllerBlockItem extends AbstractEnergyBlockItem {
- private final Component name;
+ private final Block block;
- ControllerBlockItem(final Block block, final Component displayName) {
+ ControllerBlockItem(final Block block) {
super(block, new Item.Properties().stacksTo(1), PlatformApi.INSTANCE.getEnergyItemHelper());
- this.name = displayName;
+ this.block = block;
}
@Override
public Component getDescription() {
- return name;
+ return block.getName();
}
@Override
public Component getName(final ItemStack stack) {
- return name;
+ return block.getName();
}
@Override
@@ -51,4 +54,13 @@ public EnergyStorage createEnergyStorage(final ItemStack stack) {
BlockEntities.INSTANCE.getController()
);
}
+
+ @Override
+ protected boolean placeBlock(final BlockPlaceContext ctx, final BlockState state) {
+ if (ctx.getPlayer() instanceof ServerPlayer serverPlayer
+ && !(PlatformApi.INSTANCE.canPlaceNetworkNode(serverPlayer, ctx.getLevel(), ctx.getClickedPos(), state))) {
+ return false;
+ }
+ return super.placeBlock(ctx, state);
+ }
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/CreativeControllerBlock.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/CreativeControllerBlock.java
index a2b071dca..24df80bb6 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/CreativeControllerBlock.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/CreativeControllerBlock.java
@@ -22,6 +22,6 @@ CreativeControllerBlockItem> getBlockColorMap() {
@Override
public CreativeControllerBlockItem createBlockItem() {
- return new CreativeControllerBlockItem(this, name);
+ return new CreativeControllerBlockItem(this);
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/CreativeControllerBlockItem.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/CreativeControllerBlockItem.java
index 026576d86..c5f8fad45 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/CreativeControllerBlockItem.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/CreativeControllerBlockItem.java
@@ -1,15 +1,17 @@
package com.refinedmods.refinedstorage2.platform.common.controller;
-import com.refinedmods.refinedstorage2.platform.common.support.NamedBlockItem;
+import com.refinedmods.refinedstorage2.platform.common.support.NetworkNodeBlockItem;
-import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createTranslation;
-public class CreativeControllerBlockItem extends NamedBlockItem {
- CreativeControllerBlockItem(final Block block, final Component name) {
- super(block, new Item.Properties().stacksTo(1), name, createTranslation("item", "creative_controller.help"));
+public class CreativeControllerBlockItem extends NetworkNodeBlockItem {
+ private static final MutableComponent HELP = createTranslation("item", "creative_controller.help");
+
+ CreativeControllerBlockItem(final Block block) {
+ super(block, new Item.Properties().stacksTo(1), HELP);
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/detector/DetectorBlock.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/detector/DetectorBlock.java
index 195db2cc0..892333d3e 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/detector/DetectorBlock.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/detector/DetectorBlock.java
@@ -6,9 +6,10 @@
import com.refinedmods.refinedstorage2.platform.common.content.Blocks;
import com.refinedmods.refinedstorage2.platform.common.support.AbstractBlockEntityTicker;
import com.refinedmods.refinedstorage2.platform.common.support.AbstractDirectionalBlock;
+import com.refinedmods.refinedstorage2.platform.common.support.BaseBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.BlockItemProvider;
import com.refinedmods.refinedstorage2.platform.common.support.ColorableBlock;
-import com.refinedmods.refinedstorage2.platform.common.support.NamedBlockItem;
+import com.refinedmods.refinedstorage2.platform.common.support.NetworkNodeBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.direction.DirectionType;
import com.refinedmods.refinedstorage2.platform.common.support.direction.DirectionTypeImpl;
import com.refinedmods.refinedstorage2.platform.common.support.network.NetworkNodeBlockEntityTicker;
@@ -18,7 +19,6 @@
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.item.DyeColor;
-import net.minecraft.world.item.Item;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
@@ -36,8 +36,8 @@
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createTranslation;
public class DetectorBlock extends AbstractDirectionalBlock
- implements ColorableBlock, SimpleWaterloggedBlock, EntityBlock,
- BlockItemProvider {
+ implements ColorableBlock, SimpleWaterloggedBlock, EntityBlock,
+ BlockItemProvider {
public static final BooleanProperty POWERED = BooleanProperty.create("powered");
private static final Component HELP = createTranslation("item", "detector.help");
@@ -75,7 +75,7 @@ protected void createBlockStateDefinition(final StateDefinition.Builder getBlockColorMap() {
+ public BlockColorMap getBlockColorMap() {
return Blocks.INSTANCE.getDetector();
}
@@ -137,7 +137,7 @@ public int getSignal(final BlockState state,
}
@Override
- public NamedBlockItem createBlockItem() {
- return new NamedBlockItem(this, new Item.Properties(), name, HELP);
+ public BaseBlockItem createBlockItem() {
+ return new NetworkNodeBlockItem(this, HELP);
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/detector/DetectorBlockEntity.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/detector/DetectorBlockEntity.java
index 680e685a0..87bf4875c 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/detector/DetectorBlockEntity.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/detector/DetectorBlockEntity.java
@@ -13,7 +13,7 @@
import com.refinedmods.refinedstorage2.platform.common.support.AbstractDirectionalBlock;
import com.refinedmods.refinedstorage2.platform.common.support.FilterWithFuzzyMode;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.AbstractSingleAmountContainerMenu;
-import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ExtendedMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeMenuProvider;
import com.refinedmods.refinedstorage2.platform.common.support.network.AbstractRedstoneModeNetworkNodeContainerBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerImpl;
@@ -35,7 +35,7 @@
import org.slf4j.LoggerFactory;
public class DetectorBlockEntity extends AbstractRedstoneModeNetworkNodeContainerBlockEntity
- implements ExtendedMenuProvider {
+ implements NetworkNodeMenuProvider {
private static final Logger LOGGER = LoggerFactory.getLogger(DetectorBlockEntity.class);
private static final String TAG_AMOUNT = "amount";
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/exporter/ExporterBlock.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/exporter/ExporterBlock.java
index b7d004666..501b1c5cb 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/exporter/ExporterBlock.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/exporter/ExporterBlock.java
@@ -5,10 +5,11 @@
import com.refinedmods.refinedstorage2.platform.common.content.Blocks;
import com.refinedmods.refinedstorage2.platform.common.support.AbstractBlockEntityTicker;
import com.refinedmods.refinedstorage2.platform.common.support.AbstractDirectionalCableBlock;
+import com.refinedmods.refinedstorage2.platform.common.support.BaseBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.BlockItemProvider;
import com.refinedmods.refinedstorage2.platform.common.support.ColorableBlock;
import com.refinedmods.refinedstorage2.platform.common.support.DirectionalCableBlockShapes;
-import com.refinedmods.refinedstorage2.platform.common.support.NamedBlockItem;
+import com.refinedmods.refinedstorage2.platform.common.support.NetworkNodeBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.network.NetworkNodeBlockEntityTicker;
import java.util.HashMap;
@@ -20,7 +21,6 @@
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.item.DyeColor;
-import net.minecraft.world.item.Item;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.EntityBlock;
import net.minecraft.world.level.block.entity.BlockEntity;
@@ -32,7 +32,7 @@
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createTranslation;
public class ExporterBlock extends AbstractDirectionalCableBlock
- implements ColorableBlock, EntityBlock, BlockItemProvider {
+ implements ColorableBlock, EntityBlock, BlockItemProvider {
private static final Component HELP = createTranslation("item", "exporter.help");
private static final Map SHAPE_CACHE = new HashMap<>();
private static final AbstractBlockEntityTicker TICKER =
@@ -65,7 +65,7 @@ public BlockEntityTicker getTicker(final Level level,
}
@Override
- public BlockColorMap getBlockColorMap() {
+ public BlockColorMap getBlockColorMap() {
return Blocks.INSTANCE.getExporter();
}
@@ -87,7 +87,7 @@ public MutableComponent getName() {
}
@Override
- public NamedBlockItem createBlockItem() {
- return new NamedBlockItem(this, new Item.Properties(), name, HELP);
+ public BaseBlockItem createBlockItem() {
+ return new NetworkNodeBlockItem(this, HELP);
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/AbstractGridBlockEntity.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/AbstractGridBlockEntity.java
index 51277a021..ba9054fae 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/AbstractGridBlockEntity.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/AbstractGridBlockEntity.java
@@ -2,18 +2,21 @@
import com.refinedmods.refinedstorage2.api.grid.operations.GridOperations;
import com.refinedmods.refinedstorage2.api.grid.watcher.GridWatcher;
-import com.refinedmods.refinedstorage2.api.network.component.StorageNetworkComponent;
+import com.refinedmods.refinedstorage2.api.network.Network;
import com.refinedmods.refinedstorage2.api.network.impl.node.container.NetworkNodeContainerPriorities;
import com.refinedmods.refinedstorage2.api.network.impl.node.grid.GridNetworkNode;
+import com.refinedmods.refinedstorage2.api.network.storage.StorageNetworkComponent;
import com.refinedmods.refinedstorage2.api.storage.Actor;
import com.refinedmods.refinedstorage2.api.storage.Storage;
import com.refinedmods.refinedstorage2.api.storage.TrackedResourceAmount;
import com.refinedmods.refinedstorage2.api.storage.channel.StorageChannel;
import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import com.refinedmods.refinedstorage2.platform.api.grid.Grid;
+import com.refinedmods.refinedstorage2.platform.api.security.PlatformSecurityNetworkComponent;
+import com.refinedmods.refinedstorage2.platform.api.storage.PlayerActor;
import com.refinedmods.refinedstorage2.platform.api.support.resource.ResourceType;
import com.refinedmods.refinedstorage2.platform.common.support.AbstractDirectionalBlock;
-import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ExtendedMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeMenuProvider;
import com.refinedmods.refinedstorage2.platform.common.support.network.AbstractRedstoneModeNetworkNodeContainerBlockEntity;
import java.util.List;
@@ -28,7 +31,7 @@
public abstract class AbstractGridBlockEntity
extends AbstractRedstoneModeNetworkNodeContainerBlockEntity
- implements Grid, ExtendedMenuProvider {
+ implements Grid, NetworkNodeMenuProvider {
protected AbstractGridBlockEntity(final BlockEntityType extends AbstractGridBlockEntity> type,
final BlockPos pos,
final BlockState state,
@@ -49,11 +52,12 @@ public List getResources(final Class extends Actor> act
}
@Override
- public GridOperations createOperations(final ResourceType resourceType,
- final Actor actor) {
- final StorageChannel storageChannel = requireNonNull(getNode().getNetwork())
- .getComponent(StorageNetworkComponent.class);
- return resourceType.createGridOperations(storageChannel, actor);
+ public GridOperations createOperations(final ResourceType resourceType, final ServerPlayer player) {
+ final Network network = requireNonNull(getNode().getNetwork());
+ final StorageChannel storageChannel = network.getComponent(StorageNetworkComponent.class);
+ final PlatformSecurityNetworkComponent security = network.getComponent(PlatformSecurityNetworkComponent.class);
+ final GridOperations operations = resourceType.createGridOperations(storageChannel, new PlayerActor(player));
+ return new SecuredGridOperations(player, security, operations);
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/AbstractGridContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/AbstractGridContainerMenu.java
index bf2de122c..e3c5d027b 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/AbstractGridContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/AbstractGridContainerMenu.java
@@ -33,6 +33,8 @@
import com.refinedmods.refinedstorage2.platform.common.grid.strategy.ClientGridScrollingStrategy;
import com.refinedmods.refinedstorage2.platform.common.grid.view.CompositeGridResourceFactory;
import com.refinedmods.refinedstorage2.platform.common.support.AbstractBaseContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceTypes;
+import com.refinedmods.refinedstorage2.platform.common.support.stretching.ScreenSizeListener;
import com.refinedmods.refinedstorage2.platform.common.util.PacketUtil;
import com.refinedmods.refinedstorage2.query.lexer.LexerTokenMappings;
import com.refinedmods.refinedstorage2.query.parser.ParserOperatorMappings;
@@ -57,7 +59,7 @@
import static java.util.Objects.requireNonNull;
public abstract class AbstractGridContainerMenu extends AbstractBaseContainerMenu
- implements GridWatcher, GridInsertionStrategy, GridExtractionStrategy, GridScrollingStrategy {
+ implements GridWatcher, GridInsertionStrategy, GridExtractionStrategy, GridScrollingStrategy, ScreenSizeListener {
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractGridContainerMenu.class);
private static final GridQueryParserImpl QUERY_PARSER = new GridQueryParserImpl(
LexerTokenMappings.DEFAULT_MAPPINGS,
@@ -82,8 +84,6 @@ public abstract class AbstractGridContainerMenu extends AbstractBaseContainerMen
private GridExtractionStrategy extractionStrategy;
@Nullable
private GridScrollingStrategy scrollingStrategy;
- @Nullable
- private Runnable sizeChangedListener;
private GridSynchronizer synchronizer;
@Nullable
private ResourceType resourceTypeFilter;
@@ -141,8 +141,8 @@ protected AbstractGridContainerMenu(
this.grid = grid;
this.grid.addWatcher(this, PlayerActor.class);
- this.synchronizer = PlatformApi.INSTANCE.getGridSynchronizerRegistry().getDefault();
- initStrategies();
+ this.synchronizer = NoopGridSynchronizer.INSTANCE;
+ initStrategies((ServerPlayer) playerInventory.player);
}
private Predicate filterStorageChannel() {
@@ -172,10 +172,6 @@ public void onResourceUpdate(final ResourceKey resource,
view.onChange(resource, amount, trackedResource);
}
- public void setSizeChangedListener(@Nullable final Runnable sizeChangedListener) {
- this.sizeChangedListener = sizeChangedListener;
- }
-
public GridSortingDirection getSortingDirection() {
return Platform.INSTANCE.getConfig().getGrid().getSortingDirection();
}
@@ -196,17 +192,6 @@ public void setSortingType(final GridSortingTypes sortingType) {
view.sort();
}
- public GridSize getSize() {
- return Platform.INSTANCE.getConfig().getGrid().getSize();
- }
-
- public void setSize(final GridSize size) {
- Platform.INSTANCE.getConfig().getGrid().setSize(size);
- if (sizeChangedListener != null) {
- sizeChangedListener.run();
- }
- }
-
public void setSearchBox(final GridSearchBox searchBox) {
this.searchBox = searchBox;
registerViewUpdatingListener(searchBox);
@@ -250,7 +235,8 @@ public void removed(final Player playerEntity) {
}
}
- public void addSlots(final int playerInventoryY) {
+ @Override
+ public void onScreenReady(final int playerInventoryY) {
resetSlots();
addPlayerInventory(playerInventory, 8, playerInventoryY);
}
@@ -276,7 +262,7 @@ public void onChanged(
if (!(resource instanceof PlatformResourceKey platformResource)) {
return;
}
- LOGGER.info("{} received a change of {} for {}", this, change, resource);
+ LOGGER.debug("{} received a change of {} for {}", this, change, resource);
Platform.INSTANCE.getServerToClientCommunications().sendGridUpdate(
(ServerPlayer) playerInventory.player,
platformResource,
@@ -288,25 +274,25 @@ public void onChanged(
@Override
public void invalidate() {
if (playerInventory.player instanceof ServerPlayer serverPlayer) {
- initStrategies();
+ initStrategies(serverPlayer);
Platform.INSTANCE.getServerToClientCommunications().sendGridClear(serverPlayer);
}
}
- private void initStrategies() {
+ private void initStrategies(final ServerPlayer player) {
this.insertionStrategy = PlatformApi.INSTANCE.createGridInsertionStrategy(
this,
- playerInventory.player,
+ player,
requireNonNull(grid)
);
this.extractionStrategy = PlatformApi.INSTANCE.createGridExtractionStrategy(
this,
- playerInventory.player,
+ player,
requireNonNull(grid)
);
this.scrollingStrategy = PlatformApi.INSTANCE.createGridScrollingStrategy(
this,
- playerInventory.player,
+ player,
requireNonNull(grid)
);
}
@@ -337,7 +323,7 @@ private GridSynchronizer loadSynchronizer() {
.getGrid()
.getSynchronizer()
.flatMap(id -> PlatformApi.INSTANCE.getGridSynchronizerRegistry().get(id))
- .orElse(PlatformApi.INSTANCE.getGridSynchronizerRegistry().getDefault());
+ .orElse(NoopGridSynchronizer.INSTANCE);
}
@Nullable
@@ -362,20 +348,20 @@ public ResourceType getResourceType() {
public void toggleSynchronizer() {
final PlatformRegistry registry = PlatformApi.INSTANCE.getGridSynchronizerRegistry();
final Config.GridEntry config = Platform.INSTANCE.getConfig().getGrid();
- final GridSynchronizer newSynchronizer = registry.next(getSynchronizer());
- if (newSynchronizer == registry.getDefault()) {
+ final GridSynchronizer newSynchronizer = registry.nextOrNullIfLast(getSynchronizer());
+ if (newSynchronizer == null) {
config.clearSynchronizer();
} else {
registry.getId(newSynchronizer).ifPresent(config::setSynchronizer);
}
- this.synchronizer = newSynchronizer;
+ this.synchronizer = newSynchronizer == null ? NoopGridSynchronizer.INSTANCE : newSynchronizer;
}
public void toggleResourceType() {
final PlatformRegistry registry = PlatformApi.INSTANCE.getResourceTypeRegistry();
final Config.GridEntry config = Platform.INSTANCE.getConfig().getGrid();
final ResourceType newResourceType = resourceTypeFilter == null
- ? registry.getDefault()
+ ? ResourceTypes.ITEM
: registry.nextOrNullIfLast(resourceTypeFilter);
if (newResourceType == null) {
config.clearResourceType();
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridBlock.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridBlock.java
index ea5be5efe..5221ffcb8 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridBlock.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridBlock.java
@@ -4,8 +4,9 @@
import com.refinedmods.refinedstorage2.platform.common.content.BlockEntities;
import com.refinedmods.refinedstorage2.platform.common.content.Blocks;
import com.refinedmods.refinedstorage2.platform.common.support.AbstractBlockEntityTicker;
+import com.refinedmods.refinedstorage2.platform.common.support.BaseBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.BlockItemProvider;
-import com.refinedmods.refinedstorage2.platform.common.support.NamedBlockItem;
+import com.refinedmods.refinedstorage2.platform.common.support.NetworkNodeBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.network.NetworkNodeBlockEntityTicker;
import javax.annotation.Nullable;
@@ -14,7 +15,6 @@
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.item.DyeColor;
-import net.minecraft.world.item.Item;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityTicker;
@@ -23,8 +23,8 @@
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createTranslation;
-public class CraftingGridBlock extends AbstractGridBlock
- implements BlockItemProvider {
+public class CraftingGridBlock extends AbstractGridBlock
+ implements BlockItemProvider {
private static final Component HELP = createTranslation("item", "crafting_grid.help");
private static final AbstractBlockEntityTicker TICKER = new NetworkNodeBlockEntityTicker<>(
BlockEntities.INSTANCE::getCraftingGrid,
@@ -36,7 +36,7 @@ public CraftingGridBlock(final DyeColor color, final MutableComponent name) {
}
@Override
- public BlockColorMap getBlockColorMap() {
+ public BlockColorMap