diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
index 247bb242b..de53558c3 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.yml
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -35,7 +35,7 @@ body:
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
+ - Minecraft 1.21
validations:
required: true
- type: input
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index cc884518b..26ea270df 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -8,7 +8,7 @@ on:
types: [ opened, synchronize, reopened ]
jobs:
build:
- uses: refinedmods/refinedarchitect/.github/workflows/build.yml@v0.13.4
+ uses: refinedmods/refinedarchitect/.github/workflows/build.yml@v0.14.3
with:
gametests: true
secrets: inherit
diff --git a/.github/workflows/draft-release.yml b/.github/workflows/draft-release.yml
index 5ea1d94ee..2498347be 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.13.4
+ uses: refinedmods/refinedarchitect/.github/workflows/draft-release.yml@v0.14.3
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 9f9ee90e4..fbe1751c1 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.13.4
\ No newline at end of file
+ uses: refinedmods/refinedarchitect/.github/workflows/issue-for-unsupported-version.yml@v0.14.3
\ No newline at end of file
diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml
index d0391af4b..de7a0f22c 100644
--- a/.github/workflows/publish-release.yml
+++ b/.github/workflows/publish-release.yml
@@ -7,7 +7,8 @@ on:
- closed
jobs:
publish-release:
- uses: refinedmods/refinedarchitect/.github/workflows/publish-release.yml@v0.13.4
+ uses: refinedmods/refinedarchitect/.github/workflows/publish-release.yml@v0.14.3
secrets: inherit
with:
project-name: 'Refined Storage'
+ gametests: true
diff --git a/.github/workflows/resolved-issue-locking.yml b/.github/workflows/resolved-issue-locking.yml
index 16b1cf9e1..46aca1095 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.13.4
\ No newline at end of file
+ uses: refinedmods/refinedarchitect/.github/workflows/resolved-issue-locking.yml@v0.14.3
\ No newline at end of file
diff --git a/.github/workflows/validate-branch-name.yml b/.github/workflows/validate-branch-name.yml
index b2ddb776a..48b3acb59 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.13.4
\ No newline at end of file
+ uses: refinedmods/refinedarchitect/.github/workflows/validate-branch-name.yml@v0.14.3
\ No newline at end of file
diff --git a/.github/workflows/validate-changelog.yml b/.github/workflows/validate-changelog.yml
index 2adc54f63..797504050 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.13.4
\ No newline at end of file
+ uses: refinedmods/refinedarchitect/.github/workflows/validate-changelog.yml@v0.14.3
\ No newline at end of file
diff --git a/.github/workflows/validate-commit-messages.yml b/.github/workflows/validate-commit-messages.yml
index 8ef06cd33..72b08ed2e 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.13.4
\ No newline at end of file
+ uses: refinedmods/refinedarchitect/.github/workflows/validate-commit-messages.yml@v0.14.3
\ No newline at end of file
diff --git a/.idea/dictionaries/refinedstorage2.xml b/.idea/dictionaries/refinedstorage2.xml
index 358caf40a..aeda850ec 100644
--- a/.idea/dictionaries/refinedstorage2.xml
+++ b/.idea/dictionaries/refinedstorage2.xml
@@ -2,6 +2,7 @@
autocrafting
+ emissive
redstone
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ddf7695d6..82dab60c1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,18 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
+### Added
+
+- Ported to Minecraft 1.21.
+
+### Fixed
+
+- Regulator Upgrade having wrong GUI title.
+
+### Changed
+
+- Internal data format for storages. Storages from milestone 3 are incompatible and will not be transferred.
+
## [2.0.0-milestone.3.14] - 2024-06-28
### Added
diff --git a/gradle.properties b/gradle.properties
index 1e6a9cb58..a8d260d7d 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,3 +1,2 @@
-noIndiumVersion=1.1.0+1.20.4
# Gradle
org.gradle.jvmargs=-Xmx1G
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index b82aa23a4..a4413138c 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
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 0fb88e195..ffec6dfd1 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
@@ -52,7 +52,6 @@
import javax.annotation.Nullable;
import net.minecraft.core.BlockPos;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
@@ -72,6 +71,8 @@ public interface PlatformApi {
PlatformRegistry getStorageTypeRegistry();
+ StorageRepository getClientStorageRepository();
+
StorageRepository getStorageRepository(Level level);
StorageContainerItemHelper getStorageContainerItemHelper();
@@ -106,8 +107,6 @@ public interface PlatformApi {
PlatformRegistry getGridSynchronizerRegistry();
- void writeGridScreenOpeningData(Grid grid, FriendlyByteBuf buf);
-
UpgradeRegistry getUpgradeRegistry();
BuiltinUpgradeDestinations getBuiltinUpgradeDestinations();
@@ -189,10 +188,6 @@ EnergyStorage asBlockItemEnergyStorage(
PlatformRegistry getSlotReferenceFactoryRegistry();
- void writeSlotReference(SlotReference slotReference, FriendlyByteBuf buf);
-
- Optional getSlotReference(FriendlyByteBuf buf);
-
void addSlotReferenceProvider(SlotReferenceProvider slotReferenceProvider);
SlotReference createInventorySlotReference(Player player, InteractionHand hand);
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 abfbb6044..234263513 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
@@ -52,7 +52,6 @@
import javax.annotation.Nullable;
import net.minecraft.core.BlockPos;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
@@ -81,6 +80,11 @@ public PlatformRegistry getStorageTypeRegistry() {
return ensureLoaded().getStorageTypeRegistry();
}
+ @Override
+ public StorageRepository getClientStorageRepository() {
+ return ensureLoaded().getClientStorageRepository();
+ }
+
@Override
public StorageRepository getStorageRepository(final Level level) {
return ensureLoaded().getStorageRepository(level);
@@ -166,11 +170,6 @@ public PlatformRegistry getGridSynchronizerRegistry() {
return ensureLoaded().getGridSynchronizerRegistry();
}
- @Override
- public void writeGridScreenOpeningData(final Grid grid, final FriendlyByteBuf buf) {
- ensureLoaded().writeGridScreenOpeningData(grid, buf);
- }
-
@Override
public UpgradeRegistry getUpgradeRegistry() {
return ensureLoaded().getUpgradeRegistry();
@@ -358,16 +357,6 @@ public PlatformRegistry getSlotReferenceFactoryRegistry()
return ensureLoaded().getSlotReferenceFactoryRegistry();
}
- @Override
- public void writeSlotReference(final SlotReference slotReference, final FriendlyByteBuf buf) {
- ensureLoaded().writeSlotReference(slotReference, buf);
- }
-
- @Override
- public Optional getSlotReference(final FriendlyByteBuf buf) {
- return ensureLoaded().getSlotReference(buf);
- }
-
@Override
public void addSlotReferenceProvider(final SlotReferenceProvider slotReferenceProvider) {
ensureLoaded().addSlotReferenceProvider(slotReferenceProvider);
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/configurationcard/ConfigurationCardTarget.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/configurationcard/ConfigurationCardTarget.java
index e3f8c79d0..846a96fe1 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/configurationcard/ConfigurationCardTarget.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/configurationcard/ConfigurationCardTarget.java
@@ -3,6 +3,7 @@
import java.util.Collections;
import java.util.List;
+import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.item.Item;
import org.apiguardian.api.API;
@@ -12,9 +13,9 @@
*/
@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.2")
public interface ConfigurationCardTarget {
- void writeConfiguration(CompoundTag tag);
+ void writeConfiguration(CompoundTag tag, HolderLookup.Provider provider);
- void readConfiguration(CompoundTag tag);
+ void readConfiguration(CompoundTag tag, HolderLookup.Provider provider);
default List- getUpgradeItems() {
return Collections.emptyList();
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/AbstractStorageContainerBlockItem.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/AbstractStorageContainerBlockItem.java
index f4c499eae..7173fe2e6 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/AbstractStorageContainerBlockItem.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/AbstractStorageContainerBlockItem.java
@@ -71,15 +71,12 @@ private void updateBlockEntityTag(final BlockPos pos,
@Override
public void appendHoverText(final ItemStack stack,
- @Nullable final Level level,
+ final TooltipContext context,
final List tooltip,
- final TooltipFlag context) {
- super.appendHoverText(stack, level, tooltip, context);
- if (level == null) {
- return;
- }
- final StorageRepository storageRepository = PlatformApi.INSTANCE.getStorageRepository(level);
- helper.appendToTooltip(stack, storageRepository, tooltip, context, this::formatAmount, hasCapacity());
+ final TooltipFlag flag) {
+ super.appendHoverText(stack, context, tooltip, flag);
+ final StorageRepository storageRepository = PlatformApi.INSTANCE.getClientStorageRepository();
+ helper.appendToTooltip(stack, storageRepository, tooltip, flag, this::formatAmount, hasCapacity());
}
protected abstract boolean hasCapacity();
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/AbstractStorageContainerItem.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/AbstractStorageContainerItem.java
index f82f05397..b9d56b401 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/AbstractStorageContainerItem.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/AbstractStorageContainerItem.java
@@ -1,6 +1,5 @@
package com.refinedmods.refinedstorage2.platform.api.storage;
-import com.refinedmods.refinedstorage2.api.storage.Storage;
import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import java.util.List;
@@ -28,8 +27,8 @@ protected AbstractStorageContainerItem(final Properties properties, final Storag
}
@Override
- public Optional resolve(final StorageRepository storageRepository, final ItemStack stack) {
- return helper.resolve(storageRepository, stack);
+ public Optional resolve(final StorageRepository storageRepository, final ItemStack stack) {
+ return helper.resolveStorage(storageRepository, stack);
}
@Override
@@ -52,30 +51,27 @@ public void inventoryTick(final ItemStack stack,
final int slot,
final boolean selected) {
super.inventoryTick(stack, level, entity, slot, selected);
- if (!level.isClientSide() && !stack.hasTag() && entity instanceof Player) {
+ if (!level.isClientSide() && !helper.hasStorage(stack) && entity instanceof Player) {
final StorageRepository storageRepository = PlatformApi.INSTANCE.getStorageRepository(level);
- helper.set(storageRepository, stack, createStorage(storageRepository));
+ helper.setStorage(storageRepository, stack, createStorage(storageRepository));
}
}
@Override
public void appendHoverText(final ItemStack stack,
- @Nullable final Level level,
+ final TooltipContext context,
final List tooltip,
- final TooltipFlag context) {
- super.appendHoverText(stack, level, tooltip, context);
- if (level == null) {
- return;
- }
- final StorageRepository storageRepository = PlatformApi.INSTANCE.getStorageRepository(level);
- helper.appendToTooltip(stack, storageRepository, tooltip, context, this::formatAmount, hasCapacity());
+ final TooltipFlag flag) {
+ super.appendHoverText(stack, context, tooltip, flag);
+ final StorageRepository storageRepository = PlatformApi.INSTANCE.getClientStorageRepository();
+ helper.appendToTooltip(stack, storageRepository, tooltip, flag, this::formatAmount, hasCapacity());
}
protected abstract boolean hasCapacity();
protected abstract String formatAmount(long amount);
- protected abstract Storage createStorage(StorageRepository storageRepository);
+ protected abstract SerializableStorage createStorage(StorageRepository storageRepository);
protected abstract ItemStack createPrimaryDisassemblyByproduct(int count);
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/SerializableStorage.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/SerializableStorage.java
index 801799a1e..57732b1e4 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/SerializableStorage.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/SerializableStorage.java
@@ -1,8 +1,18 @@
package com.refinedmods.refinedstorage2.platform.api.storage;
+import com.refinedmods.refinedstorage2.api.storage.Storage;
+import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
+
+import com.mojang.serialization.Codec;
import org.apiguardian.api.API;
@API(status = API.Status.STABLE, since = "2.0.0-milestone.1.4")
-public interface SerializableStorage {
+public interface SerializableStorage extends Storage {
StorageType getType();
+
+ static Codec getCodec(final Runnable listener) {
+ return PlatformApi.INSTANCE.getStorageTypeRegistry()
+ .codec()
+ .dispatch(SerializableStorage::getType, storage -> storage.getMapCodec(listener));
+ }
}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageContainerItem.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageContainerItem.java
index 9d33a3bfa..b41fe46c4 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageContainerItem.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageContainerItem.java
@@ -1,7 +1,5 @@
package com.refinedmods.refinedstorage2.platform.api.storage;
-import com.refinedmods.refinedstorage2.api.storage.Storage;
-
import java.util.Optional;
import java.util.function.Predicate;
@@ -10,7 +8,7 @@
@API(status = API.Status.STABLE, since = "2.0.0-milestone.1.0")
public interface StorageContainerItem {
- Optional resolve(StorageRepository storageRepository, ItemStack stack);
+ Optional resolve(StorageRepository storageRepository, ItemStack stack);
Optional getInfo(StorageRepository storageRepository, ItemStack stack);
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageContainerItemHelper.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageContainerItemHelper.java
index c2428eac2..3e0b8131f 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageContainerItemHelper.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageContainerItemHelper.java
@@ -1,7 +1,5 @@
package com.refinedmods.refinedstorage2.platform.api.storage;
-import com.refinedmods.refinedstorage2.api.storage.Storage;
-
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -21,9 +19,11 @@
@API(status = API.Status.STABLE, since = "2.0.0-milestone.2.5")
public interface StorageContainerItemHelper {
- Optional resolve(StorageRepository storageRepository, ItemStack stack);
+ Optional resolveStorage(StorageRepository storageRepository, ItemStack stack);
+
+ void setStorage(StorageRepository storageRepository, ItemStack stack, SerializableStorage storage);
- void set(StorageRepository storageRepository, ItemStack stack, Storage storage);
+ boolean hasStorage(ItemStack stack);
Optional getInfo(StorageRepository storageRepository, ItemStack stack);
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageRepository.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageRepository.java
index 163833237..2ccffb075 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageRepository.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageRepository.java
@@ -1,7 +1,5 @@
package com.refinedmods.refinedstorage2.platform.api.storage;
-import com.refinedmods.refinedstorage2.api.storage.Storage;
-
import java.util.Optional;
import java.util.UUID;
@@ -15,7 +13,7 @@ public interface StorageRepository {
* @param id the id
* @return the storage, if present
*/
- Optional get(UUID id);
+ Optional get(UUID id);
/**
* Sets a storage by ID.
@@ -23,7 +21,7 @@ public interface StorageRepository {
* @param id the id
* @param storage the storage
*/
- void set(UUID id, Storage storage);
+ void set(UUID id, SerializableStorage storage);
/**
* If the storage exists, and is empty, it will remove the storage from the repository.
@@ -31,7 +29,7 @@ public interface StorageRepository {
* @param id the id
* @return the removed storage, if it existed and was empty
*/
- Optional removeIfEmpty(UUID id);
+ Optional removeIfEmpty(UUID id);
/**
* Retrieves info for a given storage ID.
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageType.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageType.java
index af53007ed..7ab762f3a 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageType.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/storage/StorageType.java
@@ -1,20 +1,17 @@
package com.refinedmods.refinedstorage2.platform.api.storage;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
-import com.refinedmods.refinedstorage2.api.storage.Storage;
import javax.annotation.Nullable;
-import net.minecraft.nbt.CompoundTag;
+import com.mojang.serialization.MapCodec;
import org.apiguardian.api.API;
@API(status = API.Status.STABLE, since = "2.0.0-milestone.1.4")
public interface StorageType {
- Storage create(@Nullable Long capacity, Runnable listener);
+ SerializableStorage create(@Nullable Long capacity, Runnable listener);
- Storage fromTag(CompoundTag tag, Runnable listener);
-
- CompoundTag toTag(Storage storage);
+ MapCodec getMapCodec(Runnable listener);
boolean isAllowed(ResourceKey resource);
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/energy/AbstractEnergyBlockItem.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/energy/AbstractEnergyBlockItem.java
index af084eaf1..aa3675f35 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/energy/AbstractEnergyBlockItem.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/energy/AbstractEnergyBlockItem.java
@@ -26,11 +26,11 @@ protected AbstractEnergyBlockItem(final Block block, final Properties properties
@Override
public void appendHoverText(
final ItemStack stack,
- @Nullable final Level level,
+ final TooltipContext context,
final List lines,
final TooltipFlag flag
) {
- super.appendHoverText(stack, level, lines, flag);
+ super.appendHoverText(stack, context, lines, flag);
helper.addTooltip(stack, lines);
}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/energy/AbstractEnergyItem.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/energy/AbstractEnergyItem.java
index 0d3c846b6..1018e5cc6 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/energy/AbstractEnergyItem.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/energy/AbstractEnergyItem.java
@@ -1,13 +1,11 @@
package com.refinedmods.refinedstorage2.platform.api.support.energy;
import java.util.List;
-import javax.annotation.Nullable;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
-import net.minecraft.world.level.Level;
import org.apiguardian.api.API;
@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.1")
@@ -22,11 +20,11 @@ protected AbstractEnergyItem(final Properties properties, final EnergyItemHelper
@Override
public void appendHoverText(
final ItemStack stack,
- @Nullable final Level level,
+ final TooltipContext context,
final List lines,
final TooltipFlag flag
) {
- super.appendHoverText(stack, level, lines, flag);
+ super.appendHoverText(stack, context, lines, flag);
helper.addTooltip(stack, lines);
}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/energy/AbstractNetworkBoundEnergyItem.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/energy/AbstractNetworkBoundEnergyItem.java
index 16770c32c..7b8f679ea 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/energy/AbstractNetworkBoundEnergyItem.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/energy/AbstractNetworkBoundEnergyItem.java
@@ -7,7 +7,6 @@
import java.util.List;
import java.util.Optional;
-import javax.annotation.Nullable;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
@@ -45,10 +44,10 @@ public Optional getTooltipImage(final ItemStack stack) {
@Override
public void appendHoverText(final ItemStack stack,
- @Nullable final Level level,
+ final TooltipContext context,
final List tooltip,
final TooltipFlag flag) {
- super.appendHoverText(stack, level, tooltip, flag);
+ super.appendHoverText(stack, context, tooltip, flag);
networkBoundItemHelper.addTooltip(stack, tooltip);
}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/network/bounditem/SlotReference.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/network/bounditem/SlotReference.java
index 2affc8478..c5a365111 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/network/bounditem/SlotReference.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/network/bounditem/SlotReference.java
@@ -2,7 +2,6 @@
import java.util.Optional;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import org.apiguardian.api.API;
@@ -11,8 +10,6 @@
public interface SlotReference {
boolean isDisabledSlot(int playerSlotIndex);
- void writeToBuffer(FriendlyByteBuf buf);
-
Optional resolve(Player player);
SlotReferenceFactory getFactory();
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/network/bounditem/SlotReferenceFactory.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/network/bounditem/SlotReferenceFactory.java
index 3bd695536..f94b1da7a 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/network/bounditem/SlotReferenceFactory.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/network/bounditem/SlotReferenceFactory.java
@@ -1,9 +1,30 @@
package com.refinedmods.refinedstorage2.platform.api.support.network.bounditem;
-import net.minecraft.network.FriendlyByteBuf;
+import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
+
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.StreamCodec;
+import net.minecraft.resources.ResourceLocation;
import org.apiguardian.api.API;
@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.1")
public interface SlotReferenceFactory {
- SlotReference create(FriendlyByteBuf buf);
+ StreamCodec STREAM_CODEC = StreamCodec.of(
+ (buf, slotReference) -> {
+ final ResourceLocation factoryId = PlatformApi.INSTANCE.getSlotReferenceFactoryRegistry()
+ .getId(slotReference.getFactory())
+ .orElseThrow();
+ buf.writeResourceLocation(factoryId);
+ slotReference.getFactory().getStreamCodec().encode(buf, slotReference);
+ },
+ buf -> {
+ final ResourceLocation factoryId = buf.readResourceLocation();
+ final SlotReferenceFactory factory = PlatformApi.INSTANCE.getSlotReferenceFactoryRegistry()
+ .get(factoryId)
+ .orElseThrow();
+ return factory.getStreamCodec().decode(buf);
+ }
+ );
+
+ StreamCodec getStreamCodec();
}
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 29a490e35..18ead5170 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
@@ -4,6 +4,9 @@
import java.util.Optional;
import javax.annotation.Nullable;
+import com.mojang.serialization.Codec;
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.StreamCodec;
import net.minecraft.resources.ResourceLocation;
import org.apiguardian.api.API;
@@ -48,4 +51,14 @@ public interface PlatformRegistry {
*/
@Nullable
T nextOrNullIfLast(T value);
+
+ /**
+ * @return a {@link Codec} for this registry
+ */
+ Codec codec();
+
+ /**
+ * @return a {@link StreamCodec} for this registry
+ */
+ StreamCodec streamCodec();
}
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/resource/PlatformResourceKey.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/resource/PlatformResourceKey.java
index b6987d6c6..b12fe2831 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/resource/PlatformResourceKey.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/resource/PlatformResourceKey.java
@@ -2,16 +2,10 @@
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.network.FriendlyByteBuf;
import org.apiguardian.api.API;
@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.4")
public interface PlatformResourceKey extends ResourceKey {
- CompoundTag toTag();
-
- void toBuffer(FriendlyByteBuf buf);
-
long getInterfaceExportLimit();
ResourceType getResourceType();
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/resource/ResourceContainer.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/resource/ResourceContainer.java
index 69ada0d77..df726ee9e 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/resource/ResourceContainer.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/resource/ResourceContainer.java
@@ -8,8 +8,8 @@
import java.util.Set;
import javax.annotation.Nullable;
+import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.Container;
import net.minecraft.world.item.ItemStack;
import org.apiguardian.api.API;
@@ -57,13 +57,9 @@ default boolean isEmpty(int index) {
List getResources();
- void writeToUpdatePacket(FriendlyByteBuf buf);
+ CompoundTag toTag(HolderLookup.Provider provider);
- void readFromUpdatePacket(int index, FriendlyByteBuf buf);
-
- CompoundTag toTag();
-
- void fromTag(CompoundTag tag);
+ void fromTag(CompoundTag tag, HolderLookup.Provider provider);
ResourceFactory getPrimaryResourceFactory();
diff --git a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/resource/ResourceType.java b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/resource/ResourceType.java
index a494eb278..f91131952 100644
--- a/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/resource/ResourceType.java
+++ b/refinedstorage2-platform-api/src/main/java/com/refinedmods/refinedstorage2/platform/api/support/resource/ResourceType.java
@@ -8,17 +8,21 @@
import java.util.Optional;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.network.FriendlyByteBuf;
+import com.mojang.serialization.Codec;
+import com.mojang.serialization.MapCodec;
+import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.chat.MutableComponent;
+import net.minecraft.network.codec.StreamCodec;
import net.minecraft.resources.ResourceLocation;
import org.apiguardian.api.API;
@API(status = API.Status.STABLE, since = "2.0.0-milestone.3.4")
public interface ResourceType {
- Optional fromTag(CompoundTag tag);
+ MapCodec getMapCodec();
- PlatformResourceKey fromBuffer(FriendlyByteBuf buf);
+ Codec getCodec();
+
+ StreamCodec getStreamCodec();
MutableComponent getTitle();
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_cable.json
new file mode 100644
index 000000000..ab4bdd4ec
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_constructor.json
new file mode 100644
index 000000000..aeb4c584f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_controller.json
new file mode 100644
index 000000000..a5f09a2e2
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_crafting_grid.json
new file mode 100644
index 000000000..64ac26b02
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_destructor.json
new file mode 100644
index 000000000..f60464039
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_detector.json
new file mode 100644
index 000000000..e38cf2ea4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_disk_interface.json
new file mode 100644
index 000000000..659d2dde5
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_exporter.json
new file mode 100644
index 000000000..187e40bba
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_external_storage.json
new file mode 100644
index 000000000..e6ef99543
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_grid.json
new file mode 100644
index 000000000..79d1c6cc1
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_importer.json
new file mode 100644
index 000000000..7fe610011
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_network_receiver.json
new file mode 100644
index 000000000..ec3342f03
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_network_transmitter.json
new file mode 100644
index 000000000..035a09847
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_relay.json
new file mode 100644
index 000000000..cf3855aba
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_security_manager.json
new file mode 100644
index 000000000..46d3f4359
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/black_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_wireless_transmitter.json
new file mode 100644
index 000000000..71757e533
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/black_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/black_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/black_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_cable.json
new file mode 100644
index 000000000..887460773
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_constructor.json
new file mode 100644
index 000000000..462cb7d94
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_controller.json
new file mode 100644
index 000000000..9fd5c5017
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_crafting_grid.json
new file mode 100644
index 000000000..acac86f6f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_destructor.json
new file mode 100644
index 000000000..bd31981f4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_detector.json
new file mode 100644
index 000000000..23195504e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_disk_interface.json
new file mode 100644
index 000000000..04dbd716c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_exporter.json
new file mode 100644
index 000000000..59349bfd7
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_external_storage.json
new file mode 100644
index 000000000..2f5be5923
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_grid.json
new file mode 100644
index 000000000..918085fc4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_importer.json
new file mode 100644
index 000000000..ff786a7b1
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_network_receiver.json
new file mode 100644
index 000000000..73e02bd65
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_network_transmitter.json
new file mode 100644
index 000000000..9bdfe44f9
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_relay.json
new file mode 100644
index 000000000..c632b9f0d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_security_manager.json
new file mode 100644
index 000000000..b05c0ea9c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/blue_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_wireless_transmitter.json
new file mode 100644
index 000000000..0da302949
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/blue_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/blue_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/blue_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_cable.json
new file mode 100644
index 000000000..1114fc3ba
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_constructor.json
new file mode 100644
index 000000000..0802a7620
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_controller.json
new file mode 100644
index 000000000..695e39e8d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_crafting_grid.json
new file mode 100644
index 000000000..e79e6defe
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_destructor.json
new file mode 100644
index 000000000..07750f9dc
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_detector.json
new file mode 100644
index 000000000..02a226bf0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_disk_interface.json
new file mode 100644
index 000000000..0ec7a7bce
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_exporter.json
new file mode 100644
index 000000000..3ecd6d90d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_external_storage.json
new file mode 100644
index 000000000..ec47de81e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_grid.json
new file mode 100644
index 000000000..bff3a2da3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_importer.json
new file mode 100644
index 000000000..53f6390c3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_network_receiver.json
new file mode 100644
index 000000000..c528846d3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_network_transmitter.json
new file mode 100644
index 000000000..21ad97f20
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_relay.json
new file mode 100644
index 000000000..7cfd069de
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_security_manager.json
new file mode 100644
index 000000000..765f9db04
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/brown_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_wireless_transmitter.json
new file mode 100644
index 000000000..3c993f21e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/brown_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/brown_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/brown_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_cable.json
new file mode 100644
index 000000000..818e8688a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_constructor.json
new file mode 100644
index 000000000..ea007af43
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_controller.json
new file mode 100644
index 000000000..84a7203ef
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_crafting_grid.json
new file mode 100644
index 000000000..a8093f848
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_destructor.json
new file mode 100644
index 000000000..005eb9abb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_detector.json
new file mode 100644
index 000000000..b54a6dbdc
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_disk_interface.json
new file mode 100644
index 000000000..10bafc03f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_exporter.json
new file mode 100644
index 000000000..172dac938
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_external_storage.json
new file mode 100644
index 000000000..6e9d813da
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_grid.json
new file mode 100644
index 000000000..65d08104a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_importer.json
new file mode 100644
index 000000000..99579df09
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_network_receiver.json
new file mode 100644
index 000000000..34a1bd5ba
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_network_transmitter.json
new file mode 100644
index 000000000..11be23a3a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_relay.json
new file mode 100644
index 000000000..1d2891dff
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_security_manager.json
new file mode 100644
index 000000000..bf696080d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/cyan_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_wireless_transmitter.json
new file mode 100644
index 000000000..81d706af3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/cyan_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/cyan_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/cyan_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_cable.json
new file mode 100644
index 000000000..992e45a17
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_constructor.json
new file mode 100644
index 000000000..8fdb3a574
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_controller.json
new file mode 100644
index 000000000..39260847d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_crafting_grid.json
new file mode 100644
index 000000000..374f9b1a8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_destructor.json
new file mode 100644
index 000000000..51c84af5a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_detector.json
new file mode 100644
index 000000000..0b26f68b9
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_disk_interface.json
new file mode 100644
index 000000000..9fc5b6617
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_exporter.json
new file mode 100644
index 000000000..bfef9412b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_external_storage.json
new file mode 100644
index 000000000..c082be2f9
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_grid.json
new file mode 100644
index 000000000..7c30db465
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_importer.json
new file mode 100644
index 000000000..72c4237be
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_network_receiver.json
new file mode 100644
index 000000000..37a41b196
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_network_transmitter.json
new file mode 100644
index 000000000..1eae61331
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_relay.json
new file mode 100644
index 000000000..2bd2d0f3b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_security_manager.json
new file mode 100644
index 000000000..06a91266e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/gray_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_wireless_transmitter.json
new file mode 100644
index 000000000..8869b2e84
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/gray_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/gray_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/gray_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_cable.json
new file mode 100644
index 000000000..cad2e17ac
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_constructor.json
new file mode 100644
index 000000000..49f4a6cb0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_controller.json
new file mode 100644
index 000000000..e9df569ff
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_crafting_grid.json
new file mode 100644
index 000000000..d9455ec6d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_destructor.json
new file mode 100644
index 000000000..2cf25b095
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_detector.json
new file mode 100644
index 000000000..88bc00f52
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_disk_interface.json
new file mode 100644
index 000000000..273634d77
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_exporter.json
new file mode 100644
index 000000000..0784ffe2c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_external_storage.json
new file mode 100644
index 000000000..636dfd661
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_grid.json
new file mode 100644
index 000000000..3f57b02aa
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_importer.json
new file mode 100644
index 000000000..5ebf53839
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_network_receiver.json
new file mode 100644
index 000000000..ac73fada5
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_network_transmitter.json
new file mode 100644
index 000000000..7dfd6647d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_relay.json
new file mode 100644
index 000000000..9c2d5a8f6
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_security_manager.json
new file mode 100644
index 000000000..44e6cb5c7
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/green_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_wireless_transmitter.json
new file mode 100644
index 000000000..8402525ad
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/green_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/green_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/green_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_cable.json
new file mode 100644
index 000000000..b25eac900
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_constructor.json
new file mode 100644
index 000000000..dffd46d35
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_controller.json
new file mode 100644
index 000000000..cd06eeb69
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_crafting_grid.json
new file mode 100644
index 000000000..c16b97ab5
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_destructor.json
new file mode 100644
index 000000000..5227118a7
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_detector.json
new file mode 100644
index 000000000..8cab3fb1b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_disk_interface.json
new file mode 100644
index 000000000..95b484a9f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_exporter.json
new file mode 100644
index 000000000..43796a9ea
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_external_storage.json
new file mode 100644
index 000000000..34a655642
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_grid.json
new file mode 100644
index 000000000..7d5011598
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_importer.json
new file mode 100644
index 000000000..86e4e49ea
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_network_receiver.json
new file mode 100644
index 000000000..149e495f0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_network_transmitter.json
new file mode 100644
index 000000000..f691c712b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_relay.json
new file mode 100644
index 000000000..f45e93526
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_security_manager.json
new file mode 100644
index 000000000..1f44c5ff0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/light_blue_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_wireless_transmitter.json
new file mode 100644
index 000000000..03423f6c3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_blue_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_blue_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_blue_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_cable.json
new file mode 100644
index 000000000..0d2ae3acc
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_constructor.json
new file mode 100644
index 000000000..95e632cb8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_controller.json
new file mode 100644
index 000000000..c8a6ae6d0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_crafting_grid.json
new file mode 100644
index 000000000..9506f708b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_destructor.json
new file mode 100644
index 000000000..5802b49dd
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_detector.json
new file mode 100644
index 000000000..b39d6cf9f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_disk_interface.json
new file mode 100644
index 000000000..5b5391441
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_exporter.json
new file mode 100644
index 000000000..bb8b77c72
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_external_storage.json
new file mode 100644
index 000000000..89259016e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_grid.json
new file mode 100644
index 000000000..0c5b98aaf
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_importer.json
new file mode 100644
index 000000000..b894c97a8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_network_receiver.json
new file mode 100644
index 000000000..27041877d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_network_transmitter.json
new file mode 100644
index 000000000..18eba00c8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_relay.json
new file mode 100644
index 000000000..f838a20ba
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_security_manager.json
new file mode 100644
index 000000000..a97c2c689
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/light_gray_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_wireless_transmitter.json
new file mode 100644
index 000000000..866f6b0d0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/light_gray_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/light_gray_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/light_gray_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_cable.json
new file mode 100644
index 000000000..b36f1200d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_constructor.json
new file mode 100644
index 000000000..f04dd8e06
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_controller.json
new file mode 100644
index 000000000..759cce2f4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_crafting_grid.json
new file mode 100644
index 000000000..2f38abb49
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_destructor.json
new file mode 100644
index 000000000..b263d9b09
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_detector.json
new file mode 100644
index 000000000..29e3772f1
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_disk_interface.json
new file mode 100644
index 000000000..0862348c4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_exporter.json
new file mode 100644
index 000000000..ed0d1fce6
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_external_storage.json
new file mode 100644
index 000000000..8f6a90bfd
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_grid.json
new file mode 100644
index 000000000..6d7934f1c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_importer.json
new file mode 100644
index 000000000..32a9d974e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_network_receiver.json
new file mode 100644
index 000000000..922f20e1c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_network_transmitter.json
new file mode 100644
index 000000000..bfa5e9530
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_relay.json
new file mode 100644
index 000000000..9ee088762
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_security_manager.json
new file mode 100644
index 000000000..4839ab98a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/lime_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_wireless_transmitter.json
new file mode 100644
index 000000000..dafef7bab
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/lime_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/lime_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/lime_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_cable.json
new file mode 100644
index 000000000..27e8ab7f6
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_constructor.json
new file mode 100644
index 000000000..40106ad61
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_controller.json
new file mode 100644
index 000000000..7384a9b78
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_crafting_grid.json
new file mode 100644
index 000000000..5e2ac7077
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_destructor.json
new file mode 100644
index 000000000..f2fed5377
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_detector.json
new file mode 100644
index 000000000..3380cd263
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_disk_interface.json
new file mode 100644
index 000000000..a8ca43d8f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_exporter.json
new file mode 100644
index 000000000..d81e1e842
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_external_storage.json
new file mode 100644
index 000000000..03452cd2b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_grid.json
new file mode 100644
index 000000000..7a717dd89
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_importer.json
new file mode 100644
index 000000000..565d37f4a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_network_receiver.json
new file mode 100644
index 000000000..a888735f0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_network_transmitter.json
new file mode 100644
index 000000000..d31c07686
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_relay.json
new file mode 100644
index 000000000..98ce17bfd
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_security_manager.json
new file mode 100644
index 000000000..5e995a1c0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/magenta_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_wireless_transmitter.json
new file mode 100644
index 000000000..538a7f3f5
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/magenta_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/magenta_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/magenta_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_cable.json
new file mode 100644
index 000000000..b828e936c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_constructor.json
new file mode 100644
index 000000000..d5421099e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_controller.json
new file mode 100644
index 000000000..45a04416f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_crafting_grid.json
new file mode 100644
index 000000000..3f4adea8e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_destructor.json
new file mode 100644
index 000000000..0e8278b53
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_detector.json
new file mode 100644
index 000000000..352bed32a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_disk_interface.json
new file mode 100644
index 000000000..292a7f033
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_exporter.json
new file mode 100644
index 000000000..d8480b016
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_external_storage.json
new file mode 100644
index 000000000..07f6171bf
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_grid.json
new file mode 100644
index 000000000..ce7e23c70
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_importer.json
new file mode 100644
index 000000000..c37a08599
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_network_receiver.json
new file mode 100644
index 000000000..4acec5b00
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_network_transmitter.json
new file mode 100644
index 000000000..d9d4e6854
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_relay.json
new file mode 100644
index 000000000..2b37288ca
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_security_manager.json
new file mode 100644
index 000000000..cb361b1e7
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/orange_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_wireless_transmitter.json
new file mode 100644
index 000000000..84fae67ba
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/orange_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/orange_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/orange_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_cable.json
new file mode 100644
index 000000000..9b896d5d9
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_constructor.json
new file mode 100644
index 000000000..590235f5a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_controller.json
new file mode 100644
index 000000000..dd6844a90
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_crafting_grid.json
new file mode 100644
index 000000000..f789f3df2
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_destructor.json
new file mode 100644
index 000000000..80d1e140b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_detector.json
new file mode 100644
index 000000000..c5cb09fb0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_disk_interface.json
new file mode 100644
index 000000000..bb6af5ac6
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_exporter.json
new file mode 100644
index 000000000..5737ee7cf
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_external_storage.json
new file mode 100644
index 000000000..f7c193d0e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_grid.json
new file mode 100644
index 000000000..57cf192eb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_importer.json
new file mode 100644
index 000000000..b467bda6d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_network_receiver.json
new file mode 100644
index 000000000..110da26fc
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_network_transmitter.json
new file mode 100644
index 000000000..67c6b7c05
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_relay.json
new file mode 100644
index 000000000..59f925d4a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_security_manager.json
new file mode 100644
index 000000000..cebfd1411
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/pink_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_wireless_transmitter.json
new file mode 100644
index 000000000..94d9e6930
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/pink_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/pink_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/pink_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_cable.json
new file mode 100644
index 000000000..73948842b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_constructor.json
new file mode 100644
index 000000000..532a6a107
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_controller.json
new file mode 100644
index 000000000..5d749fce1
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_crafting_grid.json
new file mode 100644
index 000000000..fddbcf83b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_destructor.json
new file mode 100644
index 000000000..3fcd7e7aa
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_detector.json
new file mode 100644
index 000000000..a1a88d96d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_disk_interface.json
new file mode 100644
index 000000000..6b8c1c548
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_exporter.json
new file mode 100644
index 000000000..d8c675f45
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_external_storage.json
new file mode 100644
index 000000000..52f3be2c5
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_grid.json
new file mode 100644
index 000000000..120a948c9
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_importer.json
new file mode 100644
index 000000000..d31b9eec4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_network_receiver.json
new file mode 100644
index 000000000..624fbc222
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_network_transmitter.json
new file mode 100644
index 000000000..74a3abcb7
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_relay.json
new file mode 100644
index 000000000..a6ea128cb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_security_manager.json
new file mode 100644
index 000000000..28f07edc0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/purple_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_wireless_transmitter.json
new file mode 100644
index 000000000..72c8ca98a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/purple_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/purple_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/purple_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_cable.json
new file mode 100644
index 000000000..c6bfbceda
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_constructor.json
new file mode 100644
index 000000000..e29bb0e07
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_controller.json
new file mode 100644
index 000000000..a1ee215d4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_crafting_grid.json
new file mode 100644
index 000000000..0f66ba87f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_destructor.json
new file mode 100644
index 000000000..83fbcbb36
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_detector.json
new file mode 100644
index 000000000..d4d2f421f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_disk_interface.json
new file mode 100644
index 000000000..d3c68dbfe
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_exporter.json
new file mode 100644
index 000000000..62c4a3cc8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_external_storage.json
new file mode 100644
index 000000000..d8b3da12a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_grid.json
new file mode 100644
index 000000000..cafd73caa
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_importer.json
new file mode 100644
index 000000000..ef6c08452
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_network_receiver.json
new file mode 100644
index 000000000..dab15f6a6
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_network_transmitter.json
new file mode 100644
index 000000000..05abb06a7
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_relay.json
new file mode 100644
index 000000000..22699a7ad
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_security_manager.json
new file mode 100644
index 000000000..92f1a2643
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/red_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_wireless_transmitter.json
new file mode 100644
index 000000000..8119ecad7
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/red_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/red_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/red_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_cable.json
new file mode 100644
index 000000000..5c01b2dda
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_constructor.json
new file mode 100644
index 000000000..9ac402a84
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_controller.json
new file mode 100644
index 000000000..5d9a2bf31
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_crafting_grid.json
new file mode 100644
index 000000000..aaf1827b8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_destructor.json
new file mode 100644
index 000000000..f8dd49d83
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_detector.json
new file mode 100644
index 000000000..2f29558be
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_disk_interface.json
new file mode 100644
index 000000000..596d4c3db
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_exporter.json
new file mode 100644
index 000000000..edc903ed8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_external_storage.json
new file mode 100644
index 000000000..be9bdd23d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_grid.json
new file mode 100644
index 000000000..4752ba123
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_importer.json
new file mode 100644
index 000000000..e96405e91
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_network_receiver.json
new file mode 100644
index 000000000..c43a3c3ed
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_network_transmitter.json
new file mode 100644
index 000000000..a5cd19a0e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_relay.json
new file mode 100644
index 000000000..08f44a42b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_security_manager.json
new file mode 100644
index 000000000..c74df0f1e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/white_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_wireless_transmitter.json
new file mode 100644
index 000000000..a83b407a1
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/white_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/white_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/white_wireless_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_cable.json
new file mode 100644
index 000000000..8e1e26eb8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_cable.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cables": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:cables"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_cable"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cables"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_cable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_constructor.json
new file mode 100644
index 000000000..7be5a92ba
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_constructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_constructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:constructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_constructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_constructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_constructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_controller.json
new file mode 100644
index 000000000..e3989aa47
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_controller.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_controllers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:controllers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_controller"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_controllers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_controller"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_crafting_grid.json
new file mode 100644
index 000000000..55878f9a0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_crafting_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_crafting_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:crafting_grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_crafting_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_crafting_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_crafting_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_destructor.json
new file mode 100644
index 000000000..271941d65
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_destructor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_destructors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:destructors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_destructor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_destructors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_destructor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_detector.json
new file mode 100644
index 000000000..0c241b64d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_detectors": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:detectors"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_detectors"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_disk_interface.json
new file mode 100644
index 000000000..787f2f838
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_disk_interface.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disk_interfaces": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:disk_interfaces"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_disk_interface"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disk_interfaces"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_disk_interface"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_exporter.json
new file mode 100644
index 000000000..96328752c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_exporter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exporters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:exporters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_exporter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exporters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_exporter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_external_storage.json
new file mode 100644
index 000000000..683e67880
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_external_storage.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_external_storages": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:external_storages"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_external_storage"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_external_storages"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_external_storage"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_grid.json
new file mode 100644
index 000000000..70affa4f3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_grid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_grids": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:grids"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_grid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_grids"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_grid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_importer.json
new file mode 100644
index 000000000..75ec200e6
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_importer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_importers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:importers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_importer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_importers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_importer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_network_receiver.json
new file mode 100644
index 000000000..cbb5a32be
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_network_receiver.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_receivers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_receivers"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_network_receiver"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_receivers"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_network_receiver"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_network_transmitter.json
new file mode 100644
index 000000000..b6dcf8edd
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_network_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_network_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:network_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_network_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_network_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_network_transmitter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_relay.json
new file mode 100644
index 000000000..f9c2f6021
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_relay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_relays": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:relays"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_relay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_relays"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_relay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_security_manager.json
new file mode 100644
index 000000000..7fb7a521e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_security_manager.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_security_managers": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#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/advancement/recipes/misc/coloring/yellow_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_wireless_transmitter.json
new file mode 100644
index 000000000..e76b3bafe
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancement/recipes/misc/coloring/yellow_wireless_transmitter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "refinedstorage2:coloring/yellow_wireless_transmitter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wireless_transmitters": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#refinedstorage2:wireless_transmitters"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wireless_transmitters"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "refinedstorage2:coloring/yellow_wireless_transmitter"
+ ]
+ }
+}
\ 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
deleted file mode 100644
index d3db991f0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1dd5e8d4b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 9c61d03da..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index f63aa8ac7..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 084f62c1f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 647cf0300..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_disk_interface.json
deleted file mode 100644
index 2257e11c5..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index 19461a32b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index b63faf1bc..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index dc32ec5e7..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index e1e5f246c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index a25c7205b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index b31d9bcc2..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_relay.json
deleted file mode 100644
index 3377dcb4c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1c8eadbfb..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index 75467defa..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/black_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/black_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/black_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index d6ab78505..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index 7f14346e2..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index eed4ee1ef..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index 7d5bc773a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 10284b92a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index c46103976..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_disk_interface.json
deleted file mode 100644
index 41ca613dd..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index 3293b363d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 021e6300b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index c43c0b299..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 6ed2abe77..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index 79acce956..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index d692e772c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_relay.json
deleted file mode 100644
index 15e6f885c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index 160bfa32b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index 0297bb91c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/blue_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/blue_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/blue_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 36eb6d6ff..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1826b2c6d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 153a130df..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index 85633ff2d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 23445c672..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index a3badbb5e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_disk_interface.json
deleted file mode 100644
index e0ae1f4fc..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index a376591e8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index f32dd9ca8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index b0030066e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 4314c14e9..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index 194e86e3a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index 88736f539..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_relay.json
deleted file mode 100644
index cffbbfee1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1b680cccb..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index 163ff2101..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/brown_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/brown_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/brown_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 0302bfb36..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index d1ae5f9ea..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index db27f5170..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index 26cfd294c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 6067674d3..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1e09263e9..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_disk_interface.json
deleted file mode 100644
index 858d22003..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index 60ab95120..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 92c1398d8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index b091dacfa..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 8878b3d27..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index 5816a373b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1d4f20b4c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_relay.json
deleted file mode 100644
index 776a551b8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index dc3fa7712..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index fef581b84..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/cyan_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/cyan_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/cyan_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 70d872141..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1ec85077d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 4239623f9..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index 58e0adb2c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 74d9347fb..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 7040db113..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_disk_interface.json
deleted file mode 100644
index e1dd246f9..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index de6223b7d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1050b7fe6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1c5ccba36..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 2c8c3581f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index 0de56015d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index 5de9bb735..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_relay.json
deleted file mode 100644
index eafcb62d5..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index 8dfa953ea..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index 2a6d0da6b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/gray_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/gray_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/gray_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 24be1c12e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index d3f92385d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 9439a48be..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index 691ede3dd..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 82e6917cf..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index c19a599cb..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_disk_interface.json
deleted file mode 100644
index cc710d923..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index 3625522a6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index d1f361f81..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index b8f0def56..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 6c45f05f1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index 0aac86085..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index e1c1680dc..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_relay.json
deleted file mode 100644
index 82699eef5..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index da323c613..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index 49164ba8b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/green_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/green_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/green_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index ed91eb4d0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index 3396ea2b1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index afc6b1b15..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index 4d8a692d6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 071729d51..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 3a7b78639..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_disk_interface.json
deleted file mode 100644
index fb3a61b9a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index 4a255bab4..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 49a924928..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index 610baf8c0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 13a4bc3da..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index 00638c4ac..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index 0ba8c5ccb..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_relay.json
deleted file mode 100644
index a59f37c02..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index 509373708..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index 0750362c6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_blue_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_blue_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_blue_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index f2a2ddc6a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index b40e6a001..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 2a0344eb4..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1fc9ad612..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index f2a798a2d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 4d554feca..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_disk_interface.json
deleted file mode 100644
index ab7a7dced..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index baa2b23aa..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 7b9b00cb3..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index 8a5d3f4d4..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1229fb09e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index edc0cafe1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index 81ee89e5f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_relay.json
deleted file mode 100644
index 83690021d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index be6a18ddb..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index bf5c05053..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/light_gray_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/light_gray_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/light_gray_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index f036152b7..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index af59234ad..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 98a0b48c6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index e8d644c80..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 7000778a6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 059a9cec8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_disk_interface.json
deleted file mode 100644
index 2764afa20..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index 3a080ef54..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 5251287c0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index 3b644ae8e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index c18d8d042..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index 13226fa91..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index 8186b4d10..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_relay.json
deleted file mode 100644
index fb2918db3..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index 727c71661..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index 6268dc123..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/lime_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/lime_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/lime_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index fabef1c76..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1303f9eba..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 45b19c436..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index e553a097e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1285cc6ce..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 62d44798d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_disk_interface.json
deleted file mode 100644
index 119f28827..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index 400335a10..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 19ffa164c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index a9e38b2d0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index bf6e0a693..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index 186fdc0e1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index 99be2e932..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_relay.json
deleted file mode 100644
index 80665cba1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index 4a1a0ae89..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index fea49c827..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/magenta_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/magenta_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/magenta_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 0285255cb..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index 32c8ad26c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 49c981231..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index e3539cf72..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index f5f2a7aa2..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 0e74d3dc6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_disk_interface.json
deleted file mode 100644
index cf3152b32..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index b75722db9..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 231a43c1a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index 851c33b29..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 7a61d79f6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index b431a22cb..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index b5c9fee67..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_relay.json
deleted file mode 100644
index 2e38b0954..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index f53c67264..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index cf0d51e26..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/orange_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/orange_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/orange_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 075f77bf9..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index 77a35f5e0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index ddcf2b74b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index 55eafcb5a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index c0d6b97e1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index bb09f83da..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_disk_interface.json
deleted file mode 100644
index 390609317..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index 9b15831dc..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index b8992ae5d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index ba5e6b45c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 7d6ae0423..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index 7f409edd2..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index 2a182295a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_relay.json
deleted file mode 100644
index bce19fbb8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index dc4adf64e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index 74e50c3f3..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/pink_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/pink_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/pink_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index c3f5c4b7c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index 6491e37b5..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 3b99479f9..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index 6131d8467..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1adb6c96a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 9bef13044..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_disk_interface.json
deleted file mode 100644
index 9fe40f476..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index 97ed5f52b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index 5129f4a43..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index 0daf73dc0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 32b71ef30..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index 53cb7df95..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index 9babbd664..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_relay.json
deleted file mode 100644
index 8defcc832..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index 8fb8d9831..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index e82d0ed5d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/purple_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/purple_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/purple_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index ebdc8bc40..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index 06d07941c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index dac1b12d5..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index 2de8f3d60..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 47d2b537c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 88044470f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_disk_interface.json
deleted file mode 100644
index f79298968..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index b1bda95f9..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index ca6b06064..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index 20c87df16..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 34b68501b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index e19c1aca1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index 04ca13c8a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_relay.json
deleted file mode 100644
index 850719359..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index 91eb31661..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index 01070f18d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/red_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/red_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/red_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index a7b1b118a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index ed20df42f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index 4801f1d09..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index 86d8d6d4f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 1b16d153f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index cbcba7a1d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_disk_interface.json
deleted file mode 100644
index d4a3b8de3..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index 44ced3052..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index ef91d74df..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index 946abadf9..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 4c4b35fac..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index d1630ef19..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index 36b49b2ae..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_relay.json
deleted file mode 100644
index 7260c1feb..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index cb8ea3ca4..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index 0ae9fd1ec..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/white_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/white_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/white_wireless_transmitter"
- ]
- }
-}
\ 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
deleted file mode 100644
index f725523f7..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_cable.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_cables": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:cables"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_cable"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_cables"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_cable"
- ]
- }
-}
\ 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
deleted file mode 100644
index 93ddb72fa..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_constructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_constructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:constructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_constructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_constructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_constructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index dc7fc6e3f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_controller.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_controllers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:controllers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_controller"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_controllers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_controller"
- ]
- }
-}
\ 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
deleted file mode 100644
index 793f0105a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_crafting_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_crafting_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:crafting_grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_crafting_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_crafting_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_crafting_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 0a1688f8e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_destructor.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_destructors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:destructors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_destructor"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_destructors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_destructor"
- ]
- }
-}
\ 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
deleted file mode 100644
index ea594146f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_detector.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_detectors": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:detectors"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_detector"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_detectors"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_detector"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_disk_interface.json
deleted file mode 100644
index bc490b195..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_disk_interface.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_disk_interfaces": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_disk_interface"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_disk_interfaces"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_disk_interface"
- ]
- }
-}
\ 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
deleted file mode 100644
index 50b5808ed..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_exporter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_exporters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:exporters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_exporter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_exporters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_exporter"
- ]
- }
-}
\ 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
deleted file mode 100644
index fa82da1df..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_external_storage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_external_storages": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:external_storages"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_external_storage"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_external_storages"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_external_storage"
- ]
- }
-}
\ 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
deleted file mode 100644
index e1ffee07d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_grid.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_grids": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:grids"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_grid"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_grids"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_grid"
- ]
- }
-}
\ 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
deleted file mode 100644
index 38e632731..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_importer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_importers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:importers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_importer"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_importers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_importer"
- ]
- }
-}
\ 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
deleted file mode 100644
index 9ef41ddc1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_network_receiver.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_receivers": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_receivers"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_network_receiver"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_receivers"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_network_receiver"
- ]
- }
-}
\ 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
deleted file mode 100644
index 503197c8b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_network_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_network_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:network_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_network_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_network_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_network_transmitter"
- ]
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_relay.json
deleted file mode 100644
index bd7759ea9..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_relay.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_relays": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:relays"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- },
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_relay"
- },
- "trigger": "minecraft:recipe_unlocked"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_relays"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_relay"
- ]
- }
-}
\ 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
deleted file mode 100644
index 3a3b93a86..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_security_manager.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "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
deleted file mode 100644
index ced350d20..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/advancements/recipes/misc/coloring/yellow_wireless_transmitter.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "parent": "minecraft:recipes/root",
- "criteria": {
- "has_the_recipe": {
- "conditions": {
- "recipe": "refinedstorage2:coloring/yellow_wireless_transmitter"
- },
- "trigger": "minecraft:recipe_unlocked"
- },
- "has_wireless_transmitters": {
- "conditions": {
- "items": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "requirements": [
- [
- "has_the_recipe",
- "has_wireless_transmitters"
- ]
- ],
- "rewards": {
- "recipes": [
- "refinedstorage2:coloring/yellow_wireless_transmitter"
- ]
- }
-}
\ 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_table/blocks/black_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_cable.json
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_table/blocks/black_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_constructor.json
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_table/blocks/black_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_controller.json
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_table/blocks/black_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_crafting_grid.json
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_table/blocks/black_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_creative_controller.json
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_table/blocks/black_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_destructor.json
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_table/blocks/black_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_disk_interface.json
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_table/blocks/black_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_grid.json
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_table/blocks/black_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_network_receiver.json
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_table/blocks/black_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_relay.json
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_table/blocks/black_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_security_manager.json
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_table/blocks/black_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/black_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/black_wireless_transmitter.json
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_table/blocks/blue_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_cable.json
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_table/blocks/blue_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_constructor.json
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_table/blocks/blue_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_controller.json
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_table/blocks/blue_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_crafting_grid.json
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_table/blocks/blue_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_creative_controller.json
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_table/blocks/blue_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_destructor.json
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_table/blocks/blue_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_disk_interface.json
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_table/blocks/blue_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_grid.json
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_table/blocks/blue_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_network_receiver.json
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_table/blocks/blue_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_relay.json
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_table/blocks/blue_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_security_manager.json
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_table/blocks/blue_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/blue_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/blue_wireless_transmitter.json
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_table/blocks/brown_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_cable.json
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_table/blocks/brown_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_constructor.json
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_table/blocks/brown_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_controller.json
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_table/blocks/brown_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_crafting_grid.json
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_table/blocks/brown_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_creative_controller.json
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_table/blocks/brown_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_destructor.json
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_table/blocks/brown_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_disk_interface.json
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_table/blocks/brown_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_grid.json
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_table/blocks/brown_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_network_receiver.json
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_table/blocks/brown_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_relay.json
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_table/blocks/brown_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_security_manager.json
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_table/blocks/brown_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/brown_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/brown_wireless_transmitter.json
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_table/blocks/cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cable.json
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_table/blocks/constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/constructor.json
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_table/blocks/controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/controller.json
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_table/blocks/crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/crafting_grid.json
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_table/blocks/creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/creative_controller.json
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_table/blocks/cyan_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_cable.json
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_table/blocks/cyan_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_constructor.json
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_table/blocks/cyan_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_controller.json
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_table/blocks/cyan_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_crafting_grid.json
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_table/blocks/cyan_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_creative_controller.json
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_table/blocks/cyan_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_destructor.json
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_table/blocks/cyan_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_disk_interface.json
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_table/blocks/cyan_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_grid.json
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_table/blocks/cyan_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_network_receiver.json
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_table/blocks/cyan_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_relay.json
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_table/blocks/cyan_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_security_manager.json
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_table/blocks/cyan_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/cyan_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/cyan_wireless_transmitter.json
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_table/blocks/destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/destructor.json
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_table/blocks/detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/disk_interface.json
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_table/blocks/gray_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/gray_controller.json
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_table/blocks/gray_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/gray_crafting_grid.json
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_table/blocks/gray_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/gray_creative_controller.json
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_table/blocks/gray_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/gray_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/gray_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/gray_disk_interface.json
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_table/blocks/gray_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/gray_grid.json
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_table/blocks/gray_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/gray_network_receiver.json
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_table/blocks/gray_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/gray_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/gray_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/gray_relay.json
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_table/blocks/gray_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/gray_security_manager.json
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_table/blocks/gray_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/gray_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/gray_wireless_transmitter.json
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_table/blocks/green_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_cable.json
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_table/blocks/green_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_constructor.json
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_table/blocks/green_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_controller.json
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_table/blocks/green_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_crafting_grid.json
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_table/blocks/green_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_creative_controller.json
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_table/blocks/green_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_destructor.json
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_table/blocks/green_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_disk_interface.json
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_table/blocks/green_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_grid.json
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_table/blocks/green_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_network_receiver.json
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_table/blocks/green_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_relay.json
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_table/blocks/green_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_security_manager.json
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_table/blocks/green_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/green_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/green_wireless_transmitter.json
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_table/blocks/grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/grid.json
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_table/blocks/light_blue_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_blue_cable.json
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_table/blocks/light_blue_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_blue_constructor.json
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_table/blocks/light_blue_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_blue_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_blue_destructor.json
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_table/blocks/light_gray_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_cable.json
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_table/blocks/light_gray_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_constructor.json
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_table/blocks/light_gray_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_controller.json
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_table/blocks/light_gray_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_crafting_grid.json
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_table/blocks/light_gray_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_creative_controller.json
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_table/blocks/light_gray_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_destructor.json
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_table/blocks/light_gray_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_disk_interface.json
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_table/blocks/light_gray_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_grid.json
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_table/blocks/light_gray_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_network_receiver.json
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_table/blocks/light_gray_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_relay.json
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_table/blocks/light_gray_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_security_manager.json
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_table/blocks/light_gray_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/light_gray_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/light_gray_wireless_transmitter.json
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_table/blocks/lime_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_cable.json
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_table/blocks/lime_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_constructor.json
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_table/blocks/lime_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_controller.json
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_table/blocks/lime_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_crafting_grid.json
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_table/blocks/lime_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_creative_controller.json
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_table/blocks/lime_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_destructor.json
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_table/blocks/lime_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_disk_interface.json
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_table/blocks/lime_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_grid.json
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_table/blocks/lime_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_network_receiver.json
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_table/blocks/lime_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_relay.json
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_table/blocks/lime_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_security_manager.json
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_table/blocks/lime_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/lime_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/lime_wireless_transmitter.json
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_table/blocks/magenta_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_cable.json
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_table/blocks/magenta_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_constructor.json
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_table/blocks/magenta_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_controller.json
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_table/blocks/magenta_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_crafting_grid.json
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_table/blocks/magenta_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_creative_controller.json
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_table/blocks/magenta_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_destructor.json
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_table/blocks/magenta_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_disk_interface.json
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_table/blocks/magenta_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_grid.json
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_table/blocks/magenta_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_network_receiver.json
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_table/blocks/magenta_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_relay.json
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_table/blocks/magenta_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_security_manager.json
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_table/blocks/magenta_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/magenta_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/magenta_wireless_transmitter.json
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_table/blocks/network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/network_receiver.json
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_table/blocks/network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/network_transmitter.json
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_table/blocks/orange_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_cable.json
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_table/blocks/orange_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_constructor.json
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_table/blocks/orange_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_controller.json
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_table/blocks/orange_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_crafting_grid.json
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_table/blocks/orange_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_creative_controller.json
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_table/blocks/orange_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_destructor.json
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_table/blocks/orange_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_disk_interface.json
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_table/blocks/orange_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_grid.json
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_table/blocks/orange_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_network_receiver.json
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_table/blocks/orange_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_relay.json
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_table/blocks/orange_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_security_manager.json
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_table/blocks/orange_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/orange_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/orange_wireless_transmitter.json
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_table/blocks/pink_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_cable.json
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_table/blocks/pink_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_constructor.json
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_table/blocks/pink_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_controller.json
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_table/blocks/pink_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_crafting_grid.json
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_table/blocks/pink_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_creative_controller.json
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_table/blocks/pink_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_destructor.json
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_table/blocks/pink_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_disk_interface.json
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_table/blocks/pink_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_grid.json
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_table/blocks/pink_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_network_receiver.json
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_table/blocks/pink_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_relay.json
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_table/blocks/pink_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_security_manager.json
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_table/blocks/pink_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/pink_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/pink_wireless_transmitter.json
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_table/blocks/purple_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_cable.json
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_table/blocks/purple_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_constructor.json
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_table/blocks/purple_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_controller.json
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_table/blocks/purple_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_crafting_grid.json
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_table/blocks/purple_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_creative_controller.json
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_table/blocks/purple_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_destructor.json
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_table/blocks/purple_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_disk_interface.json
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_table/blocks/purple_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_grid.json
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_table/blocks/purple_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_network_receiver.json
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_table/blocks/purple_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_relay.json
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_table/blocks/purple_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_security_manager.json
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_table/blocks/purple_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/purple_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/purple_wireless_transmitter.json
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_table/blocks/red_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_cable.json
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_table/blocks/red_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_constructor.json
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_table/blocks/red_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_controller.json
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_table/blocks/red_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_crafting_grid.json
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_table/blocks/red_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_creative_controller.json
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_table/blocks/red_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_destructor.json
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_table/blocks/red_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_disk_interface.json
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_table/blocks/red_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_grid.json
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_table/blocks/red_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_network_receiver.json
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_table/blocks/red_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_relay.json
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_table/blocks/red_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_security_manager.json
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_table/blocks/red_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/red_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/red_wireless_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/relay.json
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_table/blocks/security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/security_manager.json
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_table/blocks/white_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_cable.json
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_table/blocks/white_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_constructor.json
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_table/blocks/white_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_controller.json
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_table/blocks/white_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_crafting_grid.json
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_table/blocks/white_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_creative_controller.json
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_table/blocks/white_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_destructor.json
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_table/blocks/white_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_disk_interface.json
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_table/blocks/white_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_grid.json
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_table/blocks/white_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_network_receiver.json
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_table/blocks/white_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_relay.json
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_table/blocks/white_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_security_manager.json
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_table/blocks/white_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/white_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/white_wireless_transmitter.json
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_table/blocks/wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/wireless_transmitter.json
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_table/blocks/yellow_cable.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_cable.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_cable.json
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_table/blocks/yellow_constructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_constructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_constructor.json
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_table/blocks/yellow_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_controller.json
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_table/blocks/yellow_crafting_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_crafting_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_crafting_grid.json
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_table/blocks/yellow_creative_controller.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_creative_controller.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_creative_controller.json
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_table/blocks/yellow_destructor.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_destructor.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_destructor.json
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_table/blocks/yellow_detector.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_detector.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_detector.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_disk_interface.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_disk_interface.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_disk_interface.json
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_table/blocks/yellow_grid.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_grid.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_grid.json
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_table/blocks/yellow_network_receiver.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_network_receiver.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_network_receiver.json
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_table/blocks/yellow_network_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_network_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_network_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_relay.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_relay.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_relay.json
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_table/blocks/yellow_security_manager.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_security_manager.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_security_manager.json
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_table/blocks/yellow_wireless_transmitter.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_tables/blocks/yellow_wireless_transmitter.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/loot_table/blocks/yellow_wireless_transmitter.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_cable.json
new file mode 100644
index 000000000..debc2df42
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_constructor.json
new file mode 100644
index 000000000..3719b7e52
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_controller.json
new file mode 100644
index 000000000..85e3a1837
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_crafting_grid.json
new file mode 100644
index 000000000..5b283fdfc
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_destructor.json
new file mode 100644
index 000000000..c2ba2f622
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_detector.json
new file mode 100644
index 000000000..4d6daa81a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_disk_interface.json
new file mode 100644
index 000000000..5100d0bd4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_exporter.json
new file mode 100644
index 000000000..dc9924a00
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_external_storage.json
new file mode 100644
index 000000000..967be6d4f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_grid.json
new file mode 100644
index 000000000..6c3045d1c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_importer.json
new file mode 100644
index 000000000..1f790c440
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_network_receiver.json
new file mode 100644
index 000000000..e0db45771
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_network_transmitter.json
new file mode 100644
index 000000000..e2420a424
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_relay.json
new file mode 100644
index 000000000..f643ad840
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_security_manager.json
new file mode 100644
index 000000000..a63defcdd
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_wireless_transmitter.json
new file mode 100644
index 000000000..4a53eb0b4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/black_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:black_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:black_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_cable.json
new file mode 100644
index 000000000..cad915b22
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_constructor.json
new file mode 100644
index 000000000..9c6961cc3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_controller.json
new file mode 100644
index 000000000..1ef6c3497
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_crafting_grid.json
new file mode 100644
index 000000000..e38c5b73c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_destructor.json
new file mode 100644
index 000000000..00494d4f5
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_detector.json
new file mode 100644
index 000000000..1451a8c5d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_disk_interface.json
new file mode 100644
index 000000000..75eae19c0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_exporter.json
new file mode 100644
index 000000000..af84484fa
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_external_storage.json
new file mode 100644
index 000000000..5da2f6a0a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_grid.json
new file mode 100644
index 000000000..2076c0799
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_importer.json
new file mode 100644
index 000000000..1e4656b26
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_network_receiver.json
new file mode 100644
index 000000000..375ded113
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_network_transmitter.json
new file mode 100644
index 000000000..db0de7a2b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_relay.json
new file mode 100644
index 000000000..66272954a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_security_manager.json
new file mode 100644
index 000000000..3bb08baf4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_wireless_transmitter.json
new file mode 100644
index 000000000..c6cd74473
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/blue_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:blue_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_cable.json
new file mode 100644
index 000000000..cc3b0bbd1
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_constructor.json
new file mode 100644
index 000000000..08c3a7a40
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_controller.json
new file mode 100644
index 000000000..5a39d4537
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_crafting_grid.json
new file mode 100644
index 000000000..f73036219
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_destructor.json
new file mode 100644
index 000000000..2b3ac8808
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_detector.json
new file mode 100644
index 000000000..7b9cfc921
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_disk_interface.json
new file mode 100644
index 000000000..33a0641cd
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_exporter.json
new file mode 100644
index 000000000..cde41172a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_external_storage.json
new file mode 100644
index 000000000..be411530b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_grid.json
new file mode 100644
index 000000000..a2814ed09
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_importer.json
new file mode 100644
index 000000000..96f172768
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_network_receiver.json
new file mode 100644
index 000000000..4f39a2970
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_network_transmitter.json
new file mode 100644
index 000000000..e8c807129
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_relay.json
new file mode 100644
index 000000000..eeb0f5ee0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_security_manager.json
new file mode 100644
index 000000000..219f7a4cd
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_wireless_transmitter.json
new file mode 100644
index 000000000..f4601cd51
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/brown_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:brown_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:brown_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_cable.json
new file mode 100644
index 000000000..becb2d0f9
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_constructor.json
new file mode 100644
index 000000000..7d0896f2d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_controller.json
new file mode 100644
index 000000000..b18c29934
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_crafting_grid.json
new file mode 100644
index 000000000..3cf596d12
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_destructor.json
new file mode 100644
index 000000000..2b9cae809
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_detector.json
new file mode 100644
index 000000000..30349d1dd
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_disk_interface.json
new file mode 100644
index 000000000..a814de3a0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_exporter.json
new file mode 100644
index 000000000..1593d8cd3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_external_storage.json
new file mode 100644
index 000000000..e1c1c22ce
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_grid.json
new file mode 100644
index 000000000..800cbf692
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_importer.json
new file mode 100644
index 000000000..3ba0319e7
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_network_receiver.json
new file mode 100644
index 000000000..f03b423d0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_network_transmitter.json
new file mode 100644
index 000000000..5da50b678
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_relay.json
new file mode 100644
index 000000000..1e60588ac
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_security_manager.json
new file mode 100644
index 000000000..c8a809c6f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_wireless_transmitter.json
new file mode 100644
index 000000000..a1c5240be
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/cyan_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:cyan_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cyan_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_cable.json
new file mode 100644
index 000000000..b6a840240
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_constructor.json
new file mode 100644
index 000000000..a1ef435fb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_controller.json
new file mode 100644
index 000000000..dc3255814
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:gray_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_crafting_grid.json
new file mode 100644
index 000000000..728e1ce4c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:gray_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_destructor.json
new file mode 100644
index 000000000..323148a5f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_detector.json
new file mode 100644
index 000000000..edb298397
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:gray_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_disk_interface.json
new file mode 100644
index 000000000..d71c83ac4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:gray_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_exporter.json
new file mode 100644
index 000000000..541aa2c0f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_external_storage.json
new file mode 100644
index 000000000..880c0c76e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_grid.json
new file mode 100644
index 000000000..0beabdc7a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:gray_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_importer.json
new file mode 100644
index 000000000..9c8f1effb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_network_receiver.json
new file mode 100644
index 000000000..ea58cb43c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:gray_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_network_transmitter.json
new file mode 100644
index 000000000..c19d4aaec
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:gray_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_relay.json
new file mode 100644
index 000000000..458fb3b20
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:gray_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_security_manager.json
new file mode 100644
index 000000000..c017fb0a0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:gray_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_wireless_transmitter.json
new file mode 100644
index 000000000..5721dbc0c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/gray_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:gray_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_cable.json
new file mode 100644
index 000000000..7e92262ed
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_constructor.json
new file mode 100644
index 000000000..9c75aed07
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_controller.json
new file mode 100644
index 000000000..2a17c68e3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_crafting_grid.json
new file mode 100644
index 000000000..6ad997e96
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_destructor.json
new file mode 100644
index 000000000..e9163f9a3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_detector.json
new file mode 100644
index 000000000..347a76744
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_disk_interface.json
new file mode 100644
index 000000000..ecb2bb6ce
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_exporter.json
new file mode 100644
index 000000000..22e9fdbdf
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_external_storage.json
new file mode 100644
index 000000000..39143546b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_grid.json
new file mode 100644
index 000000000..2e96f705d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_importer.json
new file mode 100644
index 000000000..89391617c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_network_receiver.json
new file mode 100644
index 000000000..d9f4cce95
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_network_transmitter.json
new file mode 100644
index 000000000..2fbac9138
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_relay.json
new file mode 100644
index 000000000..b1889301c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_security_manager.json
new file mode 100644
index 000000000..394b6d4b8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_wireless_transmitter.json
new file mode 100644
index 000000000..1bd8abe1e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/green_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:green_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:green_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_cable.json
new file mode 100644
index 000000000..63d51c903
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_blue_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_constructor.json
new file mode 100644
index 000000000..5281c40c1
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_blue_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_controller.json
new file mode 100644
index 000000000..57886944c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_crafting_grid.json
new file mode 100644
index 000000000..8c2d9cbdc
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_destructor.json
new file mode 100644
index 000000000..89de9a4ca
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_blue_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_detector.json
new file mode 100644
index 000000000..8485463d8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_disk_interface.json
new file mode 100644
index 000000000..a6ba20645
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_exporter.json
new file mode 100644
index 000000000..758408a81
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_blue_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_external_storage.json
new file mode 100644
index 000000000..2fde5246b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_blue_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_grid.json
new file mode 100644
index 000000000..a82c84a29
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_importer.json
new file mode 100644
index 000000000..7171cb87f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_blue_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_network_receiver.json
new file mode 100644
index 000000000..dd30e6c77
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_network_transmitter.json
new file mode 100644
index 000000000..2981dfbf1
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_relay.json
new file mode 100644
index 000000000..8fea0cc22
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_security_manager.json
new file mode 100644
index 000000000..756cd8e90
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_wireless_transmitter.json
new file mode 100644
index 000000000..9be26bf2a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_blue_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:light_blue_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_cable.json
new file mode 100644
index 000000000..a44074eab
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_constructor.json
new file mode 100644
index 000000000..8f174256d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_controller.json
new file mode 100644
index 000000000..9836d6e50
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_crafting_grid.json
new file mode 100644
index 000000000..d5cf86ce5
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_destructor.json
new file mode 100644
index 000000000..e71d00cc3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_detector.json
new file mode 100644
index 000000000..bd0cd7dfb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_disk_interface.json
new file mode 100644
index 000000000..db53c5d81
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_exporter.json
new file mode 100644
index 000000000..2da35dc8d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_external_storage.json
new file mode 100644
index 000000000..8c2e70b04
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_grid.json
new file mode 100644
index 000000000..d029f7b20
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_importer.json
new file mode 100644
index 000000000..5fd210c8c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_network_receiver.json
new file mode 100644
index 000000000..925ecbd89
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_network_transmitter.json
new file mode 100644
index 000000000..f7892de62
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_relay.json
new file mode 100644
index 000000000..6656c82eb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_security_manager.json
new file mode 100644
index 000000000..1ba063e22
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_wireless_transmitter.json
new file mode 100644
index 000000000..ec11cdb61
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/light_gray_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:light_gray_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:light_gray_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_cable.json
new file mode 100644
index 000000000..f128fe7e8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_constructor.json
new file mode 100644
index 000000000..e935ea868
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_controller.json
new file mode 100644
index 000000000..76550f2de
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_crafting_grid.json
new file mode 100644
index 000000000..19602be94
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_destructor.json
new file mode 100644
index 000000000..43536e5f5
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_detector.json
new file mode 100644
index 000000000..c7b1321c7
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_disk_interface.json
new file mode 100644
index 000000000..af1d95983
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_exporter.json
new file mode 100644
index 000000000..8959d5d8c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_external_storage.json
new file mode 100644
index 000000000..2ac30b7ce
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_grid.json
new file mode 100644
index 000000000..709e73500
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_importer.json
new file mode 100644
index 000000000..302330b5e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_network_receiver.json
new file mode 100644
index 000000000..a254ce162
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_network_transmitter.json
new file mode 100644
index 000000000..3a5bb7601
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_relay.json
new file mode 100644
index 000000000..513f8abb3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_security_manager.json
new file mode 100644
index 000000000..6cfc79411
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_wireless_transmitter.json
new file mode 100644
index 000000000..42baf0e99
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/lime_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:lime_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:lime_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_cable.json
new file mode 100644
index 000000000..a88690261
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_constructor.json
new file mode 100644
index 000000000..3e5a1f16f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_controller.json
new file mode 100644
index 000000000..0069aea35
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_crafting_grid.json
new file mode 100644
index 000000000..53fafb8f3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_destructor.json
new file mode 100644
index 000000000..9237499b0
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_detector.json
new file mode 100644
index 000000000..f1cf2d692
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_disk_interface.json
new file mode 100644
index 000000000..52d78334c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_exporter.json
new file mode 100644
index 000000000..36a901e09
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_external_storage.json
new file mode 100644
index 000000000..2790f4b12
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_grid.json
new file mode 100644
index 000000000..150e3b9cd
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_importer.json
new file mode 100644
index 000000000..3194f4e55
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_network_receiver.json
new file mode 100644
index 000000000..c37424607
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_network_transmitter.json
new file mode 100644
index 000000000..fcb235352
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_relay.json
new file mode 100644
index 000000000..e3ff2ff05
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_security_manager.json
new file mode 100644
index 000000000..a75604191
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_wireless_transmitter.json
new file mode 100644
index 000000000..f0cdd7cdc
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/magenta_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:magenta_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:magenta_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_cable.json
new file mode 100644
index 000000000..ba3f2662b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_constructor.json
new file mode 100644
index 000000000..a45f61fc2
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_controller.json
new file mode 100644
index 000000000..26e0c3af1
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_crafting_grid.json
new file mode 100644
index 000000000..d1676f5d1
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_destructor.json
new file mode 100644
index 000000000..9131135f6
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_detector.json
new file mode 100644
index 000000000..7e914e39c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_disk_interface.json
new file mode 100644
index 000000000..afe8f7eb2
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_exporter.json
new file mode 100644
index 000000000..a710e27d8
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_external_storage.json
new file mode 100644
index 000000000..e3d617223
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_grid.json
new file mode 100644
index 000000000..baed3c065
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_importer.json
new file mode 100644
index 000000000..f961bcef6
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_network_receiver.json
new file mode 100644
index 000000000..d2160a4a3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_network_transmitter.json
new file mode 100644
index 000000000..1c13bc247
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_relay.json
new file mode 100644
index 000000000..27dcb242a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_security_manager.json
new file mode 100644
index 000000000..82e953060
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_wireless_transmitter.json
new file mode 100644
index 000000000..847b99400
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/orange_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:orange_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:orange_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_cable.json
new file mode 100644
index 000000000..6125d7f16
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_constructor.json
new file mode 100644
index 000000000..1832b4279
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_controller.json
new file mode 100644
index 000000000..898edec5c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_crafting_grid.json
new file mode 100644
index 000000000..bd8ec135c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_destructor.json
new file mode 100644
index 000000000..f65615431
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_detector.json
new file mode 100644
index 000000000..ad7314bec
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_disk_interface.json
new file mode 100644
index 000000000..deba0cd09
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_exporter.json
new file mode 100644
index 000000000..8c6f003eb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_external_storage.json
new file mode 100644
index 000000000..c2b362925
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_grid.json
new file mode 100644
index 000000000..3cd54a98e
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_importer.json
new file mode 100644
index 000000000..e267982f1
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_network_receiver.json
new file mode 100644
index 000000000..935162fa3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_network_transmitter.json
new file mode 100644
index 000000000..7b5b3ab2f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_relay.json
new file mode 100644
index 000000000..c30fa6ccb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_security_manager.json
new file mode 100644
index 000000000..802f8f711
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_wireless_transmitter.json
new file mode 100644
index 000000000..b47b60bed
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/pink_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:pink_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:pink_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_cable.json
new file mode 100644
index 000000000..6902a76dc
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_constructor.json
new file mode 100644
index 000000000..8be003cb6
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_controller.json
new file mode 100644
index 000000000..725fb84a7
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_crafting_grid.json
new file mode 100644
index 000000000..1b20618ea
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_destructor.json
new file mode 100644
index 000000000..7a8271d38
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_detector.json
new file mode 100644
index 000000000..5a5b4809f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_disk_interface.json
new file mode 100644
index 000000000..990eae42f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_exporter.json
new file mode 100644
index 000000000..41b8b407b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_external_storage.json
new file mode 100644
index 000000000..b2b68d492
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_grid.json
new file mode 100644
index 000000000..da0703769
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_importer.json
new file mode 100644
index 000000000..3e437907b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_network_receiver.json
new file mode 100644
index 000000000..22a889f04
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_network_transmitter.json
new file mode 100644
index 000000000..1c8978139
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_relay.json
new file mode 100644
index 000000000..602b86204
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_security_manager.json
new file mode 100644
index 000000000..ddbf99df3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_wireless_transmitter.json
new file mode 100644
index 000000000..a2ddf6b85
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/purple_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:purple_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:purple_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_cable.json
new file mode 100644
index 000000000..10348f9c5
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_constructor.json
new file mode 100644
index 000000000..e304c5334
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_controller.json
new file mode 100644
index 000000000..9054c8584
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_crafting_grid.json
new file mode 100644
index 000000000..3d64b32ad
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_destructor.json
new file mode 100644
index 000000000..cae7b16b9
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_detector.json
new file mode 100644
index 000000000..8c375bc69
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_disk_interface.json
new file mode 100644
index 000000000..d420da852
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_exporter.json
new file mode 100644
index 000000000..1b8f2acba
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_external_storage.json
new file mode 100644
index 000000000..e7d51a577
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_grid.json
new file mode 100644
index 000000000..5f9dec672
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_importer.json
new file mode 100644
index 000000000..cbd7b4e82
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_network_receiver.json
new file mode 100644
index 000000000..b5de717f3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_network_transmitter.json
new file mode 100644
index 000000000..0759f926b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_relay.json
new file mode 100644
index 000000000..94403f52b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_security_manager.json
new file mode 100644
index 000000000..d5ad1443b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_wireless_transmitter.json
new file mode 100644
index 000000000..a2abdf06a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/red_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:red_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:red_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_cable.json
new file mode 100644
index 000000000..3f58a1530
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_constructor.json
new file mode 100644
index 000000000..4492c9cc4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_controller.json
new file mode 100644
index 000000000..a8a708824
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_crafting_grid.json
new file mode 100644
index 000000000..7176b64d4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_destructor.json
new file mode 100644
index 000000000..d7ab63ab9
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_detector.json
new file mode 100644
index 000000000..41ef43891
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_disk_interface.json
new file mode 100644
index 000000000..952443656
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_exporter.json
new file mode 100644
index 000000000..f8a9ee929
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_external_storage.json
new file mode 100644
index 000000000..1e85f0544
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_grid.json
new file mode 100644
index 000000000..5c844c592
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_importer.json
new file mode 100644
index 000000000..d30d2c9a3
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_network_receiver.json
new file mode 100644
index 000000000..74495545d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_network_transmitter.json
new file mode 100644
index 000000000..c89918fd9
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_relay.json
new file mode 100644
index 000000000..b33a77203
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_security_manager.json
new file mode 100644
index 000000000..128eedae6
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_wireless_transmitter.json
new file mode 100644
index 000000000..55eedeaee
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/white_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:white_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:white_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_cable.json
new file mode 100644
index 000000000..8d18120c5
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_cable.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:cables"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_cable"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_constructor.json
new file mode 100644
index 000000000..a8e9ab438
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_constructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:constructors"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_constructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_controller.json
new file mode 100644
index 000000000..6cc0cc417
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_controller.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:controllers"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_controller"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_crafting_grid.json
new file mode 100644
index 000000000..629286c35
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_crafting_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:crafting_grids"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_crafting_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_destructor.json
new file mode 100644
index 000000000..8f7bdcb54
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_destructor.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:destructors"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_destructor"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_detector.json
new file mode 100644
index 000000000..542d1ebb1
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_detector.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:detectors"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_detector"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_disk_interface.json
new file mode 100644
index 000000000..44e7e1c7a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_disk_interface.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:disk_interfaces"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_disk_interface"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_exporter.json
new file mode 100644
index 000000000..335b86a12
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_exporter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:exporters"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_exporter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_external_storage.json
new file mode 100644
index 000000000..384a7d77d
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_external_storage.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:external_storages"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_external_storage"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_grid.json
new file mode 100644
index 000000000..954976753
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_grid.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:grids"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_grid"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_importer.json
new file mode 100644
index 000000000..f6e0f055f
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_importer.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:importers"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_importer"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_network_receiver.json
new file mode 100644
index 000000000..5fb8b5e35
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_network_receiver.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_receivers"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_network_receiver"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_network_transmitter.json
new file mode 100644
index 000000000..55b07054a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_network_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:network_transmitters"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_network_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_relay.json
new file mode 100644
index 000000000..1af3c9fbc
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_relay.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:relays"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_relay"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_security_manager.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_security_manager.json
new file mode 100644
index 000000000..11488de4b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_security_manager.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:security_managers"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_security_manager"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_wireless_transmitter.json
new file mode 100644
index 000000000..0c0aee654
--- /dev/null
+++ b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipe/coloring/yellow_wireless_transmitter.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "category": "misc",
+ "ingredients": [
+ {
+ "tag": "refinedstorage2:wireless_transmitters"
+ },
+ {
+ "item": "minecraft:yellow_dye"
+ }
+ ],
+ "result": {
+ "count": 1,
+ "id": "refinedstorage2:yellow_wireless_transmitter"
+ }
+}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_cable.json
deleted file mode 100644
index e48698846..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_constructor.json
deleted file mode 100644
index 8db2ec9f2..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_controller.json
deleted file mode 100644
index 0fcc17545..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_crafting_grid.json
deleted file mode 100644
index 8f0faa890..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_destructor.json
deleted file mode 100644
index 68e7beb72..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_detector.json
deleted file mode 100644
index a4e53da1c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_disk_interface.json
deleted file mode 100644
index 8899166f8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_exporter.json
deleted file mode 100644
index 4dabece75..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_external_storage.json
deleted file mode 100644
index 693847b54..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_grid.json
deleted file mode 100644
index 0b2b67ff7..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_importer.json
deleted file mode 100644
index 178d2dede..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_network_receiver.json
deleted file mode 100644
index 10adc17ab..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_network_transmitter.json
deleted file mode 100644
index 36b859db6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_relay.json
deleted file mode 100644
index 37ad99430..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_relay"
- }
-}
\ No newline at end of file
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
deleted file mode 100644
index 82f2b3780..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/black_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_wireless_transmitter.json
deleted file mode 100644
index 1b63b86cb..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/black_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:black_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:black_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_cable.json
deleted file mode 100644
index 5bcd5edfd..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_constructor.json
deleted file mode 100644
index d74858a46..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_controller.json
deleted file mode 100644
index f04481333..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_crafting_grid.json
deleted file mode 100644
index ae7919c39..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_destructor.json
deleted file mode 100644
index 9b604005d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_detector.json
deleted file mode 100644
index 2761aaacc..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_disk_interface.json
deleted file mode 100644
index 8fcd8ee90..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_exporter.json
deleted file mode 100644
index f513359fc..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_external_storage.json
deleted file mode 100644
index 38b289401..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_grid.json
deleted file mode 100644
index 57b56e809..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_importer.json
deleted file mode 100644
index 91fe8860b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_network_receiver.json
deleted file mode 100644
index 2cf78ae46..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_network_transmitter.json
deleted file mode 100644
index a4e2bd0a0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_relay.json
deleted file mode 100644
index 2c4374cd8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_relay"
- }
-}
\ 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
deleted file mode 100644
index c5416e72f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/blue_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_wireless_transmitter.json
deleted file mode 100644
index 50622ac43..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/blue_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:blue_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_cable.json
deleted file mode 100644
index 0d0cb079d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_constructor.json
deleted file mode 100644
index 1efe766f7..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_controller.json
deleted file mode 100644
index 7e7a52ea4..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_crafting_grid.json
deleted file mode 100644
index 0d5932e6f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_destructor.json
deleted file mode 100644
index ccd541f71..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_detector.json
deleted file mode 100644
index fd2f645eb..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_disk_interface.json
deleted file mode 100644
index 2137c39b4..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_exporter.json
deleted file mode 100644
index de1579903..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_external_storage.json
deleted file mode 100644
index 70ccb21dc..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_grid.json
deleted file mode 100644
index b4de570d8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_importer.json
deleted file mode 100644
index be54438e7..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_network_receiver.json
deleted file mode 100644
index 8f315166a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_network_transmitter.json
deleted file mode 100644
index e7c68912d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_relay.json
deleted file mode 100644
index 49c08e3ae..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_relay"
- }
-}
\ 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
deleted file mode 100644
index 287036f5a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/brown_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_wireless_transmitter.json
deleted file mode 100644
index 1766affaa..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/brown_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:brown_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:brown_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_cable.json
deleted file mode 100644
index ecb8aabd6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_constructor.json
deleted file mode 100644
index 07e766830..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_controller.json
deleted file mode 100644
index d207650b9..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_crafting_grid.json
deleted file mode 100644
index 7b47fd448..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_destructor.json
deleted file mode 100644
index f83b93ffe..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_detector.json
deleted file mode 100644
index 152ce8f36..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_disk_interface.json
deleted file mode 100644
index addc70460..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_exporter.json
deleted file mode 100644
index cc6267745..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_external_storage.json
deleted file mode 100644
index 6fc9c019d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_grid.json
deleted file mode 100644
index 17f543c3b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_importer.json
deleted file mode 100644
index 1c2a2c3f7..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_network_receiver.json
deleted file mode 100644
index 1740e8a1b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_network_transmitter.json
deleted file mode 100644
index f84a9cfba..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_relay.json
deleted file mode 100644
index 5e680e821..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_relay"
- }
-}
\ 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
deleted file mode 100644
index 8f3dd7cc5..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/cyan_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_wireless_transmitter.json
deleted file mode 100644
index 23b00b985..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/cyan_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:cyan_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cyan_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_cable.json
deleted file mode 100644
index af661b33f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_constructor.json
deleted file mode 100644
index ddb5a782a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_controller.json
deleted file mode 100644
index 57ec1f243..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:gray_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_crafting_grid.json
deleted file mode 100644
index d2ff4f253..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:gray_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_destructor.json
deleted file mode 100644
index 1307e58d2..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_detector.json
deleted file mode 100644
index e7add5891..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:gray_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_disk_interface.json
deleted file mode 100644
index 8deecdabf..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:gray_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_exporter.json
deleted file mode 100644
index 7c3c58c2a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_external_storage.json
deleted file mode 100644
index 4b026875a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_grid.json
deleted file mode 100644
index 0c35ce3d6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:gray_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_importer.json
deleted file mode 100644
index 312555d44..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_network_receiver.json
deleted file mode 100644
index d81adf188..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:gray_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_network_transmitter.json
deleted file mode 100644
index 70a07df91..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:gray_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_relay.json
deleted file mode 100644
index c6676fcbf..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:gray_relay"
- }
-}
\ 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
deleted file mode 100644
index f5926ad95..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/gray_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_wireless_transmitter.json
deleted file mode 100644
index bbf671537..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/gray_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:gray_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_cable.json
deleted file mode 100644
index bb2dd7ca8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_constructor.json
deleted file mode 100644
index 73dfc7a8a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_controller.json
deleted file mode 100644
index f70633d98..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_crafting_grid.json
deleted file mode 100644
index bc294023e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_destructor.json
deleted file mode 100644
index a8ae00284..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_detector.json
deleted file mode 100644
index f5cd236a8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_disk_interface.json
deleted file mode 100644
index 9b74acbb7..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_exporter.json
deleted file mode 100644
index f44fe822f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_external_storage.json
deleted file mode 100644
index 98432deaa..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_grid.json
deleted file mode 100644
index 33dab8e26..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_importer.json
deleted file mode 100644
index e8954da13..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_network_receiver.json
deleted file mode 100644
index 17bebbdbc..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_network_transmitter.json
deleted file mode 100644
index df1b74eb0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_relay.json
deleted file mode 100644
index da3689085..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_relay"
- }
-}
\ 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
deleted file mode 100644
index 5e9f5db34..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/green_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_wireless_transmitter.json
deleted file mode 100644
index 3424885f4..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/green_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:green_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:green_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_cable.json
deleted file mode 100644
index b048178e6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_blue_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_constructor.json
deleted file mode 100644
index a2626d698..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_blue_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_controller.json
deleted file mode 100644
index 4d427d798..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_crafting_grid.json
deleted file mode 100644
index 160f490e1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_destructor.json
deleted file mode 100644
index a4225d775..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_blue_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_detector.json
deleted file mode 100644
index d0ed985b1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_disk_interface.json
deleted file mode 100644
index 89ea9102b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_exporter.json
deleted file mode 100644
index 6eeb49cb3..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_blue_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_external_storage.json
deleted file mode 100644
index d96e0cf51..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_blue_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_grid.json
deleted file mode 100644
index b07a63f31..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_importer.json
deleted file mode 100644
index 1f0939a9e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_blue_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_network_receiver.json
deleted file mode 100644
index 76b5e6fc4..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_network_transmitter.json
deleted file mode 100644
index b1479d3a7..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_relay.json
deleted file mode 100644
index 37fb39142..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:relay"
- }
-}
\ 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
deleted file mode 100644
index d9026e427..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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_blue_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_wireless_transmitter.json
deleted file mode 100644
index 079c8c7c6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_blue_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:light_blue_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_cable.json
deleted file mode 100644
index 5f8541b89..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_constructor.json
deleted file mode 100644
index 05cfc96cc..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_controller.json
deleted file mode 100644
index 5b526647c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_crafting_grid.json
deleted file mode 100644
index 808f17577..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_destructor.json
deleted file mode 100644
index 25a8906d0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_detector.json
deleted file mode 100644
index 4a633b213..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_disk_interface.json
deleted file mode 100644
index 326986dc8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_exporter.json
deleted file mode 100644
index 5abe2413c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_external_storage.json
deleted file mode 100644
index 286e45aad..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_grid.json
deleted file mode 100644
index eacbfd4e1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_importer.json
deleted file mode 100644
index 8588b5e6b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_network_receiver.json
deleted file mode 100644
index 0e08e1676..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_network_transmitter.json
deleted file mode 100644
index f47ee6865..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_relay.json
deleted file mode 100644
index 108d49c9f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_relay"
- }
-}
\ 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
deleted file mode 100644
index 8d044e90f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/light_gray_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_wireless_transmitter.json
deleted file mode 100644
index 842a8f574..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/light_gray_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:light_gray_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:light_gray_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_cable.json
deleted file mode 100644
index 63c4ac175..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_constructor.json
deleted file mode 100644
index c247576c8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_controller.json
deleted file mode 100644
index b47f8ca07..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_crafting_grid.json
deleted file mode 100644
index 9f37720a0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_destructor.json
deleted file mode 100644
index ad595c899..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_detector.json
deleted file mode 100644
index 70971a140..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_disk_interface.json
deleted file mode 100644
index 9c5e02f19..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_exporter.json
deleted file mode 100644
index 091aa3b64..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_external_storage.json
deleted file mode 100644
index 9c5dabe2d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_grid.json
deleted file mode 100644
index 0df5d9e80..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_importer.json
deleted file mode 100644
index 041a38299..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_network_receiver.json
deleted file mode 100644
index cc0ae467a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_network_transmitter.json
deleted file mode 100644
index 695ac7837..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_relay.json
deleted file mode 100644
index f327a70cd..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_relay"
- }
-}
\ 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
deleted file mode 100644
index b66210948..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/lime_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_wireless_transmitter.json
deleted file mode 100644
index 433477fa0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/lime_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:lime_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:lime_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_cable.json
deleted file mode 100644
index 4ba9ed0ee..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_constructor.json
deleted file mode 100644
index b30857c8b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_controller.json
deleted file mode 100644
index 3ef95812c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_crafting_grid.json
deleted file mode 100644
index 5392adec5..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_destructor.json
deleted file mode 100644
index 18c6e5319..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_detector.json
deleted file mode 100644
index 48b471405..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_disk_interface.json
deleted file mode 100644
index ecc5b7197..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_exporter.json
deleted file mode 100644
index 82675308a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_external_storage.json
deleted file mode 100644
index bf9112a71..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_grid.json
deleted file mode 100644
index dc14e9fd9..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_importer.json
deleted file mode 100644
index 5ef7d1cbe..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_network_receiver.json
deleted file mode 100644
index 3a51f49ad..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_network_transmitter.json
deleted file mode 100644
index 83e87448e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_relay.json
deleted file mode 100644
index b20acee6f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_relay"
- }
-}
\ 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
deleted file mode 100644
index 29a1ef8de..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/magenta_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_wireless_transmitter.json
deleted file mode 100644
index ac923b7ab..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/magenta_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:magenta_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:magenta_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_cable.json
deleted file mode 100644
index 58743ab2c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_constructor.json
deleted file mode 100644
index d3ea00e8d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_controller.json
deleted file mode 100644
index a49f4d0a0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_crafting_grid.json
deleted file mode 100644
index 1701ad6b1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_destructor.json
deleted file mode 100644
index beeed7aa7..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_detector.json
deleted file mode 100644
index 15a279eea..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_disk_interface.json
deleted file mode 100644
index b9a234195..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_exporter.json
deleted file mode 100644
index 58644dbbd..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_external_storage.json
deleted file mode 100644
index bf39d933c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_grid.json
deleted file mode 100644
index ed4db5c58..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_importer.json
deleted file mode 100644
index 31a19d0d1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_network_receiver.json
deleted file mode 100644
index 7f5f93995..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_network_transmitter.json
deleted file mode 100644
index 2a883881c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_relay.json
deleted file mode 100644
index 383053a5b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_relay"
- }
-}
\ 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
deleted file mode 100644
index 1d1d32708..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/orange_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_wireless_transmitter.json
deleted file mode 100644
index bf313bc0a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/orange_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:orange_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:orange_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_cable.json
deleted file mode 100644
index 66b092220..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_constructor.json
deleted file mode 100644
index fd11b2c52..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_controller.json
deleted file mode 100644
index 621994d06..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_crafting_grid.json
deleted file mode 100644
index 973fb1627..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_destructor.json
deleted file mode 100644
index d5c5e50db..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_detector.json
deleted file mode 100644
index b7604037c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_disk_interface.json
deleted file mode 100644
index 7f35efabf..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_exporter.json
deleted file mode 100644
index 3f1bf0a89..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_external_storage.json
deleted file mode 100644
index 9374906ca..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_grid.json
deleted file mode 100644
index f3023407b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_importer.json
deleted file mode 100644
index b71de635b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_network_receiver.json
deleted file mode 100644
index 8108f41b8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_network_transmitter.json
deleted file mode 100644
index 45cca06c1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_relay.json
deleted file mode 100644
index 46eacad2d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_relay"
- }
-}
\ 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
deleted file mode 100644
index 0730360e5..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/pink_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_wireless_transmitter.json
deleted file mode 100644
index 1cadb50c8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/pink_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:pink_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:pink_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_cable.json
deleted file mode 100644
index 686b58e42..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_constructor.json
deleted file mode 100644
index 048217a80..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_controller.json
deleted file mode 100644
index ff5078bc6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_crafting_grid.json
deleted file mode 100644
index 582b8e657..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_destructor.json
deleted file mode 100644
index e44e9d9d9..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_detector.json
deleted file mode 100644
index 232c58672..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_disk_interface.json
deleted file mode 100644
index 871acd659..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_exporter.json
deleted file mode 100644
index e604423dd..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_external_storage.json
deleted file mode 100644
index a66f6b08c..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_grid.json
deleted file mode 100644
index 2e5a4123f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_importer.json
deleted file mode 100644
index 445ef41d8..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_network_receiver.json
deleted file mode 100644
index e62460fb2..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_network_transmitter.json
deleted file mode 100644
index 936c7bb9a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_relay.json
deleted file mode 100644
index b069db8ad..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_relay"
- }
-}
\ 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
deleted file mode 100644
index 014bf959a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/purple_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_wireless_transmitter.json
deleted file mode 100644
index 3988644af..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/purple_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:purple_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:purple_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_cable.json
deleted file mode 100644
index f5c4dba6b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_constructor.json
deleted file mode 100644
index 320c72120..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_controller.json
deleted file mode 100644
index c45328352..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_crafting_grid.json
deleted file mode 100644
index 86bcd269f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_destructor.json
deleted file mode 100644
index c696d0362..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_detector.json
deleted file mode 100644
index 9ff1ac242..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_disk_interface.json
deleted file mode 100644
index db3119371..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_exporter.json
deleted file mode 100644
index ec0055d3f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_external_storage.json
deleted file mode 100644
index fcfed520b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_grid.json
deleted file mode 100644
index cca9f3a58..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_importer.json
deleted file mode 100644
index 62cb81780..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_network_receiver.json
deleted file mode 100644
index 9648c407a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_network_transmitter.json
deleted file mode 100644
index c0640bffb..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_relay.json
deleted file mode 100644
index 8f04b7e21..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_relay"
- }
-}
\ 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
deleted file mode 100644
index 5183299ab..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/red_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_wireless_transmitter.json
deleted file mode 100644
index 97575a878..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/red_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:red_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:red_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_cable.json
deleted file mode 100644
index 391ef5069..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_constructor.json
deleted file mode 100644
index 9962380f6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_controller.json
deleted file mode 100644
index 31286ec3d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_crafting_grid.json
deleted file mode 100644
index 39ab72213..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_destructor.json
deleted file mode 100644
index bd9cd406b..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_detector.json
deleted file mode 100644
index 56e8cece0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_disk_interface.json
deleted file mode 100644
index 1e8012e2f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_exporter.json
deleted file mode 100644
index 1a88c2bee..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_external_storage.json
deleted file mode 100644
index 96e00eb2e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_grid.json
deleted file mode 100644
index 1ccc44f9d..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_importer.json
deleted file mode 100644
index 15c6abdd6..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_network_receiver.json
deleted file mode 100644
index c8250b9ae..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_network_transmitter.json
deleted file mode 100644
index c793b5352..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_relay.json
deleted file mode 100644
index d58f4f5ed..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_relay"
- }
-}
\ 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
deleted file mode 100644
index c84fd7abc..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/white_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_wireless_transmitter.json
deleted file mode 100644
index 72ec2e841..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/white_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:white_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:white_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_cable.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_cable.json
deleted file mode 100644
index b06496b40..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_cable.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:cables"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_cable"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_constructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_constructor.json
deleted file mode 100644
index e79a9b969..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_constructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:constructors"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_constructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_controller.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_controller.json
deleted file mode 100644
index a3e4dfd95..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_controller.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:controllers"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_controller"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_crafting_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_crafting_grid.json
deleted file mode 100644
index 001f372ca..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_crafting_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:crafting_grids"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_crafting_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_destructor.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_destructor.json
deleted file mode 100644
index 89577b02a..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_destructor.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:destructors"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_destructor"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_detector.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_detector.json
deleted file mode 100644
index d4f652b5e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_detector.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:detectors"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_detector"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_disk_interface.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_disk_interface.json
deleted file mode 100644
index a65a2a5e1..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_disk_interface.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:disk_interfaces"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_disk_interface"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_exporter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_exporter.json
deleted file mode 100644
index 63fce49cb..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_exporter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:exporters"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_exporter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_external_storage.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_external_storage.json
deleted file mode 100644
index bdc510acc..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_external_storage.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:external_storages"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_external_storage"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_grid.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_grid.json
deleted file mode 100644
index 1fbd7fb19..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_grid.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:grids"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_grid"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_importer.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_importer.json
deleted file mode 100644
index 686a65d37..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_importer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:importers"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_importer"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_network_receiver.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_network_receiver.json
deleted file mode 100644
index 1c9a4ce3e..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_network_receiver.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_receivers"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_network_receiver"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_network_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_network_transmitter.json
deleted file mode 100644
index 6b0da48b5..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_network_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:network_transmitters"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_network_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_relay.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_relay.json
deleted file mode 100644
index d2c04d4b0..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_relay.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:relays"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_relay"
- }
-}
\ 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
deleted file mode 100644
index c6a01a55f..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_security_manager.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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/recipes/coloring/yellow_wireless_transmitter.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_wireless_transmitter.json
deleted file mode 100644
index f3b6744ca..000000000
--- a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/recipes/coloring/yellow_wireless_transmitter.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "type": "minecraft:crafting_shapeless",
- "category": "misc",
- "ingredients": [
- {
- "tag": "refinedstorage2:wireless_transmitters"
- },
- {
- "item": "minecraft:yellow_dye"
- }
- ],
- "result": {
- "item": "refinedstorage2:yellow_wireless_transmitter"
- }
-}
\ No newline at end of file
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/cables.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/cables.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/cables.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/cables.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/constructors.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/constructors.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/constructors.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/constructors.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/controllers.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/controllers.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/controllers.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/controllers.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/crafting_grids.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/crafting_grids.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/crafting_grids.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/crafting_grids.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/creative_controllers.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/creative_controllers.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/creative_controllers.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/creative_controllers.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/destructors.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/destructors.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/destructors.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/destructors.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/detectors.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/detectors.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/detectors.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/detectors.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/disk_interfaces.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/disk_interfaces.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/disk_interfaces.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/disk_interfaces.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/exporters.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/exporters.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/exporters.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/exporters.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/external_storages.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/external_storages.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/external_storages.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/external_storages.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/fluid_storage_disks.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/fluid_storage_disks.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/fluid_storage_disks.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/fluid_storage_disks.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/grids.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/grids.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/grids.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/grids.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/importers.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/importers.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/importers.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/importers.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/network_receivers.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/network_receivers.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/network_receivers.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/network_receivers.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/network_transmitters.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/network_transmitters.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/network_transmitters.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/network_transmitters.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/relays.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/relays.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/relays.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/relays.json
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/item/security_managers.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/security_managers.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/security_managers.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/storage_disks.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/storage_disks.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/storage_disks.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/storage_disks.json
diff --git a/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/wireless_transmitters.json b/refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/wireless_transmitters.json
similarity index 100%
rename from refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/items/wireless_transmitters.json
rename to refinedstorage2-platform-common/src/generated/resources/data/refinedstorage2/tags/item/wireless_transmitters.json
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 8ea62326c..939a01ac6 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
@@ -13,6 +13,7 @@
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.configurationcard.ConfigurationCardState;
import com.refinedmods.refinedstorage2.platform.common.constructordestructor.BlockBreakDestructorStrategyFactory;
import com.refinedmods.refinedstorage2.platform.common.constructordestructor.ConstructorBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.constructordestructor.ConstructorContainerMenu;
@@ -28,6 +29,8 @@
import com.refinedmods.refinedstorage2.platform.common.content.BlockEntityTypeFactory;
import com.refinedmods.refinedstorage2.platform.common.content.Blocks;
import com.refinedmods.refinedstorage2.platform.common.content.ContentIds;
+import com.refinedmods.refinedstorage2.platform.common.content.DataComponents;
+import com.refinedmods.refinedstorage2.platform.common.content.ExtendedMenuTypeFactory;
import com.refinedmods.refinedstorage2.platform.common.content.Items;
import com.refinedmods.refinedstorage2.platform.common.content.LootFunctions;
import com.refinedmods.refinedstorage2.platform.common.content.MenuTypeFactory;
@@ -36,6 +39,7 @@
import com.refinedmods.refinedstorage2.platform.common.content.Sounds;
import com.refinedmods.refinedstorage2.platform.common.controller.ControllerBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.controller.ControllerContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.controller.ControllerData;
import com.refinedmods.refinedstorage2.platform.common.controller.ControllerType;
import com.refinedmods.refinedstorage2.platform.common.detector.DetectorBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.detector.DetectorContainerMenu;
@@ -45,10 +49,14 @@
import com.refinedmods.refinedstorage2.platform.common.grid.CraftingGridContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.grid.GridBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.grid.GridContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.grid.GridData;
+import com.refinedmods.refinedstorage2.platform.common.grid.PortableGridData;
import com.refinedmods.refinedstorage2.platform.common.grid.WirelessGridContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.grid.WirelessGridData;
import com.refinedmods.refinedstorage2.platform.common.iface.InterfaceBlock;
import com.refinedmods.refinedstorage2.platform.common.iface.InterfaceBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.iface.InterfaceContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.iface.InterfaceData;
import com.refinedmods.refinedstorage2.platform.common.importer.ImporterBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.importer.ImporterContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.misc.ProcessorItem;
@@ -57,12 +65,17 @@
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.networking.NetworkTransmitterData;
import com.refinedmods.refinedstorage2.platform.common.networking.RelayBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.networking.RelayContainerMenu;
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.PlayerBoundSecurityCardData;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityCardBoundPlayer;
import com.refinedmods.refinedstorage2.platform.common.security.SecurityCardContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityCardData;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityCardPermissions;
import com.refinedmods.refinedstorage2.platform.common.security.SecurityManagerBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.security.SecurityManagerContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.storage.FluidStorageType;
@@ -89,6 +102,7 @@
import com.refinedmods.refinedstorage2.platform.common.storage.storageblock.ItemStorageBlockBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.storage.storageblock.ItemStorageBlockBlockItem;
import com.refinedmods.refinedstorage2.platform.common.storage.storageblock.ItemStorageBlockContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.storage.storageblock.StorageBlockData;
import com.refinedmods.refinedstorage2.platform.common.storage.storageblock.StorageBlockLootItemFunction;
import com.refinedmods.refinedstorage2.platform.common.storage.storagedisk.FluidStorageDiskItem;
import com.refinedmods.refinedstorage2.platform.common.storage.storagedisk.ItemStorageDiskItem;
@@ -103,15 +117,18 @@
import com.refinedmods.refinedstorage2.platform.common.support.NetworkNodeBlockItem;
import com.refinedmods.refinedstorage2.platform.common.support.SimpleBlock;
import com.refinedmods.refinedstorage2.platform.common.support.SimpleItem;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.SingleAmountData;
import com.refinedmods.refinedstorage2.platform.common.support.energy.EnergyLootItemFunction;
import com.refinedmods.refinedstorage2.platform.common.support.network.BaseNetworkNodeContainerBlockEntity;
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.ResourceContainerData;
import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceTypes;
import com.refinedmods.refinedstorage2.platform.common.upgrade.FortuneUpgradeItem;
import com.refinedmods.refinedstorage2.platform.common.upgrade.RangeUpgradeItem;
import com.refinedmods.refinedstorage2.platform.common.upgrade.RegulatorUpgradeContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.upgrade.RegulatorUpgradeState;
import com.refinedmods.refinedstorage2.platform.common.upgrade.SimpleUpgradeItem;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeDestinations;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeWithEnchantedBookRecipeSerializer;
@@ -120,13 +137,20 @@
import com.refinedmods.refinedstorage2.platform.common.wirelesstransmitter.RangeUpgradeWirelessTransmitterRangeModifier;
import com.refinedmods.refinedstorage2.platform.common.wirelesstransmitter.WirelessTransmitterBlockEntity;
import com.refinedmods.refinedstorage2.platform.common.wirelesstransmitter.WirelessTransmitterContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.wirelesstransmitter.WirelessTransmitterData;
import java.util.Optional;
+import java.util.UUID;
import java.util.function.BiFunction;
import java.util.function.Supplier;
import com.mojang.serialization.Codec;
+import com.mojang.serialization.MapCodec;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.GlobalPos;
+import net.minecraft.core.UUIDUtil;
+import net.minecraft.core.component.DataComponentType;
+import net.minecraft.network.codec.ByteBufCodecs;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.item.Item;
@@ -200,7 +224,7 @@ protected final void initializePlatformApi() {
registerNetworkComponents();
registerWirelessTransmitterRangeModifiers();
registerPermissions();
- registerSlotReferenceProvider();
+ registerInventorySlotReference();
}
private void registerStorageTypes() {
@@ -676,120 +700,125 @@ protected final void registerBlockEntities(
}
protected final void registerMenus(final RegistryCallback> callback,
- final MenuTypeFactory menuTypeFactory) {
+ final MenuTypeFactory menuTypeFactory,
+ final ExtendedMenuTypeFactory extendedMenuTypeFactory) {
Menus.INSTANCE.setController(callback.register(
CONTROLLER,
- () -> menuTypeFactory.create(ControllerContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(ControllerContainerMenu::new, ControllerData.STREAM_CODEC)
));
Menus.INSTANCE.setDiskDrive(callback.register(
DISK_DRIVE,
- () -> menuTypeFactory.create(DiskDriveContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(DiskDriveContainerMenu::new, ResourceContainerData.STREAM_CODEC)
));
Menus.INSTANCE.setGrid(callback.register(
GRID,
- () -> menuTypeFactory.create(GridContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(GridContainerMenu::new, GridData.STREAM_CODEC)
));
Menus.INSTANCE.setCraftingGrid(callback.register(
CRAFTING_GRID,
- () -> menuTypeFactory.create(CraftingGridContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(CraftingGridContainerMenu::new, GridData.STREAM_CODEC)
));
Menus.INSTANCE.setWirelessGrid(callback.register(
WIRELESS_GRID,
- () -> menuTypeFactory.create(WirelessGridContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(WirelessGridContainerMenu::new, WirelessGridData.STREAM_CODEC)
));
Menus.INSTANCE.setItemStorage(callback.register(
ITEM_STORAGE_BLOCK,
- () -> menuTypeFactory.create(ItemStorageBlockContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(ItemStorageBlockContainerMenu::new, StorageBlockData.STREAM_CODEC)
));
Menus.INSTANCE.setFluidStorage(callback.register(
FLUID_STORAGE_BLOCK,
- () -> menuTypeFactory.create(FluidStorageBlockContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(FluidStorageBlockContainerMenu::new, StorageBlockData.STREAM_CODEC)
));
Menus.INSTANCE.setImporter(callback.register(
IMPORTER,
- () -> menuTypeFactory.create(ImporterContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(ImporterContainerMenu::new, ResourceContainerData.STREAM_CODEC)
));
Menus.INSTANCE.setExporter(callback.register(
EXPORTER,
- () -> menuTypeFactory.create(ExporterContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(ExporterContainerMenu::new, ResourceContainerData.STREAM_CODEC)
));
Menus.INSTANCE.setInterface(callback.register(
INTERFACE,
- () -> menuTypeFactory.create(InterfaceContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(InterfaceContainerMenu::new, InterfaceData.STREAM_CODEC)
));
Menus.INSTANCE.setExternalStorage(callback.register(
EXTERNAL_STORAGE,
- () -> menuTypeFactory.create(ExternalStorageContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(ExternalStorageContainerMenu::new, ResourceContainerData.STREAM_CODEC)
));
Menus.INSTANCE.setDetector(callback.register(
DETECTOR,
- () -> menuTypeFactory.create(DetectorContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(DetectorContainerMenu::new, SingleAmountData.STREAM_CODEC)
));
Menus.INSTANCE.setDestructor(callback.register(
DESTRUCTOR,
- () -> menuTypeFactory.create(DestructorContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(DestructorContainerMenu::new, ResourceContainerData.STREAM_CODEC)
));
Menus.INSTANCE.setConstructor(callback.register(
CONSTRUCTOR,
- () -> menuTypeFactory.create(ConstructorContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(ConstructorContainerMenu::new, ResourceContainerData.STREAM_CODEC)
));
Menus.INSTANCE.setRegulatorUpgrade(callback.register(
REGULATOR_UPGRADE,
- () -> menuTypeFactory.create(RegulatorUpgradeContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(RegulatorUpgradeContainerMenu::new, SingleAmountData.STREAM_CODEC)
));
Menus.INSTANCE.setWirelessTransmitter(callback.register(
WIRELESS_TRANSMITTER,
- () -> menuTypeFactory.create(WirelessTransmitterContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(WirelessTransmitterContainerMenu::new,
+ WirelessTransmitterData.STREAM_CODEC)
));
Menus.INSTANCE.setStorageMonitor(callback.register(
STORAGE_MONITOR,
- () -> menuTypeFactory.create(StorageMonitorContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(StorageMonitorContainerMenu::new, ResourceContainerData.STREAM_CODEC)
));
Menus.INSTANCE.setNetworkTransmitter(callback.register(
NETWORK_TRANSMITTER,
- () -> menuTypeFactory.create(NetworkTransmitterContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(NetworkTransmitterContainerMenu::new,
+ NetworkTransmitterData.STREAM_CODEC)
));
Menus.INSTANCE.setPortableGridBlock(callback.register(
createIdentifier("portable_grid_block"),
- () -> menuTypeFactory.create(PortableGridBlockContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(PortableGridBlockContainerMenu::new, PortableGridData.STREAM_CODEC)
));
Menus.INSTANCE.setPortableGridItem(callback.register(
createIdentifier("portable_grid_item"),
- () -> menuTypeFactory.create(PortableGridItemContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(PortableGridItemContainerMenu::new, PortableGridData.STREAM_CODEC)
));
Menus.INSTANCE.setSecurityCard(callback.register(
SECURITY_CARD,
- () -> menuTypeFactory.create(SecurityCardContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(SecurityCardContainerMenu::new,
+ PlayerBoundSecurityCardData.STREAM_CODEC)
));
Menus.INSTANCE.setFallbackSecurityCard(callback.register(
FALLBACK_SECURITY_CARD,
- () -> menuTypeFactory.create(FallbackSecurityCardContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(FallbackSecurityCardContainerMenu::new, SecurityCardData.STREAM_CODEC)
+ ));
+ Menus.INSTANCE.setSecurityManager(callback.register(
+ SECURITY_MANAGER,
+ () -> menuTypeFactory.create(SecurityManagerContainerMenu::new)
));
- Menus.INSTANCE.setSecurityManager(callback.register(SECURITY_MANAGER, () -> menuTypeFactory.create(
- (syncId, playerInventory, buf) -> new SecurityManagerContainerMenu(syncId, playerInventory)
- )));
Menus.INSTANCE.setRelay(callback.register(
RELAY,
- () -> menuTypeFactory.create(RelayContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(RelayContainerMenu::new, ResourceContainerData.STREAM_CODEC)
));
Menus.INSTANCE.setDiskInterface(callback.register(
DISK_INTERFACE,
- () -> menuTypeFactory.create(DiskInterfaceContainerMenu::new)
+ () -> extendedMenuTypeFactory.create(DiskInterfaceContainerMenu::new, ResourceContainerData.STREAM_CODEC)
));
}
- protected final void registerLootFunctions(final RegistryCallback callback) {
+ protected final void registerLootFunctions(final RegistryCallback> callback) {
LootFunctions.INSTANCE.setStorageBlock(callback.register(
STORAGE_BLOCK,
- () -> new LootItemFunctionType(Codec.unit(new StorageBlockLootItemFunction()))
+ () -> new LootItemFunctionType<>(MapCodec.unit(new StorageBlockLootItemFunction()))
));
LootFunctions.INSTANCE.setPortableGrid(callback.register(
PORTABLE_GRID,
- () -> new LootItemFunctionType(Codec.unit(new PortableGridLootItemFunction()))
+ () -> new LootItemFunctionType<>(MapCodec.unit(new PortableGridLootItemFunction()))
));
LootFunctions.INSTANCE.setEnergy(callback.register(
createIdentifier("energy"),
- () -> new LootItemFunctionType(Codec.unit(new EnergyLootItemFunction()))
+ () -> new LootItemFunctionType<>(MapCodec.unit(new EnergyLootItemFunction()))
));
}
@@ -807,14 +836,56 @@ protected final void registerRecipeSerializers(final RegistryCallback> callback) {
+ DataComponents.INSTANCE.setEnergy(
+ callback.register(createIdentifier("energy"), () -> DataComponentType.builder()
+ .persistent(Codec.LONG)
+ .networkSynchronized(ByteBufCodecs.VAR_LONG)
+ .build()));
+ DataComponents.INSTANCE.setNetworkLocation(
+ callback.register(createIdentifier("network_location"), () -> DataComponentType.builder()
+ .persistent(GlobalPos.CODEC)
+ .networkSynchronized(GlobalPos.STREAM_CODEC)
+ .build()));
+ DataComponents.INSTANCE.setStorageReference(
+ callback.register(createIdentifier("storage_reference"), () -> DataComponentType.builder()
+ .persistent(UUIDUtil.CODEC)
+ .networkSynchronized(UUIDUtil.STREAM_CODEC)
+ .build()));
+ DataComponents.INSTANCE.setRegulatorUpgradeState(
+ callback.register(createIdentifier("regulator_upgrade_state"),
+ () -> DataComponentType.builder()
+ .persistent(RegulatorUpgradeState.CODEC)
+ .networkSynchronized(RegulatorUpgradeState.STREAM_CODEC)
+ .build()));
+ DataComponents.INSTANCE.setSecurityCardBoundPlayer(
+ callback.register(createIdentifier("security_card_bound_player"),
+ () -> DataComponentType.builder()
+ .persistent(SecurityCardBoundPlayer.CODEC)
+ .networkSynchronized(SecurityCardBoundPlayer.STREAM_CODEC)
+ .build()));
+ DataComponents.INSTANCE.setSecurityCardPermissions(
+ callback.register(createIdentifier("security_card_permissions"),
+ () -> DataComponentType.builder()
+ .persistent(SecurityCardPermissions.CODEC)
+ .networkSynchronized(SecurityCardPermissions.STREAM_CODEC)
+ .build()));
+ DataComponents.INSTANCE.setConfigurationCardState(
+ callback.register(createIdentifier("configuration_card_state"),
+ () -> DataComponentType.builder()
+ .persistent(ConfigurationCardState.CODEC)
+ .networkSynchronized(ConfigurationCardState.STREAM_CODEC)
+ .build()));
+ }
+
+ protected final void registerInventorySlotReference() {
PlatformApi.INSTANCE.getSlotReferenceFactoryRegistry().register(
createIdentifier("inventory"),
InventorySlotReferenceFactory.INSTANCE
);
}
- protected static boolean allowNbtUpdateAnimation(final ItemStack oldStack, final ItemStack newStack) {
+ protected static boolean allowComponentsUpdateAnimation(final ItemStack oldStack, final ItemStack newStack) {
return oldStack.getItem() != newStack.getItem();
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/AbstractPlatform.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/AbstractPlatform.java
index 6f84b85a8..70c66290a 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/AbstractPlatform.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/AbstractPlatform.java
@@ -1,40 +1,22 @@
package com.refinedmods.refinedstorage2.platform.common;
import com.refinedmods.refinedstorage2.platform.api.grid.strategy.GridInsertionStrategyFactory;
-import com.refinedmods.refinedstorage2.platform.common.support.ClientToServerCommunications;
-import com.refinedmods.refinedstorage2.platform.common.support.ServerToClientCommunications;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.MenuOpener;
import com.refinedmods.refinedstorage2.platform.common.support.render.FluidRenderer;
public abstract class AbstractPlatform implements Platform {
- private final ServerToClientCommunications serverToClientCommunications;
- private final ClientToServerCommunications clientToServerCommunications;
private final MenuOpener menuOpener;
private final FluidRenderer fluidRenderer;
private final GridInsertionStrategyFactory defaultGridInsertionStrategyFactory;
- protected AbstractPlatform(final ServerToClientCommunications serverToClientCommunications,
- final ClientToServerCommunications clientToServerCommunications,
- final MenuOpener menuOpener,
+ protected AbstractPlatform(final MenuOpener menuOpener,
final FluidRenderer fluidRenderer,
final GridInsertionStrategyFactory defaultGridInsertionStrategyFactory) {
- this.serverToClientCommunications = serverToClientCommunications;
- this.clientToServerCommunications = clientToServerCommunications;
this.menuOpener = menuOpener;
this.fluidRenderer = fluidRenderer;
this.defaultGridInsertionStrategyFactory = defaultGridInsertionStrategyFactory;
}
- @Override
- public ServerToClientCommunications getServerToClientCommunications() {
- return serverToClientCommunications;
- }
-
- @Override
- public ClientToServerCommunications getClientToServerCommunications() {
- return clientToServerCommunications;
- }
-
@Override
public MenuOpener getMenuOpener() {
return menuOpener;
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/Platform.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/Platform.java
index 81851872f..c790ac1ac 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/Platform.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/Platform.java
@@ -4,8 +4,6 @@
import com.refinedmods.refinedstorage2.api.grid.view.GridResourceFactory;
import com.refinedmods.refinedstorage2.api.network.energy.EnergyStorage;
import com.refinedmods.refinedstorage2.platform.api.grid.strategy.GridInsertionStrategyFactory;
-import com.refinedmods.refinedstorage2.platform.common.support.ClientToServerCommunications;
-import com.refinedmods.refinedstorage2.platform.common.support.ServerToClientCommunications;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.MenuOpener;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.TransferManager;
import com.refinedmods.refinedstorage2.platform.common.support.render.FluidRenderer;
@@ -25,16 +23,17 @@
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
+import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.server.level.ServerLevel;
+import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvent;
-import net.minecraft.tags.TagKey;
import net.minecraft.world.Container;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.inventory.CraftingContainer;
import net.minecraft.world.inventory.tooltip.TooltipComponent;
-import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.crafting.CraftingInput;
import net.minecraft.world.item.crafting.CraftingRecipe;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
@@ -46,16 +45,10 @@
public interface Platform {
Platform INSTANCE = new PlatformProxy();
- ServerToClientCommunications getServerToClientCommunications();
-
- ClientToServerCommunications getClientToServerCommunications();
-
MenuOpener getMenuOpener();
long getBucketAmount();
- TagKey
- getWrenchTag();
-
Config getConfig();
boolean canEditBoxLoseFocus(EditBox editBox);
@@ -82,7 +75,7 @@ public interface Platform {
NonNullList getRemainingCraftingItems(Player player,
CraftingRecipe craftingRecipe,
- CraftingContainer container);
+ CraftingInput input);
void onItemCrafted(Player player, ItemStack craftedStack, CraftingContainer container);
@@ -115,6 +108,10 @@ List processTooltipComponents(
Optional getEnergyStorage(ItemStack stack);
+ void sendPacketToServer(T packet);
+
+ void sendPacketToClient(ServerPlayer player, T packet);
+
record ContainedFluid(ItemStack remainderContainer, FluidResource fluid, long amount) {
}
}
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 8591e8b07..84d70c482 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
@@ -49,7 +49,6 @@
import com.refinedmods.refinedstorage2.platform.api.upgrade.BuiltinUpgradeDestinations;
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;
@@ -72,6 +71,8 @@
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.NetworkBoundItemHelperImpl;
+import com.refinedmods.refinedstorage2.platform.common.support.packet.c2s.C2SPackets;
+import com.refinedmods.refinedstorage2.platform.common.support.packet.s2c.S2CPackets;
import com.refinedmods.refinedstorage2.platform.common.support.registry.PlatformRegistryImpl;
import com.refinedmods.refinedstorage2.platform.common.support.resource.CompositeRecipeModIngredientConverter;
import com.refinedmods.refinedstorage2.platform.common.support.resource.FluidResourceFactory;
@@ -99,10 +100,7 @@
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.Component;
-import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
@@ -121,8 +119,9 @@
import static java.util.Objects.requireNonNull;
public class PlatformApiImpl implements PlatformApi {
- private final StorageRepository clientStorageRepository =
- new ClientStorageRepository(Platform.INSTANCE.getClientToServerCommunications()::sendStorageInfoRequest);
+ private final StorageRepository clientStorageRepository = new ClientStorageRepository(
+ C2SPackets::sendStorageInfoRequest
+ );
private final ComponentMapFactory networkComponentMapFactory =
new ComponentMapFactory<>();
private final NetworkBuilder networkBuilder =
@@ -180,16 +179,18 @@ public PlatformRegistry getStorageTypeRegistry() {
return storageTypeRegistry;
}
+ @Override
+ public StorageRepository getClientStorageRepository() {
+ return clientStorageRepository;
+ }
+
@SuppressWarnings("DataFlowIssue") // NeoForge makes null datafixer safe
@Override
public StorageRepository getStorageRepository(final Level level) {
- if (level.getServer() == null) {
- return clientStorageRepository;
- }
final ServerLevel serverLevel = requireNonNull(level.getServer().getLevel(Level.OVERWORLD));
return serverLevel.getDataStorage().computeIfAbsent(new SavedData.Factory<>(
- this::createStorageRepository,
- this::createStorageRepository,
+ StorageRepositoryImpl::new,
+ StorageRepositoryImpl::new,
null
), StorageRepositoryImpl.NAME);
}
@@ -199,16 +200,6 @@ public StorageContainerItemHelper getStorageContainerItemHelper() {
return storageContainerItemHelper;
}
- private StorageRepositoryImpl createStorageRepository(final CompoundTag tag) {
- final StorageRepositoryImpl repository = createStorageRepository();
- repository.read(tag);
- return repository;
- }
-
- private StorageRepositoryImpl createStorageRepository() {
- return new StorageRepositoryImpl(storageTypeRegistry);
- }
-
@Override
public PlatformRegistry getResourceTypeRegistry() {
return resourceTypeRegistry;
@@ -284,11 +275,6 @@ public PlatformRegistry getGridSynchronizerRegistry() {
return gridSynchronizerRegistry;
}
- @Override
- public void writeGridScreenOpeningData(final Grid grid, final FriendlyByteBuf buf) {
- AbstractGridContainerMenu.writeScreenOpeningData(grid, buf);
- }
-
@Override
public UpgradeRegistry getUpgradeRegistry() {
return upgradeRegistry;
@@ -522,24 +508,6 @@ public PlatformRegistry getSlotReferenceFactoryRegistry()
return slotReferenceFactoryRegistry;
}
- @Override
- public void writeSlotReference(final SlotReference slotReference, final FriendlyByteBuf buf) {
- this.slotReferenceFactoryRegistry.getId(slotReference.getFactory()).ifPresentOrElse(id -> {
- buf.writeBoolean(true);
- buf.writeResourceLocation(id);
- slotReference.writeToBuffer(buf);
- }, () -> buf.writeBoolean(false));
- }
-
- @Override
- public Optional getSlotReference(final FriendlyByteBuf buf) {
- if (!buf.readBoolean()) {
- return Optional.empty();
- }
- final ResourceLocation id = buf.readResourceLocation();
- return slotReferenceFactoryRegistry.get(id).map(factory -> factory.create(buf));
- }
-
@Override
public void addSlotReferenceProvider(final SlotReferenceProvider provider) {
slotReferenceProvider.addProvider(provider);
@@ -553,9 +521,7 @@ public SlotReference createInventorySlotReference(final Player player, final Int
@Override
public void useNetworkBoundItem(final Player player, final Item... items) {
final Set
- validItems = new HashSet<>(Arrays.asList(items));
- slotReferenceProvider.findForUse(player, items[0], validItems).ifPresent(
- slotReference -> Platform.INSTANCE.getClientToServerCommunications().sendUseNetworkBoundItem(slotReference)
- );
+ slotReferenceProvider.findForUse(player, items[0], validItems).ifPresent(C2SPackets::sendUseNetworkBoundItem);
}
@Override
@@ -583,7 +549,7 @@ public void sendNoPermissionToOpenMessage(final ServerPlayer player, final Compo
@Override
public void sendNoPermissionMessage(final ServerPlayer player, final Component message) {
- Platform.INSTANCE.getServerToClientCommunications().sendNoPermission(player, message);
+ S2CPackets.sendNoPermission(player, message);
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/PlatformProxy.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/PlatformProxy.java
index 651d552e5..844b1d4b0 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/PlatformProxy.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/PlatformProxy.java
@@ -4,8 +4,6 @@
import com.refinedmods.refinedstorage2.api.grid.view.GridResourceFactory;
import com.refinedmods.refinedstorage2.api.network.energy.EnergyStorage;
import com.refinedmods.refinedstorage2.platform.api.grid.strategy.GridInsertionStrategyFactory;
-import com.refinedmods.refinedstorage2.platform.common.support.ClientToServerCommunications;
-import com.refinedmods.refinedstorage2.platform.common.support.ServerToClientCommunications;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.MenuOpener;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.TransferManager;
import com.refinedmods.refinedstorage2.platform.common.support.render.FluidRenderer;
@@ -25,16 +23,17 @@
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
+import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.server.level.ServerLevel;
+import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvent;
-import net.minecraft.tags.TagKey;
import net.minecraft.world.Container;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.inventory.CraftingContainer;
import net.minecraft.world.inventory.tooltip.TooltipComponent;
-import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.crafting.CraftingInput;
import net.minecraft.world.item.crafting.CraftingRecipe;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
@@ -55,16 +54,6 @@ public static void loadPlatform(final Platform platform) {
proxy.platform = platform;
}
- @Override
- public ServerToClientCommunications getServerToClientCommunications() {
- return ensureLoaded().getServerToClientCommunications();
- }
-
- @Override
- public ClientToServerCommunications getClientToServerCommunications() {
- return ensureLoaded().getClientToServerCommunications();
- }
-
@Override
public MenuOpener getMenuOpener() {
return ensureLoaded().getMenuOpener();
@@ -75,11 +64,6 @@ public long getBucketAmount() {
return ensureLoaded().getBucketAmount();
}
- @Override
- public TagKey
- getWrenchTag() {
- return ensureLoaded().getWrenchTag();
- }
-
@Override
public Config getConfig() {
return ensureLoaded().getConfig();
@@ -149,8 +133,8 @@ public ItemStack getCloneItemStack(final BlockState state,
@Override
public NonNullList getRemainingCraftingItems(final Player player,
final CraftingRecipe craftingRecipe,
- final CraftingContainer container) {
- return ensureLoaded().getRemainingCraftingItems(player, craftingRecipe, container);
+ final CraftingInput input) {
+ return ensureLoaded().getRemainingCraftingItems(player, craftingRecipe, input);
}
@Override
@@ -223,6 +207,16 @@ public Optional getEnergyStorage(final ItemStack stack) {
return ensureLoaded().getEnergyStorage(stack);
}
+ @Override
+ public void sendPacketToServer(final T packet) {
+ ensureLoaded().sendPacketToServer(packet);
+ }
+
+ @Override
+ public void sendPacketToClient(final ServerPlayer player, final T packet) {
+ ensureLoaded().sendPacketToClient(player, packet);
+ }
+
private Platform ensureLoaded() {
if (platform == null) {
throw new IllegalStateException("Platform not loaded yet");
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/configurationcard/ConfigurationCardItem.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/configurationcard/ConfigurationCardItem.java
index eb4bdaa99..a98f98010 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/configurationcard/ConfigurationCardItem.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/configurationcard/ConfigurationCardItem.java
@@ -2,17 +2,16 @@
import com.refinedmods.refinedstorage2.platform.api.configurationcard.ConfigurationCardTarget;
import com.refinedmods.refinedstorage2.platform.api.support.HelpTooltipComponent;
+import com.refinedmods.refinedstorage2.platform.common.content.DataComponents;
import java.util.List;
import java.util.Optional;
import javax.annotation.Nullable;
import net.minecraft.ChatFormatting;
+import net.minecraft.core.HolderLookup;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.nbt.CompoundTag;
-import net.minecraft.nbt.ListTag;
-import net.minecraft.nbt.StringTag;
-import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.resources.ResourceLocation;
@@ -30,19 +29,13 @@
import net.minecraft.world.level.block.entity.BlockEntityType;
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createTranslation;
-import static java.util.Objects.requireNonNull;
public class ConfigurationCardItem extends Item {
private static final Component EMPTY_HELP = createTranslation("item", "configuration_card.empty_help");
private static final Component CONFIGURED_HELP = createTranslation("item", "configuration_card.configured_help");
-
private static final Component EMPTY = createTranslation("item", "configuration_card.empty")
.withStyle(ChatFormatting.GRAY);
- private static final String TAG_TYPE = "type";
- private static final String TAG_CONFIG = "config";
- private static final String TAG_UPGRADES = "upgrades";
-
public ConfigurationCardItem() {
super(new Item.Properties().stacksTo(1));
}
@@ -57,35 +50,40 @@ public InteractionResult useOn(final UseOnContext ctx) {
return InteractionResult.CONSUME;
}
final ItemStack stack = ctx.getItemInHand();
- if (stack.getTag() == null) {
- writeConfiguration(stack, ctx.getPlayer(), target, blockEntity.getType());
+ final ConfigurationCardState state = stack.get(DataComponents.INSTANCE.getConfigurationCardState());
+ if (state == null) {
+ stack.set(DataComponents.INSTANCE.getConfigurationCardState(), new ConfigurationCardState(
+ blockEntity.getType(),
+ createConfigTag(target, ctx.getLevel().registryAccess()),
+ target.getUpgradeItems()
+ ));
+ sendCopiedConfigurationMessage(ctx.getPlayer(), blockEntity.getType());
return InteractionResult.CONSUME;
}
- return applyConfiguration(ctx.getPlayer(), blockEntity, target, stack.getTag());
+ return applyConfiguration(ctx.getPlayer(), blockEntity, target, state, ctx.getLevel().registryAccess());
}
private InteractionResult applyConfiguration(
final Player player,
final BlockEntity targetBlockEntity,
final ConfigurationCardTarget target,
- final CompoundTag tag
+ final ConfigurationCardState state,
+ final HolderLookup.Provider provider
) {
- final BlockEntityType> existingConfiguredType = getConfiguredType(tag);
- if (existingConfiguredType != targetBlockEntity.getType()) {
- return configurationCardIsConfiguredForDifferentType(player, existingConfiguredType);
+ if (state.blockEntityType() != targetBlockEntity.getType()) {
+ return configurationCardIsConfiguredForDifferentType(player, state.blockEntityType());
}
- target.readConfiguration(tag.getCompound(TAG_CONFIG));
- tryTransferUpgrades(player, target, tag);
+ target.readConfiguration(state.config(), provider);
+ tryTransferUpgrades(player, target, state.upgradeItems());
targetBlockEntity.setChanged();
player.sendSystemMessage(createTranslation("item", "configuration_card.applied_configuration"));
return InteractionResult.SUCCESS;
}
- private void tryTransferUpgrades(final Player player, final ConfigurationCardTarget target, final CompoundTag tag) {
- final ListTag upgradesTag = tag.getList(TAG_UPGRADES, Tag.TAG_STRING);
- for (final Tag upgradeItemTag : upgradesTag) {
- final ResourceLocation upgradeItemKey = new ResourceLocation(upgradeItemTag.getAsString());
- final Item upgradeItem = BuiltInRegistries.ITEM.get(upgradeItemKey);
+ private void tryTransferUpgrades(final Player player,
+ final ConfigurationCardTarget target,
+ final List
- upgradeItems) {
+ for (final Item upgradeItem : upgradeItems) {
final int upgradeIndexInPlayerInventory = player.getInventory().findSlotMatchingItem(
new ItemStack(upgradeItem)
);
@@ -109,30 +107,9 @@ private InteractionResult configurationCardIsConfiguredForDifferentType(
return InteractionResult.CONSUME;
}
- private void writeConfiguration(final ItemStack stack,
- final Player player,
- final ConfigurationCardTarget target,
- final BlockEntityType> type) {
+ private CompoundTag createConfigTag(final ConfigurationCardTarget target, final HolderLookup.Provider provider) {
final CompoundTag tag = new CompoundTag();
- tag.putString(TAG_TYPE, requireNonNull(BuiltInRegistries.BLOCK_ENTITY_TYPE.getKey(type)).toString());
- tag.put(TAG_CONFIG, createConfigTag(target));
- tag.put(TAG_UPGRADES, createUpgradesTag(target));
- stack.setTag(tag);
- sendCopiedConfigurationMessage(player, type);
- }
-
- private CompoundTag createConfigTag(final ConfigurationCardTarget target) {
- final CompoundTag tag = new CompoundTag();
- target.writeConfiguration(tag);
- return tag;
- }
-
- private ListTag createUpgradesTag(final ConfigurationCardTarget target) {
- final ListTag tag = new ListTag();
- target.getUpgradeItems().forEach(item -> {
- final ResourceLocation itemKey = BuiltInRegistries.ITEM.getKey(item);
- tag.add(StringTag.valueOf(itemKey.toString()));
- });
+ target.writeConfiguration(tag, provider);
return tag;
}
@@ -160,45 +137,36 @@ public InteractionResultHolder use(final Level level, final Player pl
@Override
public void appendHoverText(final ItemStack stack,
- @Nullable final Level level,
+ final TooltipContext context,
final List lines,
final TooltipFlag flag) {
- super.appendHoverText(stack, level, lines, flag);
- if (stack.getTag() == null) {
+ super.appendHoverText(stack, context, lines, flag);
+ final ConfigurationCardState state = stack.get(DataComponents.INSTANCE.getConfigurationCardState());
+ if (state == null) {
lines.add(EMPTY);
return;
}
- final BlockEntityType> configuredType = getConfiguredType(stack.getTag());
- if (configuredType == null) {
- return;
- }
lines.add(createTranslation(
"item",
"configuration_card.configured",
- getConfiguredTypeTranslation(configuredType).withStyle(ChatFormatting.WHITE)
+ getConfiguredTypeTranslation(state.blockEntityType()).withStyle(ChatFormatting.WHITE)
).withStyle(ChatFormatting.GRAY));
}
- @Nullable
- private BlockEntityType> getConfiguredType(final CompoundTag tag) {
- final ResourceLocation type = new ResourceLocation(tag.getString(TAG_TYPE));
- return BuiltInRegistries.BLOCK_ENTITY_TYPE.get(type);
+ @Override
+ public Optional getTooltipImage(final ItemStack stack) {
+ return Optional.of(new HelpTooltipComponent(isActive(stack) ? CONFIGURED_HELP : EMPTY_HELP));
+ }
+
+ boolean isActive(final ItemStack stack) {
+ return stack.has(DataComponents.INSTANCE.getConfigurationCardState());
}
- private MutableComponent getConfiguredTypeTranslation(final BlockEntityType> type) {
+ private static MutableComponent getConfiguredTypeTranslation(final BlockEntityType> type) {
final ResourceLocation typeId = BuiltInRegistries.BLOCK_ENTITY_TYPE.getKey(type);
if (typeId == null) {
return Component.empty();
}
return Component.translatable("block." + typeId.getNamespace() + "." + typeId.getPath());
}
-
- @Override
- public Optional getTooltipImage(final ItemStack stack) {
- return Optional.of(new HelpTooltipComponent(isActive(stack) ? CONFIGURED_HELP : EMPTY_HELP));
- }
-
- boolean isActive(final ItemStack stack) {
- return stack.getTag() != null && stack.getTag().contains(TAG_TYPE);
- }
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/configurationcard/ConfigurationCardItemPropertyFunction.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/configurationcard/ConfigurationCardItemPropertyFunction.java
index 0da16a8f9..3f1e46bcb 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/configurationcard/ConfigurationCardItemPropertyFunction.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/configurationcard/ConfigurationCardItemPropertyFunction.java
@@ -8,8 +8,10 @@
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
+import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createIdentifier;
+
public class ConfigurationCardItemPropertyFunction implements ClampedItemPropertyFunction {
- public static final ResourceLocation NAME = new ResourceLocation("active");
+ public static final ResourceLocation NAME = createIdentifier("configuration_card_active");
@Override
public float unclampedCall(final ItemStack itemStack,
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/configurationcard/ConfigurationCardState.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/configurationcard/ConfigurationCardState.java
new file mode 100644
index 000000000..58fbc7dcc
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/configurationcard/ConfigurationCardState.java
@@ -0,0 +1,37 @@
+package com.refinedmods.refinedstorage2.platform.common.configurationcard;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.mojang.serialization.Codec;
+import com.mojang.serialization.codecs.RecordCodecBuilder;
+import net.minecraft.core.registries.BuiltInRegistries;
+import net.minecraft.core.registries.Registries;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.ByteBufCodecs;
+import net.minecraft.network.codec.StreamCodec;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+
+public record ConfigurationCardState(BlockEntityType> blockEntityType,
+ CompoundTag config,
+ List
- upgradeItems) {
+ public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group(
+ BuiltInRegistries.BLOCK_ENTITY_TYPE.byNameCodec().fieldOf("blockEntityType")
+ .forGetter(ConfigurationCardState::blockEntityType),
+ CompoundTag.CODEC.fieldOf("config")
+ .forGetter(ConfigurationCardState::config),
+ Codec.list(BuiltInRegistries.ITEM.byNameCodec()).fieldOf("upgradeItems")
+ .forGetter(ConfigurationCardState::upgradeItems)
+ ).apply(instance, ConfigurationCardState::new));
+
+ public static final StreamCodec STREAM_CODEC =
+ StreamCodec.composite(
+ ByteBufCodecs.registry(Registries.BLOCK_ENTITY_TYPE), ConfigurationCardState::blockEntityType,
+ ByteBufCodecs.COMPOUND_TAG, ConfigurationCardState::config,
+ ByteBufCodecs.collection(ArrayList::new, ByteBufCodecs.registry(Registries.ITEM)),
+ ConfigurationCardState::upgradeItems,
+ ConfigurationCardState::new
+ );
+}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/BlockBreakDestructorStrategyFactory.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/BlockBreakDestructorStrategyFactory.java
index a6f0c4927..5177cf9d8 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/BlockBreakDestructorStrategyFactory.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/BlockBreakDestructorStrategyFactory.java
@@ -12,6 +12,8 @@
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
+import net.minecraft.core.registries.Registries;
+import net.minecraft.resources.ResourceKey;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.enchantment.Enchantment;
@@ -19,11 +21,11 @@
public class BlockBreakDestructorStrategyFactory implements DestructorStrategyFactory {
private static final ItemStack DEFAULT_TOOL = new ItemStack(net.minecraft.world.item.Items.DIAMOND_PICKAXE);
- private static final List TOOLS = List.of(
- Tool.of(Items.INSTANCE::getSilkTouchUpgrade, Enchantments.SILK_TOUCH, 1),
- Tool.of(Items.INSTANCE::getFortune3Upgrade, Enchantments.BLOCK_FORTUNE, 3),
- Tool.of(Items.INSTANCE::getFortune2Upgrade, Enchantments.BLOCK_FORTUNE, 2),
- Tool.of(Items.INSTANCE::getFortune1Upgrade, Enchantments.BLOCK_FORTUNE, 1)
+ private static final List UPGRADE_MAPPINGS = List.of(
+ new UpgradeMapping(Items.INSTANCE::getSilkTouchUpgrade, Enchantments.SILK_TOUCH, 1),
+ new UpgradeMapping(Items.INSTANCE::getFortune3Upgrade, Enchantments.FORTUNE, 3),
+ new UpgradeMapping(Items.INSTANCE::getFortune2Upgrade, Enchantments.FORTUNE, 2),
+ new UpgradeMapping(Items.INSTANCE::getFortune1Upgrade, Enchantments.FORTUNE, 1)
);
@Override
@@ -32,24 +34,26 @@ public Optional create(final ServerLevel level,
final Direction direction,
final UpgradeState upgradeState,
final boolean pickupItems) {
- final ItemStack tool = createTool(upgradeState);
+ final ItemStack tool = DEFAULT_TOOL.copy();
+ enchantTool(level, upgradeState, tool);
return Optional.of(new BlockBreakDestructorStrategy(level, pos, direction, tool));
}
- private ItemStack createTool(final UpgradeState state) {
- for (final Tool tool : TOOLS) {
- if (state.has(tool.itemSupplier.get())) {
- return tool.tool;
+ private static void enchantTool(final ServerLevel level, final UpgradeState upgradeState, final ItemStack tool) {
+ for (final UpgradeMapping upgradeMapping : UPGRADE_MAPPINGS) {
+ if (upgradeState.has(upgradeMapping.upgradeItemSupplier.get())) {
+ level.holderLookup(Registries.ENCHANTMENT).get(upgradeMapping.enchantment).ifPresent(
+ enchantment -> tool.enchant(enchantment, upgradeMapping.level)
+ );
+ return;
}
}
- return DEFAULT_TOOL;
}
- private record Tool(Supplier itemSupplier, ItemStack tool) {
- private static Tool of(final Supplier item, final Enchantment enchantment, final int level) {
- final ItemStack resultingTool = DEFAULT_TOOL.copy();
- resultingTool.enchant(enchantment, level);
- return new Tool(item, resultingTool);
- }
+ private record UpgradeMapping(
+ Supplier upgradeItemSupplier,
+ ResourceKey enchantment,
+ int level
+ ) {
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ConstructorBlockEntity.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ConstructorBlockEntity.java
index 4c870f75e..27e12c396 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ConstructorBlockEntity.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ConstructorBlockEntity.java
@@ -24,6 +24,7 @@
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
+import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerLevel;
@@ -100,14 +101,14 @@ public void postDoWork() {
}
@Override
- public void writeConfiguration(final CompoundTag tag) {
- super.writeConfiguration(tag);
+ public void writeConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.writeConfiguration(tag, provider);
tag.putBoolean(TAG_DROP_ITEMS, dropItems);
}
@Override
- public void readConfiguration(final CompoundTag tag) {
- super.readConfiguration(tag);
+ public void readConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.readConfiguration(tag, provider);
if (tag.contains(TAG_DROP_ITEMS)) {
dropItems = tag.getBoolean(TAG_DROP_ITEMS);
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ConstructorContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ConstructorContainerMenu.java
index f27575351..8cc5b09da 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ConstructorContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/ConstructorContainerMenu.java
@@ -5,10 +5,10 @@
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.AbstractSchedulingContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ClientProperty;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ServerProperty;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerData;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeContainer;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeDestinations;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
@@ -18,12 +18,14 @@
public class ConstructorContainerMenu extends AbstractSchedulingContainerMenu {
private static final MutableComponent FILTER_HELP = createTranslation("gui", "constructor.filter_help");
- public ConstructorContainerMenu(final int syncId, final Inventory playerInventory, final FriendlyByteBuf buf) {
+ public ConstructorContainerMenu(final int syncId,
+ final Inventory playerInventory,
+ final ResourceContainerData resourceContainerData) {
super(
Menus.INSTANCE.getConstructor(),
syncId,
playerInventory.player,
- buf,
+ resourceContainerData,
UpgradeDestinations.CONSTRUCTOR,
FILTER_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 1792aef9f..7a72a8546 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
@@ -14,8 +14,9 @@
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.NetworkNodeMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeExtendedMenuProvider;
import com.refinedmods.refinedstorage2.platform.common.support.network.AbstractUpgradeableNetworkNodeContainerBlockEntity;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerData;
import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerImpl;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeDestinations;
@@ -25,18 +26,19 @@
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
+import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
-import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.chat.Component;
+import net.minecraft.network.codec.StreamEncoder;
import net.minecraft.server.level.ServerLevel;
-import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.level.block.state.BlockState;
public class DestructorBlockEntity extends AbstractUpgradeableNetworkNodeContainerBlockEntity
- implements NetworkNodeMenuProvider {
+ implements NetworkNodeExtendedMenuProvider {
private static final String TAG_FILTER_MODE = "fim";
private static final String TAG_PICKUP_ITEMS = "pi";
@@ -89,17 +91,17 @@ public void setFilterMode(final FilterMode mode) {
}
@Override
- public void writeConfiguration(final CompoundTag tag) {
- super.writeConfiguration(tag);
+ public void writeConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.writeConfiguration(tag, provider);
tag.putInt(TAG_FILTER_MODE, FilterModeSettings.getFilterMode(filter.getMode()));
tag.putBoolean(TAG_PICKUP_ITEMS, pickupItems);
- filterWithFuzzyMode.save(tag);
+ filterWithFuzzyMode.save(tag, provider);
}
@Override
- public void readConfiguration(final CompoundTag tag) {
- super.readConfiguration(tag);
- filterWithFuzzyMode.load(tag);
+ public void readConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.readConfiguration(tag, provider);
+ filterWithFuzzyMode.load(tag, provider);
if (tag.contains(TAG_FILTER_MODE)) {
filter.setMode(FilterModeSettings.getFilterMode(tag.getInt(TAG_FILTER_MODE)));
}
@@ -115,8 +117,13 @@ protected void setEnergyUsage(final long upgradeEnergyUsage) {
}
@Override
- public void writeScreenOpeningData(final ServerPlayer player, final FriendlyByteBuf buf) {
- filterWithFuzzyMode.getFilterContainer().writeToUpdatePacket(buf);
+ public ResourceContainerData getMenuData() {
+ return ResourceContainerData.of(filterWithFuzzyMode.getFilterContainer());
+ }
+
+ @Override
+ public StreamEncoder getMenuCodec() {
+ return ResourceContainerData.STREAM_CODEC;
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/DestructorContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/DestructorContainerMenu.java
index ca122493d..b3f5dabf3 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/DestructorContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/constructordestructor/DestructorContainerMenu.java
@@ -8,10 +8,10 @@
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ClientProperty;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.PropertyTypes;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ServerProperty;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerData;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeContainer;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeDestinations;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
@@ -21,12 +21,14 @@
public class DestructorContainerMenu extends AbstractSimpleFilterContainerMenu {
private static final MutableComponent FILTER_HELP = createTranslation("gui", "destructor.filter_help");
- public DestructorContainerMenu(final int syncId, final Inventory playerInventory, final FriendlyByteBuf buf) {
+ public DestructorContainerMenu(final int syncId,
+ final Inventory playerInventory,
+ final ResourceContainerData resourceContainerData) {
super(
Menus.INSTANCE.getDestructor(),
syncId,
playerInventory.player,
- buf,
+ resourceContainerData,
UpgradeDestinations.DESTRUCTOR,
FILTER_HELP
);
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 f258547be..f3aabbc0c 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
@@ -44,8 +44,8 @@ public boolean apply(final Filter filter,
|| blockState.getValue(LiquidBlock.LEVEL) != 0) {
return false;
}
- final Fluid fluid = liquidBlock.getFluidState(blockState).getType();
- final FluidResource fluidResource = new FluidResource(fluid, null);
+ final Fluid fluid = blockState.getFluidState().getType();
+ final FluidResource fluidResource = new FluidResource(fluid);
if (!filter.isAllowed(fluidResource)) {
return false;
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ColorMap.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ColorMap.java
index 9534c13f9..484101f96 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ColorMap.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ColorMap.java
@@ -35,7 +35,7 @@ protected final ResourceLocation getId(final DyeColor color) {
if (color == defaultColor) {
return baseId;
}
- return new ResourceLocation(baseId.getNamespace(), color.getName() + "_" + baseId.getPath());
+ return ResourceLocation.fromNamespaceAndPath(baseId.getNamespace(), color.getName() + "_" + baseId.getPath());
}
public void forEach(final ColoredConsumer consumer) {
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 811af7e5b..8f9247f13 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
@@ -22,7 +22,7 @@ public final class ContentNames {
public static final MutableComponent CREATIVE_CONTROLLER = name("creative_controller");
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 REGULATOR_UPGRADE = createTranslation("item", "regulator_upgrade");
public static final MutableComponent STORAGE_MONITOR = name("storage_monitor");
public static final MutableComponent INTERFACE = name("interface");
public static final MutableComponent DISK_DRIVE = name("disk_drive");
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/DataComponents.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/DataComponents.java
new file mode 100644
index 000000000..e59fa268c
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/DataComponents.java
@@ -0,0 +1,99 @@
+package com.refinedmods.refinedstorage2.platform.common.content;
+
+import com.refinedmods.refinedstorage2.platform.common.configurationcard.ConfigurationCardState;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityCardBoundPlayer;
+import com.refinedmods.refinedstorage2.platform.common.security.SecurityCardPermissions;
+import com.refinedmods.refinedstorage2.platform.common.upgrade.RegulatorUpgradeState;
+
+import java.util.UUID;
+import java.util.function.Supplier;
+import javax.annotation.Nullable;
+
+import net.minecraft.core.GlobalPos;
+import net.minecraft.core.component.DataComponentType;
+
+import static java.util.Objects.requireNonNull;
+
+public final class DataComponents {
+ public static final DataComponents INSTANCE = new DataComponents();
+
+ @Nullable
+ private Supplier> energy;
+ @Nullable
+ private Supplier> networkLocation;
+ @Nullable
+ private Supplier> storageReference;
+ @Nullable
+ private Supplier> regulatorUpgradeState;
+ @Nullable
+ private Supplier> securityCardBoundPlayer;
+ @Nullable
+ private Supplier> securityCardPermissions;
+ @Nullable
+ private Supplier> configurationCardState;
+
+ private DataComponents() {
+ }
+
+ public DataComponentType getEnergy() {
+ return requireNonNull(energy).get();
+ }
+
+ public void setEnergy(@Nullable final Supplier> supplier) {
+ this.energy = supplier;
+ }
+
+ public DataComponentType getNetworkLocation() {
+ return requireNonNull(networkLocation).get();
+ }
+
+ public void setNetworkLocation(@Nullable final Supplier> supplier) {
+ this.networkLocation = supplier;
+ }
+
+ public DataComponentType getStorageReference() {
+ return requireNonNull(storageReference).get();
+ }
+
+ public void setStorageReference(@Nullable final Supplier> supplier) {
+ this.storageReference = supplier;
+ }
+
+ public DataComponentType getRegulatorUpgradeState() {
+ return requireNonNull(regulatorUpgradeState).get();
+ }
+
+ public void setRegulatorUpgradeState(@Nullable final Supplier> supplier) {
+ this.regulatorUpgradeState = supplier;
+ }
+
+ public DataComponentType getSecurityCardBoundPlayer() {
+ return requireNonNull(securityCardBoundPlayer).get();
+ }
+
+ public void setSecurityCardBoundPlayer(
+ @Nullable final Supplier> supplier
+ ) {
+ this.securityCardBoundPlayer = supplier;
+ }
+
+ public DataComponentType getSecurityCardPermissions() {
+ return requireNonNull(securityCardPermissions).get();
+ }
+
+ public void setSecurityCardPermissions(
+ @Nullable final Supplier> supplier
+ ) {
+ this.securityCardPermissions = supplier;
+ }
+
+ public DataComponentType getConfigurationCardState() {
+ return requireNonNull(configurationCardState).get();
+ }
+
+ public void setConfigurationCardState(
+ @Nullable final Supplier> supplier
+ ) {
+ this.configurationCardState = supplier;
+ }
+}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ExtendedMenuTypeFactory.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ExtendedMenuTypeFactory.java
new file mode 100644
index 000000000..16918adeb
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/ExtendedMenuTypeFactory.java
@@ -0,0 +1,20 @@
+package com.refinedmods.refinedstorage2.platform.common.content;
+
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.StreamCodec;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.inventory.MenuType;
+
+@FunctionalInterface
+public interface ExtendedMenuTypeFactory {
+ MenuType create(
+ MenuSupplier supplier,
+ StreamCodec streamCodec
+ );
+
+ @FunctionalInterface
+ interface MenuSupplier {
+ T create(int syncId, Inventory playerInventory, D data);
+ }
+}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/LootFunctions.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/LootFunctions.java
index a033282ea..b019d788f 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/LootFunctions.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/LootFunctions.java
@@ -1,5 +1,9 @@
package com.refinedmods.refinedstorage2.platform.common.content;
+import com.refinedmods.refinedstorage2.platform.common.storage.portablegrid.PortableGridLootItemFunction;
+import com.refinedmods.refinedstorage2.platform.common.storage.storageblock.StorageBlockLootItemFunction;
+import com.refinedmods.refinedstorage2.platform.common.support.energy.EnergyLootItemFunction;
+
import java.util.function.Supplier;
import javax.annotation.Nullable;
@@ -11,36 +15,36 @@ public final class LootFunctions {
public static final LootFunctions INSTANCE = new LootFunctions();
@Nullable
- private Supplier storageBlock;
+ private Supplier> storageBlock;
@Nullable
- private Supplier energy;
+ private Supplier> energy;
@Nullable
- private Supplier portableGrid;
+ private Supplier> portableGrid;
private LootFunctions() {
}
- public LootItemFunctionType getStorageBlock() {
+ public LootItemFunctionType getStorageBlock() {
return requireNonNull(storageBlock).get();
}
- public void setStorageBlock(final Supplier supplier) {
+ public void setStorageBlock(final Supplier> supplier) {
this.storageBlock = supplier;
}
- public LootItemFunctionType getEnergy() {
+ public LootItemFunctionType getEnergy() {
return requireNonNull(energy).get();
}
- public void setEnergy(final Supplier supplier) {
+ public void setEnergy(final Supplier> supplier) {
this.energy = supplier;
}
- public LootItemFunctionType getPortableGrid() {
+ public LootItemFunctionType getPortableGrid() {
return requireNonNull(portableGrid).get();
}
- public void setPortableGrid(final Supplier portableGrid) {
- this.portableGrid = portableGrid;
+ public void setPortableGrid(final Supplier> supplier) {
+ this.portableGrid = supplier;
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/MenuTypeFactory.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/MenuTypeFactory.java
index 901b772ec..244565804 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/MenuTypeFactory.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/MenuTypeFactory.java
@@ -1,6 +1,5 @@
package com.refinedmods.refinedstorage2.platform.common.content;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.inventory.MenuType;
@@ -11,6 +10,6 @@ public interface MenuTypeFactory {
@FunctionalInterface
interface MenuSupplier {
- T create(int syncId, Inventory playerInventory, FriendlyByteBuf data);
+ T create(int syncId, Inventory playerInventory);
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Sounds.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Sounds.java
index 0ae669184..148896013 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Sounds.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/content/Sounds.java
@@ -19,7 +19,7 @@ public SoundEvent getWrench() {
return Objects.requireNonNull(wrench).get();
}
- public void setWrench(final Supplier wrenchSupplier) {
- this.wrench = wrenchSupplier;
+ public void setWrench(final Supplier supplier) {
+ this.wrench = supplier;
}
}
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 151bcea6c..7eddb3e08 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.NetworkNodeMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeExtendedMenuProvider;
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;
@@ -15,10 +15,11 @@
import com.google.common.util.concurrent.RateLimiter;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
-import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.codec.StreamEncoder;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
@@ -29,7 +30,7 @@
import org.slf4j.LoggerFactory;
public class ControllerBlockEntity extends AbstractRedstoneModeNetworkNodeContainerBlockEntity
- implements NetworkNodeMenuProvider, TransferableBlockEntityEnergy {
+ implements NetworkNodeExtendedMenuProvider, TransferableBlockEntityEnergy {
private static final Logger LOGGER = LoggerFactory.getLogger(ControllerBlockEntity.class);
private static final String TAG_CAPACITY = "capacity";
@@ -76,8 +77,8 @@ public void updateEnergyTypeInLevel(final BlockState state) {
}
@Override
- public void saveAdditional(final CompoundTag tag) {
- super.saveAdditional(tag);
+ public void saveAdditional(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.saveAdditional(tag, provider);
ItemBlockEnergyStorage.writeToTag(tag, mainNode.getActualStored());
saveRenderingInfo(tag);
}
@@ -87,8 +88,8 @@ private void saveRenderingInfo(final CompoundTag tag) {
}
@Override
- public void load(final CompoundTag tag) {
- super.load(tag);
+ public void loadAdditional(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.loadAdditional(tag, provider);
ItemBlockEnergyStorage.readFromTag(energyStorage, tag);
}
@@ -103,9 +104,13 @@ public AbstractContainerMenu createMenu(final int syncId, final Inventory inv, f
}
@Override
- public void writeScreenOpeningData(final ServerPlayer player, final FriendlyByteBuf buf) {
- buf.writeLong(getActualStored());
- buf.writeLong(getActualCapacity());
+ public ControllerData getMenuData() {
+ return new ControllerData(getActualStored(), getActualCapacity());
+ }
+
+ @Override
+ public StreamEncoder getMenuCodec() {
+ return ControllerData.STREAM_CODEC;
}
long getActualStored() {
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerContainerMenu.java
index 9e2e29515..805b6c98a 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerContainerMenu.java
@@ -9,17 +9,22 @@
import com.refinedmods.refinedstorage2.platform.common.support.energy.EnergyContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.support.energy.EnergyInfo;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
public class ControllerContainerMenu extends AbstractBaseContainerMenu implements EnergyContainerMenu {
private final EnergyInfo energyInfo;
- public ControllerContainerMenu(final int syncId, final Inventory playerInventory, final FriendlyByteBuf buf) {
+ public ControllerContainerMenu(final int syncId,
+ final Inventory playerInventory,
+ final ControllerData controllerData) {
super(Menus.INSTANCE.getController(), syncId);
addPlayerInventory(playerInventory, 8, 107);
- this.energyInfo = EnergyInfo.forClient(playerInventory.player, buf.readLong(), buf.readLong());
+ this.energyInfo = EnergyInfo.forClient(
+ playerInventory.player,
+ controllerData.stored(),
+ controllerData.capacity()
+ );
registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE));
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerData.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerData.java
new file mode 100644
index 000000000..91d795d3a
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerData.java
@@ -0,0 +1,13 @@
+package com.refinedmods.refinedstorage2.platform.common.controller;
+
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.ByteBufCodecs;
+import net.minecraft.network.codec.StreamCodec;
+
+public record ControllerData(long stored, long capacity) {
+ public static final StreamCodec STREAM_CODEC = StreamCodec.composite(
+ ByteBufCodecs.VAR_LONG, ControllerData::stored,
+ ByteBufCodecs.VAR_LONG, ControllerData::capacity,
+ ControllerData::new
+ );
+}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerModelPredicateProvider.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerModelPredicateProvider.java
index bcf8ceaa8..17cf86750 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerModelPredicateProvider.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/controller/ControllerModelPredicateProvider.java
@@ -15,9 +15,6 @@ public float unclampedCall(final ItemStack stack,
@Nullable final ClientLevel level,
@Nullable final LivingEntity entity,
final int seed) {
- if (stack.getTag() == null) { // for newly created items
- return 1;
- }
return PlatformApi.INSTANCE.getEnergyStorage(stack)
.map(energyStorage -> (float) energyStorage.getStored() / (float) energyStorage.getCapacity())
.orElse(1F);
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 23ffabe08..2f387d376 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
@@ -12,20 +12,23 @@
import com.refinedmods.refinedstorage2.platform.common.content.ContentNames;
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.NetworkNodeMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeExtendedMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.SingleAmountData;
import com.refinedmods.refinedstorage2.platform.common.support.network.AbstractRedstoneModeNetworkNodeContainerBlockEntity;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerData;
import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerImpl;
+import java.util.Optional;
import javax.annotation.Nullable;
import com.google.common.util.concurrent.RateLimiter;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
+import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
-import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.codec.StreamEncoder;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
@@ -35,7 +38,7 @@
import org.slf4j.LoggerFactory;
public class DetectorBlockEntity extends AbstractRedstoneModeNetworkNodeContainerBlockEntity
- implements NetworkNodeMenuProvider {
+ implements NetworkNodeExtendedMenuProvider {
private static final Logger LOGGER = LoggerFactory.getLogger(DetectorBlockEntity.class);
private static final String TAG_AMOUNT = "amount";
@@ -63,17 +66,17 @@ public DetectorBlockEntity(final BlockPos pos, final BlockState state) {
}
@Override
- public void writeConfiguration(final CompoundTag tag) {
- super.writeConfiguration(tag);
- filter.save(tag);
+ public void writeConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.writeConfiguration(tag, provider);
+ filter.save(tag, provider);
tag.putDouble(TAG_AMOUNT, amount);
tag.putInt(TAG_MODE, DetectorModeSettings.getDetectorMode(mainNode.getMode()));
}
@Override
- public void readConfiguration(final CompoundTag tag) {
- super.readConfiguration(tag);
- filter.load(tag);
+ public void readConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.readConfiguration(tag, provider);
+ filter.load(tag, provider);
if (tag.contains(TAG_AMOUNT)) {
this.amount = tag.getDouble(TAG_AMOUNT);
}
@@ -126,8 +129,17 @@ private void initialize() {
}
@Override
- public void writeScreenOpeningData(final ServerPlayer player, final FriendlyByteBuf buf) {
- AbstractSingleAmountContainerMenu.writeToBuf(buf, amount, filter.getFilterContainer(), null);
+ public SingleAmountData getMenuData() {
+ return new SingleAmountData(
+ Optional.empty(),
+ amount,
+ ResourceContainerData.of(filter.getFilterContainer())
+ );
+ }
+
+ @Override
+ public StreamEncoder getMenuCodec() {
+ return SingleAmountData.STREAM_CODEC;
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/detector/DetectorContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/detector/DetectorContainerMenu.java
index b223acf9f..3f81d0291 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/detector/DetectorContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/detector/DetectorContainerMenu.java
@@ -7,10 +7,10 @@
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ClientProperty;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.PropertyTypes;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ServerProperty;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.SingleAmountData;
import javax.annotation.Nullable;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
@@ -23,8 +23,10 @@ public class DetectorContainerMenu extends AbstractSingleAmountContainerMenu {
@Nullable
private DetectorBlockEntity detector;
- public DetectorContainerMenu(final int syncId, final Inventory playerInventory, final FriendlyByteBuf buf) {
- super(Menus.INSTANCE.getDetector(), syncId, playerInventory, buf, FILTER_HELP);
+ public DetectorContainerMenu(final int syncId,
+ final Inventory playerInventory,
+ final SingleAmountData singleAmountData) {
+ super(Menus.INSTANCE.getDetector(), syncId, playerInventory, singleAmountData, FILTER_HELP);
registerProperty(new ClientProperty<>(PropertyTypes.FUZZY_MODE, false));
registerProperty(new ClientProperty<>(DetectorPropertyTypes.MODE, DetectorMode.EQUAL));
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/exporter/ExporterContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/exporter/ExporterContainerMenu.java
index 072995098..533dadff9 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/exporter/ExporterContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/exporter/ExporterContainerMenu.java
@@ -3,10 +3,10 @@
import com.refinedmods.refinedstorage2.platform.api.support.resource.ResourceContainer;
import com.refinedmods.refinedstorage2.platform.common.content.Menus;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.AbstractSchedulingContainerMenu;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerData;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeContainer;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeDestinations;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
@@ -16,12 +16,14 @@
public class ExporterContainerMenu extends AbstractSchedulingContainerMenu {
private static final MutableComponent FILTER_HELP = createTranslation("gui", "exporter.filter_help");
- public ExporterContainerMenu(final int syncId, final Inventory playerInventory, final FriendlyByteBuf buf) {
+ public ExporterContainerMenu(final int syncId,
+ final Inventory playerInventory,
+ final ResourceContainerData resourceContainerData) {
super(
Menus.INSTANCE.getExporter(),
syncId,
playerInventory.player,
- buf,
+ resourceContainerData,
UpgradeDestinations.EXPORTER,
FILTER_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 525b4dc12..d1f01db0f 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
@@ -17,13 +17,14 @@
import com.refinedmods.refinedstorage2.platform.api.support.network.InWorldNetworkNodeContainer;
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.NetworkNodeMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeExtendedMenuProvider;
import com.refinedmods.refinedstorage2.platform.common.support.network.AbstractRedstoneModeNetworkNodeContainerBlockEntity;
import java.util.List;
import net.minecraft.core.BlockPos;
-import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.StreamEncoder;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
@@ -32,7 +33,7 @@
public abstract class AbstractGridBlockEntity
extends AbstractRedstoneModeNetworkNodeContainerBlockEntity
- implements Grid, NetworkNodeMenuProvider {
+ implements Grid, NetworkNodeExtendedMenuProvider {
protected AbstractGridBlockEntity(final BlockEntityType extends AbstractGridBlockEntity> type,
final BlockPos pos,
final BlockState state,
@@ -53,8 +54,13 @@ protected InWorldNetworkNodeContainer createMainContainer(final GridNetworkNode
}
@Override
- public void writeScreenOpeningData(final ServerPlayer player, final FriendlyByteBuf buf) {
- PlatformApi.INSTANCE.writeGridScreenOpeningData(this, buf);
+ public GridData getMenuData() {
+ return GridData.of(this);
+ }
+
+ @Override
+ public StreamEncoder getMenuCodec() {
+ return GridData.STREAM_CODEC;
}
@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 e3c5d027b..92acdb5d2 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
@@ -10,9 +10,7 @@
import com.refinedmods.refinedstorage2.api.grid.view.GridViewBuilder;
import com.refinedmods.refinedstorage2.api.grid.view.GridViewBuilderImpl;
import com.refinedmods.refinedstorage2.api.grid.watcher.GridWatcher;
-import com.refinedmods.refinedstorage2.api.resource.ResourceAmount;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
-import com.refinedmods.refinedstorage2.api.storage.TrackedResourceAmount;
import com.refinedmods.refinedstorage2.api.storage.tracked.TrackedResource;
import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import com.refinedmods.refinedstorage2.platform.api.grid.Grid;
@@ -33,20 +31,17 @@
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.packet.s2c.S2CPackets;
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;
-import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Predicate;
import javax.annotation.Nullable;
-import net.minecraft.network.FriendlyByteBuf;
-import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
@@ -96,24 +91,21 @@ protected AbstractGridContainerMenu(
final MenuType extends AbstractGridContainerMenu> menuType,
final int syncId,
final Inventory playerInventory,
- final FriendlyByteBuf buf
+ final GridData gridData
) {
super(menuType, syncId);
this.playerInventory = playerInventory;
- this.active = buf.readBoolean();
+ this.active = gridData.active();
final GridViewBuilder viewBuilder = createViewBuilder();
- final int resources = buf.readInt();
- for (int i = 0; i < resources; ++i) {
- final ResourceLocation resourceTypeId = buf.readResourceLocation();
- final ResourceType resourceType = PlatformApi.INSTANCE
- .getResourceTypeRegistry()
- .get(resourceTypeId)
- .orElseThrow();
- readResource(resourceType, buf, viewBuilder);
- }
+ gridData.resources().forEach(gridResource -> viewBuilder.withResource(
+ gridResource.resourceAmount().getResource(),
+ gridResource.resourceAmount().getAmount(),
+ gridResource.trackedResource().orElse(null)
+ ));
+
this.view = viewBuilder.build();
this.view.setSortingDirection(Platform.INSTANCE.getConfig().getGrid().getSortingDirection());
this.view.setSortingType(Platform.INSTANCE.getConfig().getGrid().getSortingType());
@@ -249,7 +241,7 @@ public GridView getView() {
public void onActiveChanged(final boolean newActive) {
this.active = newActive;
if (this.playerInventory.player instanceof ServerPlayer serverPlayerEntity) {
- Platform.INSTANCE.getServerToClientCommunications().sendGridActiveness(serverPlayerEntity, newActive);
+ S2CPackets.sendGridActiveness(serverPlayerEntity, newActive);
}
}
@@ -263,7 +255,7 @@ public void onChanged(
return;
}
LOGGER.debug("{} received a change of {} for {}", this, change, resource);
- Platform.INSTANCE.getServerToClientCommunications().sendGridUpdate(
+ S2CPackets.sendGridUpdate(
(ServerPlayer) playerInventory.player,
platformResource,
change,
@@ -275,7 +267,7 @@ public void onChanged(
public void invalidate() {
if (playerInventory.player instanceof ServerPlayer serverPlayer) {
initStrategies(serverPlayer);
- Platform.INSTANCE.getServerToClientCommunications().sendGridClear(serverPlayer);
+ S2CPackets.sendGridClear(serverPlayer);
}
}
@@ -427,36 +419,7 @@ protected boolean canTransferSlot(final Slot slot) {
return true;
}
- private static void readResource(final ResourceType type,
- final FriendlyByteBuf buf,
- final GridViewBuilder viewBuilder) {
- final ResourceKey resource = type.fromBuffer(buf);
- final long amount = buf.readLong();
- final TrackedResource trackedResource = PacketUtil.readTrackedResource(buf);
- viewBuilder.withResource(resource, amount, trackedResource);
- }
-
public void onClear() {
view.clear();
}
-
- public static void writeScreenOpeningData(final Grid grid, final FriendlyByteBuf buf) {
- buf.writeBoolean(grid.isGridActive());
- final List resources = grid.getResources(PlayerActor.class);
- buf.writeInt(resources.size());
- resources.forEach(resource -> writeGridResource(resource, buf));
- }
-
- private static void writeGridResource(final TrackedResourceAmount trackedResourceAmount,
- final FriendlyByteBuf buf) {
- final ResourceAmount resourceAmount = trackedResourceAmount.resourceAmount();
- final PlatformResourceKey resource = (PlatformResourceKey) resourceAmount.getResource();
- final ResourceType resourceType = resource.getResourceType();
- final ResourceLocation resourceTypeId = PlatformApi.INSTANCE.getResourceTypeRegistry().getId(resourceType)
- .orElseThrow();
- buf.writeResourceLocation(resourceTypeId);
- resource.toBuffer(buf);
- buf.writeLong(resourceAmount.getAmount());
- PacketUtil.writeTrackedResource(buf, trackedResourceAmount.trackedResource());
- }
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/ClientCraftingGridSource.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/ClientCraftingGridSource.java
index 79450c3f0..b30ac77e4 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/ClientCraftingGridSource.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/ClientCraftingGridSource.java
@@ -1,6 +1,6 @@
package com.refinedmods.refinedstorage2.platform.common.grid;
-import com.refinedmods.refinedstorage2.platform.common.Platform;
+import com.refinedmods.refinedstorage2.platform.common.support.packet.c2s.C2SPackets;
import com.refinedmods.refinedstorage2.platform.common.support.resource.ItemResource;
import java.util.List;
@@ -46,13 +46,13 @@ public CraftingGridRefillContext openSnapshotRefillContext(final Player player)
@Override
public boolean clearMatrix(final Player player, final boolean toPlayerInventory) {
- Platform.INSTANCE.getClientToServerCommunications().sendCraftingGridClear(toPlayerInventory);
+ C2SPackets.sendCraftingGridClear(toPlayerInventory);
return true;
}
@Override
public void transferRecipe(final Player player, final List
> recipe) {
- Platform.INSTANCE.getClientToServerCommunications().sendCraftingGridRecipeTransfer(recipe);
+ C2SPackets.sendCraftingGridRecipeTransfer(recipe);
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridBlockEntity.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridBlockEntity.java
index 8b092ef68..a4b69dfe4 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridBlockEntity.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridBlockEntity.java
@@ -15,6 +15,7 @@
import javax.annotation.Nullable;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.HolderLookup;
import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
@@ -22,6 +23,7 @@
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.ResultContainer;
import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.crafting.CraftingInput;
import net.minecraft.world.item.crafting.CraftingRecipe;
import net.minecraft.world.item.crafting.RecipeHolder;
import net.minecraft.world.item.crafting.RecipeType;
@@ -58,13 +60,14 @@ private void setOutputSilently(final Level level) {
if (level.isClientSide()) {
return;
}
- if (currentRecipe == null || !currentRecipe.matches(craftingMatrix, level)) {
+ final CraftingInput input = craftingMatrix.asCraftInput();
+ if (currentRecipe == null || !currentRecipe.matches(input, level)) {
currentRecipe = loadRecipe(level);
}
if (currentRecipe == null) {
setResult(ItemStack.EMPTY);
} else {
- setResult(currentRecipe.assemble(craftingMatrix, level.registryAccess()));
+ setResult(currentRecipe.assemble(input, level.registryAccess()));
}
}
@@ -76,7 +79,7 @@ private void setResult(final ItemStack result) {
private CraftingRecipe loadRecipe(final Level level) {
return level
.getRecipeManager()
- .getRecipeFor(RecipeType.CRAFTING, craftingMatrix, level)
+ .getRecipeFor(RecipeType.CRAFTING, craftingMatrix.asCraftInput(), level)
.map(RecipeHolder::value)
.orElse(null);
}
@@ -93,7 +96,7 @@ NonNullList getRemainingItems(final Player player) {
if (level == null || currentRecipe == null) {
return NonNullList.create();
}
- return Platform.INSTANCE.getRemainingCraftingItems(player, currentRecipe, craftingMatrix);
+ return Platform.INSTANCE.getRemainingCraftingItems(player, currentRecipe, craftingMatrix.asCraftInput());
}
@Override
@@ -108,16 +111,16 @@ public AbstractGridContainerMenu createMenu(final int syncId, final Inventory in
}
@Override
- public void saveAdditional(final CompoundTag tag) {
- super.saveAdditional(tag);
- tag.put(TAG_CRAFTING_MATRIX, ContainerUtil.write(craftingMatrix));
+ public void saveAdditional(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.saveAdditional(tag, provider);
+ tag.put(TAG_CRAFTING_MATRIX, ContainerUtil.write(craftingMatrix, provider));
}
@Override
- public void load(final CompoundTag tag) {
- super.load(tag);
+ public void loadAdditional(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.loadAdditional(tag, provider);
if (tag.contains(TAG_CRAFTING_MATRIX)) {
- ContainerUtil.read(tag.getCompound(TAG_CRAFTING_MATRIX), craftingMatrix);
+ ContainerUtil.read(tag.getCompound(TAG_CRAFTING_MATRIX), craftingMatrix, provider);
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridContainerMenu.java
index 4ce75a353..c413f60df 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridContainerMenu.java
@@ -18,7 +18,6 @@
import java.util.function.Predicate;
import javax.annotation.Nullable;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.Container;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
@@ -37,8 +36,10 @@ public class CraftingGridContainerMenu extends AbstractGridContainerMenu {
@Nullable
private Predicate filterBeforeFilteringBasedOnCraftingMatrixItems;
- public CraftingGridContainerMenu(final int syncId, final Inventory playerInventory, final FriendlyByteBuf buf) {
- super(Menus.INSTANCE.getCraftingGrid(), syncId, playerInventory, buf);
+ public CraftingGridContainerMenu(final int syncId,
+ final Inventory playerInventory,
+ final GridData gridData) {
+ super(Menus.INSTANCE.getCraftingGrid(), syncId, playerInventory, gridData);
this.source = new ClientCraftingGridSource();
this.player = playerInventory.player;
onScreenReady(0);
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridResultSlot.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridResultSlot.java
index 70d19a96c..724fa79a3 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridResultSlot.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridResultSlot.java
@@ -30,7 +30,7 @@ public ItemStack onQuickCraft(final Player player) {
final int maxCrafted = singleResultStack.getMaxStackSize();
int crafted = 0;
try (CraftingGridRefillContext refillContext = source.openSnapshotRefillContext(player)) {
- while (ItemStack.isSameItemSameTags(singleResultStack, getItem()) && crafted < maxCrafted) {
+ while (ItemStack.isSameItemSameComponents(singleResultStack, getItem()) && crafted < maxCrafted) {
doTake(player, refillContext);
crafted += singleResultStack.getCount();
}
@@ -69,7 +69,7 @@ private void useIngredientWithRemainingItem(final Player player,
final ItemStack matrixStack = decrementMatrixSlot(index);
if (matrixStack.isEmpty()) {
source.getCraftingMatrix().setItem(index, remainingItem);
- } else if (ItemStack.isSameItemSameTags(matrixStack, remainingItem)) {
+ } else if (ItemStack.isSameItemSameComponents(matrixStack, remainingItem)) {
remainingItem.grow(matrixStack.getCount());
source.getCraftingMatrix().setItem(index, remainingItem);
} else if (!player.getInventory().add(remainingItem)) {
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridSourceImpl.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridSourceImpl.java
index 7fad1dd98..cce23e779 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridSourceImpl.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/CraftingGridSourceImpl.java
@@ -117,7 +117,7 @@ private boolean extractFromPlayerInventory(final Player player, final ItemResour
final ItemStack possibilityStack = possibility.toItemStack();
for (int i = 0; i < player.getInventory().getContainerSize(); ++i) {
final ItemStack playerStack = player.getInventory().getItem(i);
- if (ItemStack.isSameItemSameTags(playerStack, possibilityStack)) {
+ if (ItemStack.isSameItemSameComponents(playerStack, possibilityStack)) {
player.getInventory().removeItem(i, 1);
return true;
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/GridContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/GridContainerMenu.java
index 58270e006..407a846e4 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/GridContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/GridContainerMenu.java
@@ -6,12 +6,11 @@
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.PropertyTypes;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ServerProperty;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.entity.player.Inventory;
public class GridContainerMenu extends AbstractGridContainerMenu {
- public GridContainerMenu(final int syncId, final Inventory playerInventory, final FriendlyByteBuf buf) {
- super(Menus.INSTANCE.getGrid(), syncId, playerInventory, buf);
+ public GridContainerMenu(final int syncId, final Inventory playerInventory, final GridData gridData) {
+ super(Menus.INSTANCE.getGrid(), syncId, playerInventory, gridData);
onScreenReady(0);
registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE));
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/GridData.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/GridData.java
new file mode 100644
index 000000000..886921249
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/GridData.java
@@ -0,0 +1,45 @@
+package com.refinedmods.refinedstorage2.platform.common.grid;
+
+import com.refinedmods.refinedstorage2.api.resource.ResourceAmount;
+import com.refinedmods.refinedstorage2.api.storage.TrackedResourceAmount;
+import com.refinedmods.refinedstorage2.api.storage.tracked.TrackedResource;
+import com.refinedmods.refinedstorage2.platform.api.grid.Grid;
+import com.refinedmods.refinedstorage2.platform.api.storage.PlayerActor;
+import com.refinedmods.refinedstorage2.platform.common.storage.StorageCodecs;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceCodecs;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.ByteBufCodecs;
+import net.minecraft.network.codec.StreamCodec;
+
+public record GridData(boolean active, List resources) {
+ public static final StreamCodec STREAM_CODEC = StreamCodec.composite(
+ ByteBufCodecs.BOOL, GridData::active,
+ ByteBufCodecs.collection(ArrayList::new, StreamCodec.composite(
+ ResourceCodecs.AMOUNT_STREAM_CODEC, GridResource::resourceAmount,
+ StorageCodecs.TRACKED_RESOURCE_OPTIONAL_STREAM_CODEC, GridResource::trackedResource,
+ GridResource::new
+ )), GridData::resources,
+ GridData::new
+ );
+
+ public static GridData of(final Grid grid) {
+ return new GridData(
+ grid.isGridActive(),
+ grid.getResources(PlayerActor.class).stream().map(GridResource::of).toList()
+ );
+ }
+
+ public record GridResource(ResourceAmount resourceAmount, Optional trackedResource) {
+ static GridResource of(final TrackedResourceAmount trackedResourceAmount) {
+ return new GridResource(
+ trackedResourceAmount.resourceAmount(),
+ Optional.ofNullable(trackedResourceAmount.trackedResource())
+ );
+ }
+ }
+}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/PortableGridData.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/PortableGridData.java
new file mode 100644
index 000000000..f4e3f8131
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/PortableGridData.java
@@ -0,0 +1,20 @@
+package com.refinedmods.refinedstorage2.platform.common.grid;
+
+import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference;
+import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReferenceFactory;
+
+import java.util.Optional;
+
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.ByteBufCodecs;
+import net.minecraft.network.codec.StreamCodec;
+
+public record PortableGridData(GridData gridData, long stored, long capacity, Optional slotReference) {
+ public static final StreamCodec STREAM_CODEC = StreamCodec.composite(
+ GridData.STREAM_CODEC, PortableGridData::gridData,
+ ByteBufCodecs.VAR_LONG, PortableGridData::stored,
+ ByteBufCodecs.VAR_LONG, PortableGridData::capacity,
+ ByteBufCodecs.optional(SlotReferenceFactory.STREAM_CODEC), PortableGridData::slotReference,
+ PortableGridData::new
+ );
+}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/WirelessGridContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/WirelessGridContainerMenu.java
index 9803393a5..a92fe6bc2 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/WirelessGridContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/WirelessGridContainerMenu.java
@@ -1,17 +1,17 @@
package com.refinedmods.refinedstorage2.platform.common.grid;
-import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import com.refinedmods.refinedstorage2.platform.api.grid.Grid;
import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference;
import com.refinedmods.refinedstorage2.platform.common.content.Menus;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.entity.player.Inventory;
public class WirelessGridContainerMenu extends AbstractGridContainerMenu {
- public WirelessGridContainerMenu(final int syncId, final Inventory playerInventory, final FriendlyByteBuf buf) {
- super(Menus.INSTANCE.getWirelessGrid(), syncId, playerInventory, buf);
- this.disabledSlot = PlatformApi.INSTANCE.getSlotReference(buf).orElse(null);
+ public WirelessGridContainerMenu(final int syncId,
+ final Inventory playerInventory,
+ final WirelessGridData wirelessGridData) {
+ super(Menus.INSTANCE.getWirelessGrid(), syncId, playerInventory, wirelessGridData.gridData());
+ this.disabledSlot = wirelessGridData.slotReference();
onScreenReady(0);
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/WirelessGridData.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/WirelessGridData.java
new file mode 100644
index 000000000..91b59f41b
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/WirelessGridData.java
@@ -0,0 +1,15 @@
+package com.refinedmods.refinedstorage2.platform.common.grid;
+
+import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference;
+import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReferenceFactory;
+
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.StreamCodec;
+
+public record WirelessGridData(GridData gridData, SlotReference slotReference) {
+ public static final StreamCodec STREAM_CODEC = StreamCodec.composite(
+ GridData.STREAM_CODEC, WirelessGridData::gridData,
+ SlotReferenceFactory.STREAM_CODEC, WirelessGridData::slotReference,
+ WirelessGridData::new
+ );
+}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/WirelessGridExtendedMenuProvider.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/WirelessGridExtendedMenuProvider.java
index f8d5bd446..44e18b89a 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/WirelessGridExtendedMenuProvider.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/WirelessGridExtendedMenuProvider.java
@@ -1,6 +1,5 @@
package com.refinedmods.refinedstorage2.platform.common.grid;
-import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import com.refinedmods.refinedstorage2.platform.api.grid.Grid;
import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference;
import com.refinedmods.refinedstorage2.platform.common.content.ContentNames;
@@ -8,14 +7,14 @@
import javax.annotation.Nullable;
-import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.codec.StreamEncoder;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
-class WirelessGridExtendedMenuProvider implements ExtendedMenuProvider {
+class WirelessGridExtendedMenuProvider implements ExtendedMenuProvider {
private final Grid grid;
private final SlotReference slotReference;
@@ -25,9 +24,16 @@ class WirelessGridExtendedMenuProvider implements ExtendedMenuProvider {
}
@Override
- public void writeScreenOpeningData(final ServerPlayer player, final FriendlyByteBuf buf) {
- PlatformApi.INSTANCE.writeGridScreenOpeningData(grid, buf);
- PlatformApi.INSTANCE.writeSlotReference(slotReference, buf);
+ public WirelessGridData getMenuData() {
+ return new WirelessGridData(
+ GridData.of(grid),
+ slotReference
+ );
+ }
+
+ @Override
+ public StreamEncoder getMenuCodec() {
+ return WirelessGridData.STREAM_CODEC;
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/strategy/ClientGridExtractionStrategy.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/strategy/ClientGridExtractionStrategy.java
index a4f8d6e6f..17fb83fb5 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/strategy/ClientGridExtractionStrategy.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/strategy/ClientGridExtractionStrategy.java
@@ -3,14 +3,14 @@
import com.refinedmods.refinedstorage2.api.grid.operations.GridExtractMode;
import com.refinedmods.refinedstorage2.platform.api.grid.strategy.GridExtractionStrategy;
import com.refinedmods.refinedstorage2.platform.api.support.resource.PlatformResourceKey;
-import com.refinedmods.refinedstorage2.platform.common.Platform;
+import com.refinedmods.refinedstorage2.platform.common.support.packet.c2s.C2SPackets;
public class ClientGridExtractionStrategy implements GridExtractionStrategy {
@Override
public boolean onExtract(final PlatformResourceKey resource,
final GridExtractMode extractMode,
final boolean cursor) {
- Platform.INSTANCE.getClientToServerCommunications().sendGridExtract(resource, extractMode, cursor);
+ C2SPackets.sendGridExtract(resource, extractMode, cursor);
return true;
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/strategy/ClientGridInsertionStrategy.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/strategy/ClientGridInsertionStrategy.java
index 8a005135c..1dfe32887 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/strategy/ClientGridInsertionStrategy.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/strategy/ClientGridInsertionStrategy.java
@@ -2,12 +2,12 @@
import com.refinedmods.refinedstorage2.api.grid.operations.GridInsertMode;
import com.refinedmods.refinedstorage2.platform.api.grid.strategy.GridInsertionStrategy;
-import com.refinedmods.refinedstorage2.platform.common.Platform;
+import com.refinedmods.refinedstorage2.platform.common.support.packet.c2s.C2SPackets;
public class ClientGridInsertionStrategy implements GridInsertionStrategy {
@Override
public boolean onInsert(final GridInsertMode insertMode, final boolean tryAlternatives) {
- Platform.INSTANCE.getClientToServerCommunications().sendGridInsert(insertMode, tryAlternatives);
+ C2SPackets.sendGridInsert(insertMode, tryAlternatives);
return true;
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/strategy/ClientGridScrollingStrategy.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/strategy/ClientGridScrollingStrategy.java
index c3f1dbdda..ceebdbc5c 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/strategy/ClientGridScrollingStrategy.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/strategy/ClientGridScrollingStrategy.java
@@ -3,12 +3,12 @@
import com.refinedmods.refinedstorage2.platform.api.grid.GridScrollMode;
import com.refinedmods.refinedstorage2.platform.api.grid.strategy.GridScrollingStrategy;
import com.refinedmods.refinedstorage2.platform.api.support.resource.PlatformResourceKey;
-import com.refinedmods.refinedstorage2.platform.common.Platform;
+import com.refinedmods.refinedstorage2.platform.common.support.packet.c2s.C2SPackets;
public class ClientGridScrollingStrategy implements GridScrollingStrategy {
@Override
public boolean onScroll(final PlatformResourceKey resource, final GridScrollMode scrollMode, final int slotIndex) {
- Platform.INSTANCE.getClientToServerCommunications().sendGridScroll(resource, scrollMode, slotIndex);
+ C2SPackets.sendGridScroll(resource, scrollMode, slotIndex);
return true;
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/view/AbstractItemGridResourceFactory.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/view/AbstractItemGridResourceFactory.java
index 19fb2e107..3ea3c8849 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/view/AbstractItemGridResourceFactory.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/grid/view/AbstractItemGridResourceFactory.java
@@ -42,7 +42,7 @@ public Optional apply(final ResourceAmount resourceAmount) {
private String getTooltip(final ItemStack itemStack) {
return itemStack
- .getTooltipLines(null, TooltipFlag.ADVANCED)
+ .getTooltipLines(Item.TooltipContext.EMPTY, null, TooltipFlag.ADVANCED)
.stream()
.map(Component::getString)
.collect(Collectors.joining("\n"));
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/iface/InterfaceBlockEntity.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/iface/InterfaceBlockEntity.java
index 71a15ddaa..e7923471b 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/iface/InterfaceBlockEntity.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/iface/InterfaceBlockEntity.java
@@ -12,18 +12,20 @@
import com.refinedmods.refinedstorage2.platform.common.content.ContentNames;
import com.refinedmods.refinedstorage2.platform.common.support.BlockEntityWithDrops;
import com.refinedmods.refinedstorage2.platform.common.support.FilterWithFuzzyMode;
-import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeExtendedMenuProvider;
import com.refinedmods.refinedstorage2.platform.common.support.network.AbstractRedstoneModeNetworkNodeContainerBlockEntity;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerData;
import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerImpl;
import javax.annotation.Nullable;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.HolderLookup;
import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag;
-import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.codec.StreamEncoder;
import net.minecraft.world.Container;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
@@ -33,7 +35,7 @@
public class InterfaceBlockEntity
extends AbstractRedstoneModeNetworkNodeContainerBlockEntity
- implements NetworkNodeMenuProvider, BlockEntityWithDrops {
+ implements NetworkNodeExtendedMenuProvider, BlockEntityWithDrops {
private static final String TAG_EXPORT_ITEMS = "ei";
private static final int EXPORT_SLOTS = 9;
@@ -67,10 +69,33 @@ static ResourceContainer createFilterContainer() {
);
}
+ static ResourceContainer createFilterContainer(final InterfaceData interfaceData) {
+ final ResourceContainer filterContainer = createFilterContainer();
+ final ResourceContainerData resourceContainerData = interfaceData.filterContainerData();
+ for (int i = 0; i < resourceContainerData.resources().size(); ++i) {
+ final int ii = i;
+ resourceContainerData.resources().get(i).ifPresent(resource -> filterContainer.set(ii, resource));
+ }
+ return filterContainer;
+ }
+
static ExportedResourcesContainer createExportedResourcesContainer(final FilterWithFuzzyMode filter) {
return new ExportedResourcesContainer(EXPORT_SLOTS, filter);
}
+ static ResourceContainer createExportedResourcesContainer(final InterfaceData interfaceData,
+ final FilterWithFuzzyMode filter) {
+ final ExportedResourcesContainer exportedResourcesContainer = createExportedResourcesContainer(filter);
+ final ResourceContainerData resourceContainerData = interfaceData.exportedResourcesContainerData();
+ for (int i = 0; i < resourceContainerData.resources().size(); ++i) {
+ final int ii = i;
+ resourceContainerData.resources().get(i).ifPresent(
+ resource -> exportedResourcesContainer.set(ii, resource)
+ );
+ }
+ return exportedResourcesContainer;
+ }
+
static long getTransferQuota(final ResourceKey resource) {
if (resource instanceof PlatformResourceKey platformResource) {
return platformResource.getInterfaceExportLimit();
@@ -79,29 +104,29 @@ static long getTransferQuota(final ResourceKey resource) {
}
@Override
- public void saveAdditional(final CompoundTag tag) {
- super.saveAdditional(tag);
- tag.put(TAG_EXPORT_ITEMS, exportedResources.toTag());
+ public void saveAdditional(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.saveAdditional(tag, provider);
+ tag.put(TAG_EXPORT_ITEMS, exportedResources.toTag(provider));
}
@Override
- public void writeConfiguration(final CompoundTag tag) {
- super.writeConfiguration(tag);
- filter.save(tag);
+ public void writeConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.writeConfiguration(tag, provider);
+ filter.save(tag, provider);
}
@Override
- public void load(final CompoundTag tag) {
+ public void loadAdditional(final CompoundTag tag, final HolderLookup.Provider provider) {
if (tag.contains(TAG_EXPORT_ITEMS)) {
- exportedResources.fromTag(tag.getCompound(TAG_EXPORT_ITEMS));
+ exportedResources.fromTag(tag.getCompound(TAG_EXPORT_ITEMS), provider);
}
- super.load(tag);
+ super.loadAdditional(tag, provider);
}
@Override
- public void readConfiguration(final CompoundTag tag) {
- super.readConfiguration(tag);
- filter.load(tag);
+ public void readConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.readConfiguration(tag, provider);
+ filter.load(tag, provider);
}
boolean isFuzzyMode() {
@@ -134,9 +159,16 @@ public AbstractContainerMenu createMenu(final int syncId, final Inventory invent
}
@Override
- public void writeScreenOpeningData(final ServerPlayer player, final FriendlyByteBuf buf) {
- filter.getFilterContainer().writeToUpdatePacket(buf);
- exportedResources.writeToUpdatePacket(buf);
+ public InterfaceData getMenuData() {
+ return new InterfaceData(
+ ResourceContainerData.of(filter.getFilterContainer()),
+ ResourceContainerData.of(exportedResources)
+ );
+ }
+
+ @Override
+ public StreamEncoder getMenuCodec() {
+ return InterfaceData.STREAM_CODEC;
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/iface/InterfaceContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/iface/InterfaceContainerMenu.java
index 0c673c693..745466840 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/iface/InterfaceContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/iface/InterfaceContainerMenu.java
@@ -11,7 +11,6 @@
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ResourceSlotType;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ServerProperty;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.world.Container;
import net.minecraft.world.entity.player.Inventory;
@@ -45,14 +44,16 @@ public class InterfaceContainerMenu extends AbstractResourceContainerMenu {
));
}
- public InterfaceContainerMenu(final int syncId, final Inventory playerInventory, final FriendlyByteBuf buf) {
+ public InterfaceContainerMenu(final int syncId,
+ final Inventory playerInventory,
+ final InterfaceData interfaceData) {
super(Menus.INSTANCE.getInterface(), syncId);
- final ResourceContainer filterContainer = InterfaceBlockEntity.createFilterContainer();
+ final ResourceContainer filterContainer = InterfaceBlockEntity.createFilterContainer(interfaceData);
final ResourceContainer exportedResources = InterfaceBlockEntity.createExportedResourcesContainer(
+ interfaceData,
FilterWithFuzzyMode.create(filterContainer, null)
);
addSlots(playerInventory.player, filterContainer, exportedResources, exportedResources.toItemContainer());
- initializeResourceSlots(buf);
registerProperty(new ClientProperty<>(PropertyTypes.FUZZY_MODE, false));
registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE));
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/iface/InterfaceData.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/iface/InterfaceData.java
new file mode 100644
index 000000000..a41abb0a4
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/iface/InterfaceData.java
@@ -0,0 +1,15 @@
+package com.refinedmods.refinedstorage2.platform.common.iface;
+
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerData;
+
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.StreamCodec;
+
+public record InterfaceData(ResourceContainerData filterContainerData,
+ ResourceContainerData exportedResourcesContainerData) {
+ public static final StreamCodec STREAM_CODEC = StreamCodec.composite(
+ ResourceContainerData.STREAM_CODEC, InterfaceData::filterContainerData,
+ ResourceContainerData.STREAM_CODEC, InterfaceData::exportedResourcesContainerData,
+ InterfaceData::new
+ );
+}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/importer/ImporterBlockEntity.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/importer/ImporterBlockEntity.java
index fab93c5e5..98443f735 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/importer/ImporterBlockEntity.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/importer/ImporterBlockEntity.java
@@ -14,8 +14,9 @@
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.NetworkNodeMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeExtendedMenuProvider;
import com.refinedmods.refinedstorage2.platform.common.support.network.AbstractUpgradeableNetworkNodeContainerBlockEntity;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerData;
import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerImpl;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeDestinations;
@@ -26,11 +27,12 @@
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
+import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
-import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.chat.Component;
+import net.minecraft.network.codec.StreamEncoder;
import net.minecraft.server.level.ServerLevel;
-import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
@@ -40,7 +42,7 @@
public class ImporterBlockEntity
extends AbstractUpgradeableNetworkNodeContainerBlockEntity
- implements AmountOverride, NetworkNodeMenuProvider {
+ implements AmountOverride, NetworkNodeExtendedMenuProvider {
private static final Logger LOGGER = LoggerFactory.getLogger(ImporterBlockEntity.class);
private static final String TAG_FILTER_MODE = "fim";
@@ -82,19 +84,19 @@ private List createStrategies(final ServerLevel server
}
@Override
- public void writeConfiguration(final CompoundTag tag) {
- super.writeConfiguration(tag);
+ public void writeConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.writeConfiguration(tag, provider);
tag.putInt(TAG_FILTER_MODE, FilterModeSettings.getFilterMode(mainNode.getFilterMode()));
- filter.save(tag);
+ filter.save(tag, provider);
}
@Override
- public void readConfiguration(final CompoundTag tag) {
- super.readConfiguration(tag);
+ public void readConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.readConfiguration(tag, provider);
if (tag.contains(TAG_FILTER_MODE)) {
mainNode.setFilterMode(FilterModeSettings.getFilterMode(tag.getInt(TAG_FILTER_MODE)));
}
- filter.load(tag);
+ filter.load(tag, provider);
}
void setFilters(final Set filters) {
@@ -125,8 +127,13 @@ protected void setEnergyUsage(final long upgradeEnergyUsage) {
}
@Override
- public void writeScreenOpeningData(final ServerPlayer player, final FriendlyByteBuf buf) {
- filter.getFilterContainer().writeToUpdatePacket(buf);
+ public ResourceContainerData getMenuData() {
+ return ResourceContainerData.of(filter.getFilterContainer());
+ }
+
+ @Override
+ public StreamEncoder getMenuCodec() {
+ return ResourceContainerData.STREAM_CODEC;
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/importer/ImporterContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/importer/ImporterContainerMenu.java
index fefe5d2fc..dee71270f 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/importer/ImporterContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/importer/ImporterContainerMenu.java
@@ -8,10 +8,10 @@
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ClientProperty;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.PropertyTypes;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ServerProperty;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerData;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeContainer;
import com.refinedmods.refinedstorage2.platform.common.upgrade.UpgradeDestinations;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
@@ -21,12 +21,14 @@
public class ImporterContainerMenu extends AbstractSimpleFilterContainerMenu {
private static final MutableComponent FILTER_HELP = createTranslation("gui", "importer.filter_help");
- public ImporterContainerMenu(final int syncId, final Inventory playerInventory, final FriendlyByteBuf buf) {
+ public ImporterContainerMenu(final int syncId,
+ final Inventory playerInventory,
+ final ResourceContainerData resourceContainerData) {
super(
Menus.INSTANCE.getImporter(),
syncId,
playerInventory.player,
- buf,
+ resourceContainerData,
UpgradeDestinations.IMPORTER,
FILTER_HELP
);
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/CableBlock.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/CableBlock.java
index 7cad3973c..7f3b47ed6 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/CableBlock.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/CableBlock.java
@@ -80,11 +80,7 @@ public BlockState updateShape(final BlockState state,
}
@Override
- @SuppressWarnings("deprecation")
- public boolean isPathfindable(final BlockState state,
- final BlockGetter world,
- final BlockPos pos,
- final PathComputationType type) {
+ protected boolean isPathfindable(final BlockState state, final PathComputationType type) {
return false;
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkCardItem.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkCardItem.java
index 880c9702f..4adc7cd2d 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkCardItem.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkCardItem.java
@@ -1,20 +1,17 @@
package com.refinedmods.refinedstorage2.platform.common.networking;
import com.refinedmods.refinedstorage2.platform.api.support.HelpTooltipComponent;
+import com.refinedmods.refinedstorage2.platform.common.content.DataComponents;
import java.util.List;
import java.util.Optional;
-import javax.annotation.Nullable;
import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
import net.minecraft.core.GlobalPos;
-import net.minecraft.core.registries.Registries;
-import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.resources.ResourceKey;
-import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.InteractionResultHolder;
@@ -33,13 +30,9 @@
public class NetworkCardItem extends Item {
private static final MutableComponent UNBOUND_HELP = createTranslation("item", "network_card.unbound_help");
private static final MutableComponent BOUND_HELP = createTranslation("item", "network_card.bound_help");
-
private static final MutableComponent UNBOUND = createTranslation("item", "network_card.unbound")
.withStyle(ChatFormatting.RED);
- private static final String TAG_POS = "pos";
- private static final String TAG_DIMENSION = "dim";
-
public NetworkCardItem() {
super(new Item.Properties().stacksTo(1));
}
@@ -54,11 +47,9 @@ public InteractionResult useOn(final UseOnContext ctx) {
if (!(blockState.getBlock() instanceof NetworkReceiverBlock)) {
return InteractionResult.CONSUME;
}
- final CompoundTag tag = new CompoundTag();
- tag.putLong(TAG_POS, pos.asLong());
final ResourceKey dimension = ctx.getLevel().dimension();
- tag.putString(TAG_DIMENSION, dimension.location().toString());
- ctx.getItemInHand().setTag(tag);
+ final GlobalPos location = GlobalPos.of(dimension, pos);
+ ctx.getItemInHand().set(DataComponents.INSTANCE.getNetworkLocation(), location);
ctx.getPlayer().sendSystemMessage(createTranslation(
"item",
"network_card.bound",
@@ -83,10 +74,10 @@ public InteractionResultHolder use(final Level level, final Player pl
@Override
public void appendHoverText(final ItemStack stack,
- @Nullable final Level level,
+ final TooltipContext context,
final List lines,
final TooltipFlag flag) {
- super.appendHoverText(stack, level, lines, flag);
+ super.appendHoverText(stack, context, lines, flag);
getLocation(stack).ifPresentOrElse(location -> lines.add(createTranslation(
"item",
"network_card.bound",
@@ -97,26 +88,8 @@ public void appendHoverText(final ItemStack stack,
).withStyle(ChatFormatting.GRAY)), () -> lines.add(UNBOUND));
}
- @Nullable
- private ResourceKey getDimension(final String dimensionKey) {
- final ResourceLocation name = ResourceLocation.tryParse(dimensionKey);
- if (name == null) {
- return null;
- }
- return ResourceKey.create(Registries.DIMENSION, name);
- }
-
Optional getLocation(final ItemStack stack) {
- final CompoundTag tag = stack.getTag();
- if (tag == null) {
- return Optional.empty();
- }
- final ResourceKey dimension = getDimension(tag.getString(TAG_DIMENSION));
- if (dimension == null) {
- return Optional.empty();
- }
- final BlockPos pos = BlockPos.of(tag.getLong(TAG_POS));
- return Optional.of(GlobalPos.of(dimension, pos));
+ return Optional.ofNullable(stack.get(DataComponents.INSTANCE.getNetworkLocation()));
}
@Override
@@ -125,6 +98,6 @@ public Optional getTooltipImage(final ItemStack stack) {
}
boolean isActive(final ItemStack stack) {
- return stack.getTag() != null && stack.getTag().contains(TAG_POS) && stack.getTag().contains(TAG_DIMENSION);
+ return stack.has(DataComponents.INSTANCE.getNetworkLocation());
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkCardItemPropertyFunction.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkCardItemPropertyFunction.java
index f807af445..54b3f4338 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkCardItemPropertyFunction.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkCardItemPropertyFunction.java
@@ -8,8 +8,10 @@
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
+import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createIdentifier;
+
public class NetworkCardItemPropertyFunction implements ClampedItemPropertyFunction {
- public static final ResourceLocation NAME = new ResourceLocation("active");
+ public static final ResourceLocation NAME = createIdentifier("network_card_active");
@Override
public float unclampedCall(final ItemStack itemStack,
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterBlockEntity.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterBlockEntity.java
index 004f4c99d..83c66c6ea 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterBlockEntity.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterBlockEntity.java
@@ -8,7 +8,7 @@
import com.refinedmods.refinedstorage2.platform.common.content.BlockEntities;
import com.refinedmods.refinedstorage2.platform.common.content.ContentNames;
import com.refinedmods.refinedstorage2.platform.common.support.BlockEntityWithDrops;
-import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeExtendedMenuProvider;
import com.refinedmods.refinedstorage2.platform.common.support.network.AbstractRedstoneModeNetworkNodeContainerBlockEntity;
import javax.annotation.Nullable;
@@ -16,13 +16,14 @@
import com.google.common.util.concurrent.RateLimiter;
import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.HolderLookup;
import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
-import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
-import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.codec.StreamEncoder;
import net.minecraft.world.Container;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
@@ -36,16 +37,16 @@
public class NetworkTransmitterBlockEntity
extends AbstractRedstoneModeNetworkNodeContainerBlockEntity
- implements NetworkNodeMenuProvider, BlockEntityWithDrops {
+ implements NetworkNodeExtendedMenuProvider, BlockEntityWithDrops {
private static final Logger LOGGER = LoggerFactory.getLogger(NetworkTransmitterBlockEntity.class);
- private static final NetworkTransmitterStatus INACTIVE = NetworkTransmitterStatus.message(
+ private static final NetworkTransmitterData INACTIVE = NetworkTransmitterData.message(
createTranslation("gui", "network_transmitter.status.inactive")
);
- private static final NetworkTransmitterStatus MISSING_NETWORK_CARD = NetworkTransmitterStatus.error(
+ private static final NetworkTransmitterData MISSING_NETWORK_CARD = NetworkTransmitterData.error(
createTranslation("gui", "network_transmitter.status.missing_network_card").withStyle(ChatFormatting.DARK_RED)
);
- private static final NetworkTransmitterStatus RECEIVER_UNREACHABLE = NetworkTransmitterStatus.error(
+ private static final NetworkTransmitterData RECEIVER_UNREACHABLE = NetworkTransmitterData.error(
createTranslation("gui", "network_transmitter.status.receiver_unreachable").withStyle(ChatFormatting.DARK_RED)
);
@@ -102,7 +103,7 @@ private NetworkTransmitterState calculateState() {
return receiverFound ? NetworkTransmitterState.ACTIVE : NetworkTransmitterState.ERROR;
}
- NetworkTransmitterStatus getStatus() {
+ NetworkTransmitterData getStatus() {
final Network network = mainNode.getNetwork();
if (!mainNode.isActive() || network == null || level == null) {
return INACTIVE;
@@ -119,7 +120,7 @@ NetworkTransmitterStatus getStatus() {
"gui",
"network_transmitter.status.transmitting",
receiverKey.getDistance(worldPosition)) : receiverKey.getDimensionName();
- return NetworkTransmitterStatus.message(message);
+ return NetworkTransmitterData.message(message);
}
@Override
@@ -152,16 +153,19 @@ Container getNetworkCardInventory() {
}
@Override
- public void saveAdditional(final CompoundTag tag) {
- super.saveAdditional(tag);
- tag.put(TAG_NETWORK_CARD_INVENTORY, networkCardInventory.createTag());
+ public void saveAdditional(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.saveAdditional(tag, provider);
+ tag.put(TAG_NETWORK_CARD_INVENTORY, networkCardInventory.createTag(provider));
}
@Override
- public void load(final CompoundTag tag) {
- super.load(tag);
+ public void loadAdditional(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.loadAdditional(tag, provider);
if (tag.contains(TAG_NETWORK_CARD_INVENTORY)) {
- networkCardInventory.fromTag(tag.getList(TAG_NETWORK_CARD_INVENTORY, Tag.TAG_COMPOUND));
+ networkCardInventory.fromTag(
+ tag.getList(TAG_NETWORK_CARD_INVENTORY, Tag.TAG_COMPOUND),
+ provider
+ );
}
updateReceiverLocation();
}
@@ -177,10 +181,13 @@ public AbstractContainerMenu createMenu(final int syncId, final Inventory invent
}
@Override
- public void writeScreenOpeningData(final ServerPlayer player, final FriendlyByteBuf buf) {
- final NetworkTransmitterStatus status = getStatus();
- buf.writeBoolean(status.error());
- buf.writeComponent(status.message());
+ public NetworkTransmitterData getMenuData() {
+ return getStatus();
+ }
+
+ @Override
+ public StreamEncoder getMenuCodec() {
+ return NetworkTransmitterData.STREAM_CODEC;
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterContainerMenu.java
index 83acf1856..b5c8d47d2 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterContainerMenu.java
@@ -1,6 +1,5 @@
package com.refinedmods.refinedstorage2.platform.common.networking;
-import com.refinedmods.refinedstorage2.platform.common.Platform;
import com.refinedmods.refinedstorage2.platform.common.content.Menus;
import com.refinedmods.refinedstorage2.platform.common.support.AbstractBaseContainerMenu;
import com.refinedmods.refinedstorage2.platform.common.support.RedstoneMode;
@@ -8,11 +7,11 @@
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.PropertyTypes;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ServerProperty;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ValidatedSlot;
+import com.refinedmods.refinedstorage2.platform.common.support.packet.s2c.S2CPackets;
import javax.annotation.Nullable;
import com.google.common.util.concurrent.RateLimiter;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.Container;
import net.minecraft.world.entity.player.Inventory;
@@ -23,7 +22,7 @@ public class NetworkTransmitterContainerMenu extends AbstractBaseContainerMenu {
private final NetworkTransmitterBlockEntity blockEntity;
private final Player player;
private final RateLimiter statusUpdateRateLimiter = RateLimiter.create(2);
- private NetworkTransmitterStatus status;
+ private NetworkTransmitterData status;
NetworkTransmitterContainerMenu(final int syncId,
final Inventory playerInventory,
@@ -42,12 +41,12 @@ public class NetworkTransmitterContainerMenu extends AbstractBaseContainerMenu {
public NetworkTransmitterContainerMenu(final int syncId,
final Inventory playerInventory,
- final FriendlyByteBuf buf) {
+ final NetworkTransmitterData status) {
super(Menus.INSTANCE.getNetworkTransmitter(), syncId);
registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE));
this.blockEntity = null;
this.player = playerInventory.player;
- this.status = new NetworkTransmitterStatus(buf.readBoolean(), buf.readComponent());
+ this.status = status;
addSlots(playerInventory, new NetworkCardInventory());
}
@@ -60,19 +59,16 @@ public void broadcastChanges() {
if (!statusUpdateRateLimiter.tryAcquire()) {
return;
}
- final NetworkTransmitterStatus newStatus = blockEntity.getStatus();
+ final NetworkTransmitterData newStatus = blockEntity.getStatus();
if (newStatus.message().equals(status.message())) {
return;
}
updateStatus(serverPlayer, newStatus);
}
- private void updateStatus(final ServerPlayer serverPlayer, final NetworkTransmitterStatus newStatus) {
+ private void updateStatus(final ServerPlayer serverPlayer, final NetworkTransmitterData newStatus) {
this.status = newStatus;
- Platform.INSTANCE.getServerToClientCommunications().sendNetworkTransmitterStatus(
- serverPlayer,
- newStatus
- );
+ S2CPackets.sendNetworkTransmitterStatus(serverPlayer, newStatus);
}
private void addSlots(final Inventory playerInventory, final Container networkCardInventory) {
@@ -87,11 +83,11 @@ private void addSlots(final Inventory playerInventory, final Container networkCa
transferManager.addBiTransfer(playerInventory, networkCardInventory);
}
- NetworkTransmitterStatus getStatus() {
+ NetworkTransmitterData getStatus() {
return status;
}
- public void setStatus(final NetworkTransmitterStatus status) {
+ public void setStatus(final NetworkTransmitterData status) {
this.status = status;
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterData.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterData.java
new file mode 100644
index 000000000..a5bd82539
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterData.java
@@ -0,0 +1,24 @@
+package com.refinedmods.refinedstorage2.platform.common.networking;
+
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.ComponentSerialization;
+import net.minecraft.network.codec.ByteBufCodecs;
+import net.minecraft.network.codec.StreamCodec;
+
+public record NetworkTransmitterData(boolean error, Component message) {
+ public static final StreamCodec STREAM_CODEC =
+ StreamCodec.composite(
+ ByteBufCodecs.BOOL, NetworkTransmitterData::error,
+ ComponentSerialization.STREAM_CODEC, NetworkTransmitterData::message,
+ NetworkTransmitterData::new
+ );
+
+ static NetworkTransmitterData error(final Component message) {
+ return new NetworkTransmitterData(true, message);
+ }
+
+ static NetworkTransmitterData message(final Component message) {
+ return new NetworkTransmitterData(false, message);
+ }
+}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterScreen.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterScreen.java
index 56b42cc98..b9033acce 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterScreen.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterScreen.java
@@ -33,7 +33,7 @@ protected void init() {
@Override
protected void renderLabels(final GuiGraphics graphics, final int mouseX, final int mouseY) {
super.renderLabels(graphics, mouseX, mouseY);
- final NetworkTransmitterStatus status = getMenu().getStatus();
+ final NetworkTransmitterData status = getMenu().getStatus();
final int displayTextX = 51;
if (status.error()) {
graphics.blit(TextureIds.ICONS, displayTextX, 23, 246, 148, 10, 10);
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterStatus.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterStatus.java
deleted file mode 100644
index 4fc4aa4ed..000000000
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/NetworkTransmitterStatus.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.refinedmods.refinedstorage2.platform.common.networking;
-
-import net.minecraft.network.chat.Component;
-
-public record NetworkTransmitterStatus(boolean error, Component message) {
- static NetworkTransmitterStatus error(final Component message) {
- return new NetworkTransmitterStatus(true, message);
- }
-
- static NetworkTransmitterStatus message(final Component message) {
- return new NetworkTransmitterStatus(false, message);
- }
-}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/RelayBlockEntity.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/RelayBlockEntity.java
index b2b093bf6..41c0d4397 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/RelayBlockEntity.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/RelayBlockEntity.java
@@ -14,8 +14,9 @@
import com.refinedmods.refinedstorage2.platform.common.support.FilterModeSettings;
import com.refinedmods.refinedstorage2.platform.common.support.FilterWithFuzzyMode;
import com.refinedmods.refinedstorage2.platform.common.support.RedstoneMode;
-import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeExtendedMenuProvider;
import com.refinedmods.refinedstorage2.platform.common.support.network.AbstractRedstoneModeNetworkNodeContainerBlockEntity;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerData;
import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerImpl;
import java.util.HashSet;
@@ -24,10 +25,11 @@
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
+import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
-import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.codec.StreamEncoder;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
@@ -36,7 +38,7 @@
import static java.util.Objects.requireNonNull;
public class RelayBlockEntity extends AbstractRedstoneModeNetworkNodeContainerBlockEntity
- implements NetworkNodeMenuProvider {
+ implements NetworkNodeExtendedMenuProvider {
private static final String TAG_PASS_THROUGH = "passthrough";
private static final String TAG_PASS_ENERGY = "passenergy";
private static final String TAG_PASS_SECURITY = "passsecurity";
@@ -180,8 +182,13 @@ protected InWorldNetworkNodeContainer createMainContainer(final RelayInputNetwor
}
@Override
- public void writeScreenOpeningData(final ServerPlayer player, final FriendlyByteBuf buf) {
- filter.getFilterContainer().writeToUpdatePacket(buf);
+ public ResourceContainerData getMenuData() {
+ return ResourceContainerData.of(filter.getFilterContainer());
+ }
+
+ @Override
+ public StreamEncoder getMenuCodec() {
+ return ResourceContainerData.STREAM_CODEC;
}
@Override
@@ -196,9 +203,9 @@ public AbstractContainerMenu createMenu(final int syncId, final Inventory invent
}
@Override
- public void writeConfiguration(final CompoundTag tag) {
- super.writeConfiguration(tag);
- filter.save(tag);
+ public void writeConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.writeConfiguration(tag, provider);
+ filter.save(tag, provider);
tag.putInt(TAG_FILTER_MODE, FilterModeSettings.getFilterMode(filterMode));
tag.putBoolean(TAG_PASS_THROUGH, passThrough);
tag.putBoolean(TAG_PASS_ENERGY, mainNode.hasComponentType(RelayComponentType.ENERGY));
@@ -209,9 +216,9 @@ public void writeConfiguration(final CompoundTag tag) {
}
@Override
- public void readConfiguration(final CompoundTag tag) {
- super.readConfiguration(tag);
- filter.load(tag);
+ public void readConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.readConfiguration(tag, provider);
+ filter.load(tag, provider);
if (tag.contains(TAG_FILTER_MODE)) {
filterMode = FilterModeSettings.getFilterMode(tag.getInt(TAG_FILTER_MODE));
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/RelayContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/RelayContainerMenu.java
index 86a6494e7..bfa0d1017 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/RelayContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/networking/RelayContainerMenu.java
@@ -10,10 +10,10 @@
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ClientProperty;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.PropertyTypes;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ServerProperty;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerData;
import javax.annotation.Nullable;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
@@ -26,12 +26,14 @@ public class RelayContainerMenu extends AbstractSimpleFilterContainerMenu permissions = new ArrayList<>();
+ private final List permissions;
protected AbstractSecurityCardContainerMenu(final MenuType> menuType,
final int syncId,
final Inventory playerInventory,
- final FriendlyByteBuf buf) {
+ final SecurityCardData securityCardData) {
super(menuType, syncId);
this.playerInventory = playerInventory;
- this.disabledSlot = PlatformApi.INSTANCE.getSlotReference(buf).orElse(null);
- final int amountOfPermissions = buf.readInt();
- for (int i = 0; i < amountOfPermissions; ++i) {
- final ResourceLocation id = buf.readResourceLocation();
- final boolean allowed = buf.readBoolean();
- final boolean dirty = buf.readBoolean();
- PlatformApi.INSTANCE.getPermissionRegistry().get(id).ifPresent(permission -> permissions.add(new Permission(
- permission,
- allowed,
- dirty
- )));
- }
+ this.disabledSlot = securityCardData.slotReference();
+ this.permissions = securityCardData.permissions();
}
protected AbstractSecurityCardContainerMenu(final MenuType> menuType,
@@ -48,10 +35,11 @@ protected AbstractSecurityCardContainerMenu(final MenuType> menuType,
super(menuType, syncId);
this.playerInventory = playerInventory;
this.disabledSlot = disabledSlot;
+ this.permissions = new ArrayList<>();
onScreenReady(0);
}
- List getPermissions() {
+ List getPermissions() {
return permissions;
}
@@ -61,59 +49,57 @@ public void onScreenReady(final int playerInventoryY) {
addPlayerInventory(playerInventory, 8, playerInventoryY);
}
- public void setPermission(final ResourceLocation permissionId, final boolean allowed) {
+ public void setPermission(final PlatformPermission permission, final boolean allowed) {
if (disabledSlot == null) {
return;
}
- disabledSlot.resolve(playerInventory.player).ifPresent(stack -> setPermission(stack, permissionId, allowed));
+ disabledSlot.resolve(playerInventory.player).ifPresent(stack -> setPermission(stack, permission, allowed));
}
- private void setPermission(final ItemStack stack, final ResourceLocation permissionId, final boolean allowed) {
- if (stack.getItem() instanceof AbstractSecurityCardItem securityCardItem) {
- securityCardItem.setPermission(stack, permissionId, allowed);
+ private void setPermission(final ItemStack stack, final PlatformPermission permission, final boolean allowed) {
+ if (stack.getItem() instanceof AbstractSecurityCardItem> securityCardItem) {
+ securityCardItem.setPermission(stack, permission, allowed);
}
}
- public void resetPermission(final ResourceLocation permissionId) {
+ public void resetPermissionServer(final PlatformPermission permission) {
if (disabledSlot == null) {
return;
}
- disabledSlot.resolve(playerInventory.player).ifPresent(stack -> resetPermission(stack, permissionId));
+ disabledSlot.resolve(playerInventory.player).ifPresent(stack -> resetPermissionServer(stack, permission));
}
- private void resetPermission(final ItemStack stack, final ResourceLocation permissionId) {
- if (stack.getItem() instanceof AbstractSecurityCardItem securityCardItem) {
- securityCardItem.resetPermission(stack, permissionId);
+ private void resetPermissionServer(final ItemStack stack, final PlatformPermission permission) {
+ if (stack.getItem() instanceof AbstractSecurityCardItem> securityCardItem) {
+ securityCardItem.resetPermission(stack, permission);
}
}
- Permission resetPermission(final PlatformPermission permission) {
+ SecurityCardData.Permission resetPermission(final PlatformPermission permission) {
final boolean allowed = permission.isAllowedByDefault();
- Platform.INSTANCE.getClientToServerCommunications().sendSecurityCardResetPermission(permission);
+ C2SPackets.sendSecurityCardResetPermission(permission);
return updatePermissionLocally(permission, allowed, false);
}
- Permission changePermission(final PlatformPermission permission, final boolean selected) {
- Platform.INSTANCE.getClientToServerCommunications().sendSecurityCardPermission(permission, selected);
+ SecurityCardData.Permission changePermission(final PlatformPermission permission, final boolean selected) {
+ C2SPackets.sendSecurityCardPermission(permission, selected);
return updatePermissionLocally(permission, selected, true);
}
- private Permission updatePermissionLocally(final PlatformPermission permission,
- final boolean allowed,
- final boolean dirty) {
- final Permission localPermission = permissions.stream().filter(p -> p.platformPermission == permission)
+ private SecurityCardData.Permission updatePermissionLocally(final PlatformPermission permission,
+ final boolean allowed,
+ final boolean dirty) {
+ final SecurityCardData.Permission
+ localPermission = permissions.stream().filter(p -> p.permission() == permission)
.findFirst()
.orElseThrow();
final int index = permissions.indexOf(localPermission);
- final Permission updatedLocalPermission = new Permission(
- localPermission.platformPermission,
+ final SecurityCardData.Permission updatedLocalPermission = new SecurityCardData.Permission(
+ localPermission.permission(),
allowed,
dirty
);
permissions.set(index, updatedLocalPermission);
return updatedLocalPermission;
}
-
- record Permission(PlatformPermission platformPermission, boolean allowed, boolean dirty) {
- }
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/AbstractSecurityCardExtendedMenuProvider.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/AbstractSecurityCardExtendedMenuProvider.java
index 92247cfc1..bafbdfe33 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/AbstractSecurityCardExtendedMenuProvider.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/AbstractSecurityCardExtendedMenuProvider.java
@@ -3,40 +3,30 @@
import com.refinedmods.refinedstorage2.api.network.security.SecurityPolicy;
import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import com.refinedmods.refinedstorage2.platform.api.security.PlatformPermission;
-import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.ExtendedMenuProvider;
import java.util.List;
import java.util.Set;
-import net.minecraft.network.FriendlyByteBuf;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.server.level.ServerPlayer;
-
-abstract class AbstractSecurityCardExtendedMenuProvider implements ExtendedMenuProvider {
- private final SlotReference slotReference;
+abstract class AbstractSecurityCardExtendedMenuProvider implements ExtendedMenuProvider {
private final SecurityPolicy securityPolicy;
private final Set dirtyPermissions;
- AbstractSecurityCardExtendedMenuProvider(final SlotReference slotReference,
- final SecurityPolicy securityPolicy,
+ AbstractSecurityCardExtendedMenuProvider(final SecurityPolicy securityPolicy,
final Set dirtyPermissions) {
- this.slotReference = slotReference;
this.securityPolicy = securityPolicy;
this.dirtyPermissions = dirtyPermissions;
}
- @Override
- public void writeScreenOpeningData(final ServerPlayer player, final FriendlyByteBuf buf) {
- PlatformApi.INSTANCE.writeSlotReference(slotReference, buf);
-
- final List permissions = PlatformApi.INSTANCE.getPermissionRegistry().getAll();
- buf.writeInt(permissions.size());
- for (final PlatformPermission permission : permissions) {
- final ResourceLocation id = PlatformApi.INSTANCE.getPermissionRegistry().getId(permission).orElseThrow();
- buf.writeResourceLocation(id);
- buf.writeBoolean(securityPolicy.isAllowed(permission));
- buf.writeBoolean(dirtyPermissions.contains(permission));
- }
+ protected final List getDataPermissions() {
+ return PlatformApi.INSTANCE.getPermissionRegistry().getAll().stream().map(this::toDataPermission).toList();
+ }
+
+ private SecurityCardData.Permission toDataPermission(final PlatformPermission permission) {
+ return new SecurityCardData.Permission(
+ permission,
+ securityPolicy.isAllowed(permission),
+ dirtyPermissions.contains(permission)
+ );
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/AbstractSecurityCardItem.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/AbstractSecurityCardItem.java
index beef7bf88..201734078 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/AbstractSecurityCardItem.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/AbstractSecurityCardItem.java
@@ -7,20 +7,17 @@
import com.refinedmods.refinedstorage2.platform.api.security.SecurityPolicyContainerItem;
import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference;
import com.refinedmods.refinedstorage2.platform.common.Platform;
+import com.refinedmods.refinedstorage2.platform.common.content.DataComponents;
-import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
-import java.util.stream.Collectors;
-import javax.annotation.Nullable;
import net.minecraft.ChatFormatting;
-import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.Style;
-import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
@@ -32,19 +29,17 @@
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createTranslation;
-abstract class AbstractSecurityCardItem extends Item implements SecurityPolicyContainerItem {
- private static final String TAG_PERMISSIONS = "permissions";
-
+abstract class AbstractSecurityCardItem extends Item implements SecurityPolicyContainerItem {
protected AbstractSecurityCardItem(final Properties properties) {
super(properties);
}
@Override
public void appendHoverText(final ItemStack stack,
- @Nullable final Level level,
+ final TooltipContext context,
final List lines,
final TooltipFlag flag) {
- super.appendHoverText(stack, level, lines, flag);
+ super.appendHoverText(stack, context, lines, flag);
getPolicy(stack).ifPresent(policy -> appendHoverText(lines, policy, getDirtyPermissions(stack)));
}
@@ -83,6 +78,7 @@ private void doUse(final InteractionHand hand, final ServerPlayer player, final
getPolicy(stack).ifPresent(policy -> {
final Set dirtyPermissions = getDirtyPermissions(stack);
Platform.INSTANCE.getMenuOpener().openMenu(player, createMenuProvider(
+ player.server,
PlatformApi.INSTANCE.createInventorySlotReference(player, hand),
policy,
dirtyPermissions,
@@ -92,35 +88,35 @@ private void doUse(final InteractionHand hand, final ServerPlayer player, final
}
private void clearConfiguration(final ServerPlayer player, final ItemStack stack) {
- stack.setTag(null);
+ stack.remove(DataComponents.INSTANCE.getSecurityCardPermissions());
player.sendSystemMessage(createTranslation("item", "security_card.cleared_configuration"));
}
- abstract AbstractSecurityCardExtendedMenuProvider createMenuProvider(SlotReference slotReference,
- SecurityPolicy policy,
- Set dirtyPermissions,
- ItemStack stack);
+ abstract AbstractSecurityCardExtendedMenuProvider createMenuProvider(
+ MinecraftServer server,
+ SlotReference slotReference,
+ SecurityPolicy policy,
+ Set dirtyPermissions,
+ ItemStack stack
+ );
@Override
public Optional getPolicy(final ItemStack stack) {
if (!isValid(stack)) {
return Optional.empty();
}
- if (stack.getTag() == null || !stack.getTag().contains(TAG_PERMISSIONS)) {
+ final SecurityCardPermissions permissions = stack.get(DataComponents.INSTANCE.getSecurityCardPermissions());
+ if (permissions == null) {
return Optional.of(PlatformApi.INSTANCE.createDefaultSecurityPolicy());
}
- final CompoundTag permissionsTag = stack.getTag().getCompound(TAG_PERMISSIONS);
- return Optional.of(createPolicy(permissionsTag));
+ return Optional.of(createPolicy(permissions));
}
- private SecurityPolicy createPolicy(final CompoundTag permissionsTag) {
+ private SecurityPolicy createPolicy(final SecurityCardPermissions permissions) {
final Set allowedPermissions = new HashSet<>();
for (final PlatformPermission permission : PlatformApi.INSTANCE.getPermissionRegistry().getAll()) {
- final ResourceLocation permissionId = PlatformApi.INSTANCE.getPermissionRegistry()
- .getId(permission)
- .orElseThrow();
- final boolean dirty = permissionsTag.contains(permissionId.toString());
- final boolean didExplicitlyAllow = dirty && permissionsTag.getBoolean(permissionId.toString());
+ final boolean dirty = permissions.isDirty(permission);
+ final boolean didExplicitlyAllow = dirty && permissions.isAllowed(permission);
final boolean isAllowedByDefault = !dirty && permission.isAllowedByDefault();
if (didExplicitlyAllow || isAllowedByDefault) {
allowedPermissions.add(permission);
@@ -135,24 +131,27 @@ public boolean isValid(final ItemStack stack) {
}
Set getDirtyPermissions(final ItemStack stack) {
- if (stack.getTag() == null || !stack.getTag().contains(TAG_PERMISSIONS)) {
- return Collections.emptySet();
- }
- final CompoundTag permissionsTag = stack.getTag().getCompound(TAG_PERMISSIONS);
- return permissionsTag.getAllKeys()
- .stream()
- .map(ResourceLocation::new)
- .flatMap(id -> PlatformApi.INSTANCE.getPermissionRegistry().get(id).stream())
- .collect(Collectors.toSet());
+ return stack.getOrDefault(DataComponents.INSTANCE.getSecurityCardPermissions(), SecurityCardPermissions.EMPTY)
+ .permissions()
+ .keySet();
}
- void setPermission(final ItemStack stack, final ResourceLocation permissionId, final boolean allowed) {
- final CompoundTag permissionsTag = stack.getOrCreateTagElement(TAG_PERMISSIONS);
- permissionsTag.putBoolean(permissionId.toString(), allowed);
+ void setPermission(final ItemStack stack, final PlatformPermission permission, final boolean allowed) {
+ final SecurityCardPermissions permissions = stack.getOrDefault(
+ DataComponents.INSTANCE.getSecurityCardPermissions(),
+ SecurityCardPermissions.EMPTY
+ );
+ stack.set(
+ DataComponents.INSTANCE.getSecurityCardPermissions(),
+ permissions.withPermission(permission, allowed)
+ );
}
- void resetPermission(final ItemStack stack, final ResourceLocation permissionId) {
- final CompoundTag permissionsTag = stack.getOrCreateTagElement(TAG_PERMISSIONS);
- permissionsTag.remove(permissionId.toString());
+ void resetPermission(final ItemStack stack, final PlatformPermission permission) {
+ final SecurityCardPermissions permissions = stack.getOrDefault(
+ DataComponents.INSTANCE.getSecurityCardPermissions(),
+ SecurityCardPermissions.EMPTY
+ );
+ stack.set(DataComponents.INSTANCE.getSecurityCardPermissions(), permissions.forgetPermission(permission));
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/AbstractSecurityCardScreen.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/AbstractSecurityCardScreen.java
index 84d8e2b78..308bb2118 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/AbstractSecurityCardScreen.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/AbstractSecurityCardScreen.java
@@ -42,7 +42,7 @@ protected AbstractSecurityCardScreen(final T menu, final Inventory playerInvento
@Override
protected void init(final int rows) {
permissions.clear();
- final List menuPermissions = getMenu().getPermissions();
+ final List menuPermissions = getMenu().getPermissions();
for (int i = 0; i < menuPermissions.size(); ++i) {
final Permission permission = createPermission(menuPermissions.get(i), i, rows);
addWidget(permission.checkbox);
@@ -53,7 +53,7 @@ protected void init(final int rows) {
}
private Permission createPermission(
- final AbstractSecurityCardContainerMenu.Permission menuPermission,
+ final SecurityCardData.Permission menuPermission,
final int index,
final int rows
) {
@@ -66,7 +66,7 @@ private Permission createPermission(
}
private CustomCheckboxWidget createPermissionCheckbox(
- final AbstractSecurityCardContainerMenu.Permission menuPermission,
+ final SecurityCardData.Permission menuPermission,
final int y,
final boolean visible
) {
@@ -82,18 +82,18 @@ private CustomCheckboxWidget createPermissionCheckbox(
return checkbox;
}
- private void updatePermission(final AbstractSecurityCardContainerMenu.Permission menuPermission,
+ private void updatePermission(final SecurityCardData.Permission menuPermission,
final Button resetButton,
final CustomCheckboxWidget checkbox,
final boolean allowed) {
updateCheckboxAndResetButton(checkbox, resetButton, menu.changePermission(
- menuPermission.platformPermission(),
+ menuPermission.permission(),
allowed
));
}
- private Tooltip getPermissionTooltip(final AbstractSecurityCardContainerMenu.Permission menuPermission) {
- final PlatformPermission permission = menuPermission.platformPermission();
+ private Tooltip getPermissionTooltip(final SecurityCardData.Permission menuPermission) {
+ final PlatformPermission permission = menuPermission.permission();
final MutableComponent ownerName = permission.getOwnerName().copy().withStyle(
Style.EMPTY.withItalic(true).withColor(ChatFormatting.GRAY)
);
@@ -101,7 +101,7 @@ private Tooltip getPermissionTooltip(final AbstractSecurityCardContainerMenu.Per
return Tooltip.create(menuPermission.dirty() ? tooltip.append("\n").append(MODIFIED_TITLE) : tooltip);
}
- private Button createPermissionResetButton(final AbstractSecurityCardContainerMenu.Permission menuPermission,
+ private Button createPermissionResetButton(final SecurityCardData.Permission menuPermission,
final CustomCheckboxWidget checkbox,
final int y,
final boolean visible) {
@@ -114,23 +114,23 @@ private Button createPermissionResetButton(final AbstractSecurityCardContainerMe
return resetButton;
}
- private void resetPermission(final AbstractSecurityCardContainerMenu.Permission menuPermission,
+ private void resetPermission(final SecurityCardData.Permission menuPermission,
final CustomCheckboxWidget checkbox,
final Button resetButton) {
- updateCheckboxAndResetButton(checkbox, resetButton, menu.resetPermission(menuPermission.platformPermission()));
+ updateCheckboxAndResetButton(checkbox, resetButton, menu.resetPermission(menuPermission.permission()));
}
private void updateCheckboxAndResetButton(final CustomCheckboxWidget checkbox,
final Button resetButton,
- final AbstractSecurityCardContainerMenu.Permission menuPermission) {
+ final SecurityCardData.Permission menuPermission) {
checkbox.setMessage(getPermissionName(menuPermission));
checkbox.setTooltip(getPermissionTooltip(menuPermission));
checkbox.setSelected(menuPermission.allowed());
resetButton.active = menuPermission.dirty();
}
- private Component getPermissionName(final AbstractSecurityCardContainerMenu.Permission menuPermission) {
- final Component name = menuPermission.platformPermission().getName();
+ private Component getPermissionName(final SecurityCardData.Permission menuPermission) {
+ final Component name = menuPermission.permission().getName();
if (!menuPermission.dirty()) {
return name;
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/FallbackSecurityCardContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/FallbackSecurityCardContainerMenu.java
index 67eb37da1..0db10591a 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/FallbackSecurityCardContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/FallbackSecurityCardContainerMenu.java
@@ -3,14 +3,13 @@
import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference;
import com.refinedmods.refinedstorage2.platform.common.content.Menus;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.entity.player.Inventory;
public class FallbackSecurityCardContainerMenu extends AbstractSecurityCardContainerMenu {
public FallbackSecurityCardContainerMenu(final int syncId,
final Inventory playerInventory,
- final FriendlyByteBuf buf) {
- super(Menus.INSTANCE.getFallbackSecurityCard(), syncId, playerInventory, buf);
+ final SecurityCardData securityCardData) {
+ super(Menus.INSTANCE.getFallbackSecurityCard(), syncId, playerInventory, securityCardData);
}
FallbackSecurityCardContainerMenu(final int syncId,
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/FallbackSecurityCardExtendedMenuProvider.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/FallbackSecurityCardExtendedMenuProvider.java
index 4d7914689..0947fc515 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/FallbackSecurityCardExtendedMenuProvider.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/FallbackSecurityCardExtendedMenuProvider.java
@@ -8,20 +8,31 @@
import java.util.Set;
import javax.annotation.Nullable;
+import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.chat.Component;
+import net.minecraft.network.codec.StreamEncoder;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
-class FallbackSecurityCardExtendedMenuProvider extends AbstractSecurityCardExtendedMenuProvider {
+class FallbackSecurityCardExtendedMenuProvider extends AbstractSecurityCardExtendedMenuProvider {
private final SlotReference slotReference;
FallbackSecurityCardExtendedMenuProvider(final SlotReference slotReference,
final SecurityPolicy securityPolicy,
- final Set dirtyPermissions,
- final SlotReference slotReference1) {
- super(slotReference, securityPolicy, dirtyPermissions);
- this.slotReference = slotReference1;
+ final Set dirtyPermissions) {
+ super(securityPolicy, dirtyPermissions);
+ this.slotReference = slotReference;
+ }
+
+ @Override
+ public SecurityCardData getMenuData() {
+ return new SecurityCardData(slotReference, getDataPermissions());
+ }
+
+ @Override
+ public StreamEncoder getMenuCodec() {
+ return SecurityCardData.STREAM_CODEC;
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/FallbackSecurityCardItem.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/FallbackSecurityCardItem.java
index 85e94b6d0..2752565bf 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/FallbackSecurityCardItem.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/FallbackSecurityCardItem.java
@@ -11,13 +11,14 @@
import java.util.Set;
import net.minecraft.network.chat.Component;
+import net.minecraft.server.MinecraftServer;
import net.minecraft.world.inventory.tooltip.TooltipComponent;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createTranslation;
-public class FallbackSecurityCardItem extends AbstractSecurityCardItem {
+public class FallbackSecurityCardItem extends AbstractSecurityCardItem {
private static final Component HELP = createTranslation("item", "fallback_security_card.help");
public FallbackSecurityCardItem() {
@@ -25,11 +26,14 @@ public FallbackSecurityCardItem() {
}
@Override
- AbstractSecurityCardExtendedMenuProvider createMenuProvider(final SlotReference slotReference,
- final SecurityPolicy policy,
- final Set dirtyPermissions,
- final ItemStack stack) {
- return new FallbackSecurityCardExtendedMenuProvider(slotReference, policy, dirtyPermissions, slotReference);
+ AbstractSecurityCardExtendedMenuProvider createMenuProvider(
+ final MinecraftServer server,
+ final SlotReference slotReference,
+ final SecurityPolicy policy,
+ final Set dirtyPermissions,
+ final ItemStack stack
+ ) {
+ return new FallbackSecurityCardExtendedMenuProvider(slotReference, policy, dirtyPermissions);
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/PlayerBoundSecurityCardData.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/PlayerBoundSecurityCardData.java
new file mode 100644
index 000000000..a18f25f47
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/PlayerBoundSecurityCardData.java
@@ -0,0 +1,38 @@
+package com.refinedmods.refinedstorage2.platform.common.security;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import net.minecraft.core.UUIDUtil;
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.ByteBufCodecs;
+import net.minecraft.network.codec.StreamCodec;
+
+public record PlayerBoundSecurityCardData(SecurityCardData securityCardData,
+ Player boundTo,
+ List players) {
+ public static final StreamCodec STREAM_CODEC =
+ StreamCodec.composite(
+ SecurityCardData.STREAM_CODEC, PlayerBoundSecurityCardData::securityCardData,
+ Player.STREAM_CODEC, PlayerBoundSecurityCardData::boundTo,
+ ByteBufCodecs.collection(ArrayList::new, Player.STREAM_CODEC), PlayerBoundSecurityCardData::players,
+ PlayerBoundSecurityCardData::new
+ );
+
+ record Player(UUID id, String name) {
+ private static final StreamCodec STREAM_CODEC = StreamCodec.composite(
+ UUIDUtil.STREAM_CODEC, Player::id,
+ ByteBufCodecs.STRING_UTF8, Player::name,
+ Player::new
+ );
+
+ static Player of(final SecurityCardBoundPlayer securityCardBoundPlayer) {
+ return new Player(securityCardBoundPlayer.playerId(), securityCardBoundPlayer.playerName());
+ }
+
+ static Player of(final net.minecraft.world.entity.player.Player player) {
+ return new Player(player.getUUID(), player.getGameProfile().getName());
+ }
+ }
+}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardBoundPlayer.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardBoundPlayer.java
new file mode 100644
index 000000000..dce3c4918
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardBoundPlayer.java
@@ -0,0 +1,35 @@
+package com.refinedmods.refinedstorage2.platform.common.security;
+
+import java.util.UUID;
+
+import com.mojang.authlib.GameProfile;
+import com.mojang.serialization.Codec;
+import com.mojang.serialization.codecs.RecordCodecBuilder;
+import net.minecraft.core.UUIDUtil;
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.ByteBufCodecs;
+import net.minecraft.network.codec.StreamCodec;
+import net.minecraft.server.level.ServerPlayer;
+
+public record SecurityCardBoundPlayer(UUID playerId, String playerName) {
+ public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group(
+ UUIDUtil.CODEC.fieldOf("playerId").forGetter(SecurityCardBoundPlayer::playerId),
+ Codec.STRING.fieldOf("playerName").forGetter(SecurityCardBoundPlayer::playerName)
+ ).apply(instance, SecurityCardBoundPlayer::new));
+
+ public static final StreamCodec STREAM_CODEC = StreamCodec
+ .composite(
+ UUIDUtil.STREAM_CODEC, SecurityCardBoundPlayer::playerId,
+ ByteBufCodecs.STRING_UTF8, SecurityCardBoundPlayer::playerName,
+ SecurityCardBoundPlayer::new
+ );
+
+ static SecurityCardBoundPlayer of(final ServerPlayer player) {
+ final GameProfile profile = player.getGameProfile();
+ return new SecurityCardBoundPlayer(profile.getId(), profile.getName());
+ }
+
+ PlayerSecurityActor toSecurityActor() {
+ return new PlayerSecurityActor(playerId);
+ }
+}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardContainerMenu.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardContainerMenu.java
index 6118bc260..32d6ada0e 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardContainerMenu.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardContainerMenu.java
@@ -1,47 +1,47 @@
package com.refinedmods.refinedstorage2.platform.common.security;
import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference;
-import com.refinedmods.refinedstorage2.platform.common.Platform;
import com.refinedmods.refinedstorage2.platform.common.content.Menus;
+import com.refinedmods.refinedstorage2.platform.common.support.packet.c2s.C2SPackets;
import com.refinedmods.refinedstorage2.platform.common.support.stretching.ScreenSizeListener;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.item.ItemStack;
public class SecurityCardContainerMenu extends AbstractSecurityCardContainerMenu implements ScreenSizeListener {
- private final List players = new ArrayList<>();
- private Player boundTo;
+ private final List players;
+ private PlayerBoundSecurityCardData.Player boundTo;
public SecurityCardContainerMenu(final int syncId,
final Inventory playerInventory,
- final FriendlyByteBuf buf) {
- super(Menus.INSTANCE.getSecurityCard(), syncId, playerInventory, buf);
- this.boundTo = new Player(buf.readUUID(), buf.readUtf());
- final int amountOfPlayers = buf.readInt();
- for (int i = 0; i < amountOfPlayers; ++i) {
- final UUID id = buf.readUUID();
- final String name = buf.readUtf();
- players.add(new Player(id, name));
- }
+ final PlayerBoundSecurityCardData playerBoundSecurityCardData) {
+ super(
+ Menus.INSTANCE.getSecurityCard(),
+ syncId,
+ playerInventory,
+ playerBoundSecurityCardData.securityCardData()
+ );
+ this.boundTo = playerBoundSecurityCardData.boundTo();
+ this.players = playerBoundSecurityCardData.players();
}
SecurityCardContainerMenu(final int syncId, final Inventory playerInventory, final SlotReference disabledSlot) {
super(Menus.INSTANCE.getSecurityCard(), syncId, playerInventory, disabledSlot);
- this.boundTo = new Player(UUID.randomUUID(), "");
+ this.boundTo = new PlayerBoundSecurityCardData.Player(UUID.randomUUID(), "");
+ this.players = new ArrayList<>();
}
- List getPlayers() {
+ List getPlayers() {
return players;
}
- Player getBoundTo() {
+ PlayerBoundSecurityCardData.Player getBoundTo() {
return boundTo;
}
@@ -62,11 +62,8 @@ private void setBoundPlayer(final MinecraftServer server, final UUID playerId, f
}
}
- void changeBoundPlayer(final Player player) {
- Platform.INSTANCE.getClientToServerCommunications().sendSecurityCardBoundPlayer(player.id());
+ void changeBoundPlayer(final PlayerBoundSecurityCardData.Player player) {
+ C2SPackets.sendSecurityCardBoundPlayer(player.id());
this.boundTo = player;
}
-
- record Player(UUID id, String name) {
- }
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardData.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardData.java
new file mode 100644
index 000000000..bddbc98f7
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardData.java
@@ -0,0 +1,32 @@
+package com.refinedmods.refinedstorage2.platform.common.security;
+
+import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
+import com.refinedmods.refinedstorage2.platform.api.security.PlatformPermission;
+import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference;
+import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReferenceFactory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.ByteBufCodecs;
+import net.minecraft.network.codec.StreamCodec;
+
+public record SecurityCardData(SlotReference slotReference, List permissions) {
+ public static final StreamCodec STREAM_CODEC = StreamCodec.composite(
+ SlotReferenceFactory.STREAM_CODEC, SecurityCardData::slotReference,
+ ByteBufCodecs.collection(
+ ArrayList::new,
+ StreamCodec.composite(
+ PlatformApi.INSTANCE.getPermissionRegistry().streamCodec(), Permission::permission,
+ ByteBufCodecs.BOOL, Permission::allowed,
+ ByteBufCodecs.BOOL, Permission::dirty,
+ Permission::new
+ )
+ ), SecurityCardData::permissions,
+ SecurityCardData::new
+ );
+
+ record Permission(PlatformPermission permission, boolean allowed, boolean dirty) {
+ }
+}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardExtendedMenuProvider.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardExtendedMenuProvider.java
index 4f5cbc6c2..e0ca32bc0 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardExtendedMenuProvider.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardExtendedMenuProvider.java
@@ -5,50 +5,45 @@
import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference;
import com.refinedmods.refinedstorage2.platform.common.content.ContentNames;
-import java.util.Collections;
-import java.util.List;
import java.util.Set;
-import java.util.UUID;
import javax.annotation.Nullable;
-import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.codec.StreamEncoder;
+import net.minecraft.server.MinecraftServer;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
-class SecurityCardExtendedMenuProvider extends AbstractSecurityCardExtendedMenuProvider {
+class SecurityCardExtendedMenuProvider extends AbstractSecurityCardExtendedMenuProvider {
+ private final MinecraftServer server;
private final SlotReference slotReference;
- private final UUID boundPlayerId;
- private final String boundPlayerName;
+ private final SecurityCardBoundPlayer boundPlayer;
- SecurityCardExtendedMenuProvider(final SlotReference slotReference,
+ SecurityCardExtendedMenuProvider(final MinecraftServer server,
+ final SlotReference slotReference,
final SecurityPolicy securityPolicy,
final Set dirtyPermissions,
- final UUID boundPlayerId,
- final String boundPlayerName) {
- super(slotReference, securityPolicy, dirtyPermissions);
+ final SecurityCardBoundPlayer boundPlayer) {
+ super(securityPolicy, dirtyPermissions);
+ this.server = server;
this.slotReference = slotReference;
- this.boundPlayerId = boundPlayerId;
- this.boundPlayerName = boundPlayerName;
+ this.boundPlayer = boundPlayer;
}
@Override
- public void writeScreenOpeningData(final ServerPlayer player, final FriendlyByteBuf buf) {
- super.writeScreenOpeningData(player, buf);
-
- buf.writeUUID(boundPlayerId);
- buf.writeUtf(boundPlayerName);
+ public PlayerBoundSecurityCardData getMenuData() {
+ return new PlayerBoundSecurityCardData(
+ new SecurityCardData(slotReference, getDataPermissions()),
+ PlayerBoundSecurityCardData.Player.of(boundPlayer),
+ server.getPlayerList().getPlayers().stream().map(PlayerBoundSecurityCardData.Player::of).toList()
+ );
+ }
- final List players = player.getServer() == null
- ? Collections.emptyList()
- : player.getServer().getPlayerList().getPlayers();
- buf.writeInt(players.size());
- for (final ServerPlayer otherPlayer : players) {
- buf.writeUUID(otherPlayer.getUUID());
- buf.writeUtf(otherPlayer.getGameProfile().getName());
- }
+ @Override
+ public StreamEncoder getMenuCodec() {
+ return PlayerBoundSecurityCardData.STREAM_CODEC;
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardItem.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardItem.java
index b3040bb60..d0daa0d97 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardItem.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardItem.java
@@ -6,16 +6,15 @@
import com.refinedmods.refinedstorage2.platform.api.support.HelpTooltipComponent;
import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference;
import com.refinedmods.refinedstorage2.platform.common.Platform;
+import com.refinedmods.refinedstorage2.platform.common.content.DataComponents;
import java.util.List;
import java.util.Optional;
import java.util.Set;
-import java.util.UUID;
-import javax.annotation.Nullable;
import net.minecraft.ChatFormatting;
-import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
+import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
@@ -29,10 +28,7 @@
import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createTranslation;
import static java.util.Objects.requireNonNull;
-public class SecurityCardItem extends AbstractSecurityCardItem {
- private static final String TAG_BOUND_PLAYER_ID = "bid";
- private static final String TAG_BOUND_PLAYER_NAME = "bname";
-
+public class SecurityCardItem extends AbstractSecurityCardItem {
private static final Component UNBOUND_HELP = createTranslation("item", "security_card.unbound.help");
private static final Component BOUND_HELP = createTranslation("item", "security_card.bound.help");
@@ -42,26 +38,27 @@ public SecurityCardItem() {
@Override
public void appendHoverText(final ItemStack stack,
- @Nullable final Level level,
+ final TooltipContext context,
final List lines,
final TooltipFlag flag) {
- final String boundPlayerName = getBoundPlayerName(stack);
- if (boundPlayerName == null) {
+ final SecurityCardBoundPlayer boundPlayer = stack.get(DataComponents.INSTANCE.getSecurityCardBoundPlayer());
+ if (boundPlayer == null) {
lines.add(createTranslation("item", "security_card.unbound").withStyle(ChatFormatting.GRAY));
} else {
lines.add(createTranslation(
"item",
"security_card.bound",
- Component.literal(boundPlayerName).withStyle(ChatFormatting.YELLOW)
+ Component.literal(boundPlayer.playerName()).withStyle(ChatFormatting.YELLOW)
).withStyle(ChatFormatting.GRAY));
}
- super.appendHoverText(stack, level, lines, flag);
+ super.appendHoverText(stack, context, lines, flag);
}
@Override
public InteractionResultHolder use(final Level level, final Player player, final InteractionHand hand) {
final ItemStack stack = player.getItemInHand(hand);
- if (player instanceof ServerPlayer serverPlayer && !stack.hasTag()) {
+ if (player instanceof ServerPlayer serverPlayer
+ && !stack.has(DataComponents.INSTANCE.getSecurityCardBoundPlayer())) {
setBoundPlayer(serverPlayer, stack);
}
return super.use(level, player, hand);
@@ -73,33 +70,31 @@ public Optional getTooltipImage(final ItemStack stack) {
}
@Override
- AbstractSecurityCardExtendedMenuProvider createMenuProvider(final SlotReference slotReference,
- final SecurityPolicy policy,
- final Set dirtyPermissions,
- final ItemStack stack) {
+ AbstractSecurityCardExtendedMenuProvider createMenuProvider(
+ final MinecraftServer server,
+ final SlotReference slotReference,
+ final SecurityPolicy policy,
+ final Set dirtyPermissions,
+ final ItemStack stack
+ ) {
return new SecurityCardExtendedMenuProvider(
+ server,
slotReference,
policy,
dirtyPermissions,
- requireNonNull(getBoundPlayerId(stack)),
- requireNonNull(getBoundPlayerName(stack))
+ requireNonNull(stack.get(DataComponents.INSTANCE.getSecurityCardBoundPlayer()))
);
}
@Override
public boolean isValid(final ItemStack stack) {
- return stack.getTag() != null
- && stack.getTag().contains(TAG_BOUND_PLAYER_ID)
- && stack.getTag().contains(TAG_BOUND_PLAYER_NAME);
+ return stack.has(DataComponents.INSTANCE.getSecurityCardBoundPlayer());
}
@Override
public Optional getActor(final ItemStack stack) {
- final UUID playerId = getBoundPlayerId(stack);
- if (playerId == null) {
- return Optional.empty();
- }
- return Optional.of(new PlayerSecurityActor(playerId));
+ return Optional.ofNullable(stack.get(DataComponents.INSTANCE.getSecurityCardBoundPlayer()))
+ .map(SecurityCardBoundPlayer::toSecurityActor);
}
@Override
@@ -107,23 +102,8 @@ public long getEnergyUsage() {
return Platform.INSTANCE.getConfig().getSecurityCard().getEnergyUsage();
}
- @Nullable
- UUID getBoundPlayerId(final ItemStack stack) {
- return (stack.getTag() == null || !stack.getTag().contains(TAG_BOUND_PLAYER_ID))
- ? null
- : stack.getTag().getUUID(TAG_BOUND_PLAYER_ID);
- }
-
- @Nullable
- String getBoundPlayerName(final ItemStack stack) {
- return (stack.getTag() == null || !stack.getTag().contains(TAG_BOUND_PLAYER_NAME))
- ? null
- : stack.getTag().getString(TAG_BOUND_PLAYER_NAME);
- }
-
void setBoundPlayer(final ServerPlayer player, final ItemStack stack) {
- final CompoundTag tag = stack.getOrCreateTag();
- tag.putUUID(TAG_BOUND_PLAYER_ID, player.getGameProfile().getId());
- tag.putString(TAG_BOUND_PLAYER_NAME, player.getGameProfile().getName());
+ final SecurityCardBoundPlayer boundPlayer = SecurityCardBoundPlayer.of(player);
+ stack.set(DataComponents.INSTANCE.getSecurityCardBoundPlayer(), boundPlayer);
}
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardItemPropertyFunction.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardItemPropertyFunction.java
index 1583c2f80..8b228cf6b 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardItemPropertyFunction.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardItemPropertyFunction.java
@@ -8,8 +8,10 @@
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
+import static com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil.createIdentifier;
+
public class SecurityCardItemPropertyFunction implements ClampedItemPropertyFunction {
- public static final ResourceLocation NAME = new ResourceLocation("active");
+ public static final ResourceLocation NAME = createIdentifier("security_card_active");
@Override
public float unclampedCall(final ItemStack itemStack,
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardPermissions.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardPermissions.java
new file mode 100644
index 000000000..5d214cc49
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardPermissions.java
@@ -0,0 +1,52 @@
+package com.refinedmods.refinedstorage2.platform.common.security;
+
+import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
+import com.refinedmods.refinedstorage2.platform.api.security.PlatformPermission;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.mojang.serialization.Codec;
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.ByteBufCodecs;
+import net.minecraft.network.codec.StreamCodec;
+
+public record SecurityCardPermissions(Map permissions) {
+ public static final SecurityCardPermissions EMPTY = new SecurityCardPermissions(Collections.emptyMap());
+
+ public static final Codec CODEC = Codec.unboundedMap(
+ PlatformApi.INSTANCE.getPermissionRegistry().codec(),
+ Codec.BOOL
+ ).xmap(SecurityCardPermissions::new, SecurityCardPermissions::permissions);
+
+ public static final StreamCodec STREAM_CODEC = StreamCodec
+ .composite(
+ ByteBufCodecs.map(
+ HashMap::new,
+ PlatformApi.INSTANCE.getPermissionRegistry().streamCodec(),
+ ByteBufCodecs.BOOL
+ ), SecurityCardPermissions::permissions,
+ SecurityCardPermissions::new
+ );
+
+ boolean isDirty(final PlatformPermission permission) {
+ return permissions.containsKey(permission);
+ }
+
+ boolean isAllowed(final PlatformPermission permission) {
+ return permissions.getOrDefault(permission, false);
+ }
+
+ SecurityCardPermissions withPermission(final PlatformPermission permission, final boolean allowed) {
+ final Map newPermissions = new HashMap<>(permissions);
+ newPermissions.put(permission, allowed);
+ return new SecurityCardPermissions(newPermissions);
+ }
+
+ SecurityCardPermissions forgetPermission(final PlatformPermission permission) {
+ final Map newPermissions = new HashMap<>(permissions);
+ newPermissions.remove(permission);
+ return new SecurityCardPermissions(newPermissions);
+ }
+}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardScreen.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardScreen.java
index c44596498..42cb63e5c 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardScreen.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityCardScreen.java
@@ -29,10 +29,10 @@ private void toggleBoundPlayer(final Button button) {
if (menu.getPlayers().isEmpty()) {
return;
}
- final SecurityCardContainerMenu.Player currentPlayer = menu.getBoundTo();
+ final PlayerBoundSecurityCardData.Player currentPlayer = menu.getBoundTo();
final int index = menu.getPlayers().indexOf(currentPlayer);
final int nextIndex = (index + 1) % menu.getPlayers().size();
- final SecurityCardContainerMenu.Player nextPlayer = menu.getPlayers().get(nextIndex);
+ final PlayerBoundSecurityCardData.Player nextPlayer = menu.getPlayers().get(nextIndex);
menu.changeBoundPlayer(nextPlayer);
button.setMessage(Component.literal(nextPlayer.name()));
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityManagerBlockEntity.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityManagerBlockEntity.java
index a4c9b5a1e..f9ad7c507 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityManagerBlockEntity.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/security/SecurityManagerBlockEntity.java
@@ -18,9 +18,9 @@
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
+import net.minecraft.core.HolderLookup;
import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Inventory;
@@ -96,21 +96,21 @@ private long updateDefaultPolicyAndGetEnergyUsage() {
}
@Override
- public void load(final CompoundTag tag) {
+ public void loadAdditional(final CompoundTag tag, final HolderLookup.Provider provider) {
if (tag.contains(TAG_SECURITY_CARDS)) {
- ContainerUtil.read(tag.getCompound(TAG_SECURITY_CARDS), securityCards);
+ ContainerUtil.read(tag.getCompound(TAG_SECURITY_CARDS), securityCards, provider);
}
if (tag.contains(TAG_FALLBACK_SECURITY_CARD)) {
- ContainerUtil.read(tag.getCompound(TAG_FALLBACK_SECURITY_CARD), fallbackSecurityCard);
+ ContainerUtil.read(tag.getCompound(TAG_FALLBACK_SECURITY_CARD), fallbackSecurityCard, provider);
}
- super.load(tag);
+ super.loadAdditional(tag, provider);
}
@Override
- public void saveAdditional(final CompoundTag tag) {
- super.saveAdditional(tag);
- tag.put(TAG_SECURITY_CARDS, ContainerUtil.write(securityCards));
- tag.put(TAG_FALLBACK_SECURITY_CARD, ContainerUtil.write(fallbackSecurityCard));
+ public void saveAdditional(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.saveAdditional(tag, provider);
+ tag.put(TAG_SECURITY_CARDS, ContainerUtil.write(securityCards, provider));
+ tag.put(TAG_FALLBACK_SECURITY_CARD, ContainerUtil.write(fallbackSecurityCard, provider));
}
@Override
@@ -141,11 +141,6 @@ static boolean isValidFallbackSecurityCard(final ItemStack stack) {
return stack.getItem() instanceof FallbackSecurityCardItem;
}
- @Override
- public void writeScreenOpeningData(final ServerPlayer player, final FriendlyByteBuf buf) {
- // no op
- }
-
@Override
public Component getDisplayName() {
return ContentNames.SECURITY_MANAGER;
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/AbstractDiskContainerBlockEntity.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/AbstractDiskContainerBlockEntity.java
index 5f39ab293..6aa783e6b 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/AbstractDiskContainerBlockEntity.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/AbstractDiskContainerBlockEntity.java
@@ -7,8 +7,9 @@
import com.refinedmods.refinedstorage2.platform.common.support.BlockEntityWithDrops;
import com.refinedmods.refinedstorage2.platform.common.support.FilterWithFuzzyMode;
import com.refinedmods.refinedstorage2.platform.common.support.FilteredContainer;
-import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeMenuProvider;
+import com.refinedmods.refinedstorage2.platform.common.support.containermenu.NetworkNodeExtendedMenuProvider;
import com.refinedmods.refinedstorage2.platform.common.support.network.AbstractRedstoneModeNetworkNodeContainerBlockEntity;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerData;
import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceContainerImpl;
import com.refinedmods.refinedstorage2.platform.common.util.ContainerUtil;
@@ -17,14 +18,15 @@
import javax.annotation.Nullable;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.HolderLookup;
import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
-import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.StreamEncoder;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
-import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
@@ -33,7 +35,7 @@
public abstract class AbstractDiskContainerBlockEntity
extends AbstractRedstoneModeNetworkNodeContainerBlockEntity
- implements BlockEntityWithDrops, NetworkNodeMenuProvider {
+ implements BlockEntityWithDrops, NetworkNodeExtendedMenuProvider {
private static final String TAG_DISK_INVENTORY = "inv";
private static final String TAG_DISKS = "disks";
@@ -67,7 +69,7 @@ protected AbstractDiskContainerBlockEntity(final BlockEntityType> type,
protected abstract void setNormalizer(UnaryOperator normalizer);
@Nullable
- public static Item getDisk(final CompoundTag tag, final int slot) {
+ public static Item getDisk(final CompoundTag tag, final int slot, final HolderLookup.Provider provider) {
if (!tag.contains(TAG_DISK_INVENTORY)) {
return null;
}
@@ -75,7 +77,7 @@ public static Item getDisk(final CompoundTag tag, final int slot) {
if (!ContainerUtil.hasItemInSlot(diskInventoryTag, slot)) {
return null;
}
- final ItemStack diskStack = ContainerUtil.getItemInSlot(diskInventoryTag, slot);
+ final ItemStack diskStack = ContainerUtil.getItemInSlot(diskInventoryTag, slot, provider);
return diskStack.isEmpty() ? null : diskStack.getItem();
}
@@ -98,7 +100,7 @@ public void setLevel(final Level level) {
* However, when we place a block entity with nbt, the flow is different:
* #setLevel(Level) -> #load(CompoundTag) -> #setChanged().
* #setLevel(Level) is called first (before #load(CompoundTag)) and initialization will happen BEFORE
- * we load the tag!
+ * we load the components!
* That's why we need to override #setChanged() here, to ensure that the network and disks are still initialized
* correctly in that case.
*/
@@ -122,30 +124,30 @@ public void activenessChanged(final boolean newActive) {
}
@Override
- public void load(final CompoundTag tag) {
+ public void loadAdditional(final CompoundTag tag, final HolderLookup.Provider provider) {
fromClientTag(tag);
if (tag.contains(TAG_DISK_INVENTORY)) {
- ContainerUtil.read(tag.getCompound(TAG_DISK_INVENTORY), diskInventory);
+ ContainerUtil.read(tag.getCompound(TAG_DISK_INVENTORY), diskInventory, provider);
}
- super.load(tag);
+ super.loadAdditional(tag, provider);
}
@Override
- public void readConfiguration(final CompoundTag tag) {
- super.readConfiguration(tag);
- filter.load(tag);
+ public void readConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.readConfiguration(tag, provider);
+ filter.load(tag, provider);
}
@Override
- public void saveAdditional(final CompoundTag tag) {
- super.saveAdditional(tag);
- tag.put(TAG_DISK_INVENTORY, ContainerUtil.write(diskInventory));
+ public void saveAdditional(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.saveAdditional(tag, provider);
+ tag.put(TAG_DISK_INVENTORY, ContainerUtil.write(diskInventory, provider));
}
@Override
- public void writeConfiguration(final CompoundTag tag) {
- super.writeConfiguration(tag);
- filter.save(tag);
+ public void writeConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) {
+ super.writeConfiguration(tag, provider);
+ filter.save(tag, provider);
}
public FilteredContainer getDiskInventory() {
@@ -183,7 +185,7 @@ public Packet getUpdatePacket() {
}
@Override
- public CompoundTag getUpdateTag() {
+ public CompoundTag getUpdateTag(final HolderLookup.Provider provider) {
final CompoundTag tag = new CompoundTag();
// This null check is important. #getUpdateTag() can be called before the node's network is initialized!
if (mainNode.getNetwork() == null) {
@@ -203,8 +205,13 @@ public NonNullList getDrops() {
}
@Override
- public void writeScreenOpeningData(final ServerPlayer player, final FriendlyByteBuf buf) {
- filter.getFilterContainer().writeToUpdatePacket(buf);
+ public ResourceContainerData getMenuData() {
+ return ResourceContainerData.of(filter.getFilterContainer());
+ }
+
+ @Override
+ public StreamEncoder getMenuCodec() {
+ return ResourceContainerData.STREAM_CODEC;
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/ClientStorageRepository.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/ClientStorageRepository.java
index 899217fcc..a59b104e4 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/ClientStorageRepository.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/ClientStorageRepository.java
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage2.platform.common.storage;
import com.refinedmods.refinedstorage2.api.core.CoreValidations;
-import com.refinedmods.refinedstorage2.api.storage.Storage;
+import com.refinedmods.refinedstorage2.platform.api.storage.SerializableStorage;
import com.refinedmods.refinedstorage2.platform.api.storage.StorageInfo;
import com.refinedmods.refinedstorage2.platform.api.storage.StorageRepository;
@@ -30,17 +30,17 @@ public ClientStorageRepository(final Consumer storageInfoRequestAcceptor)
}
@Override
- public Optional get(final UUID id) {
+ public Optional get(final UUID id) {
throw new UnsupportedOperationException();
}
@Override
- public void set(final UUID id, final Storage storage) {
+ public void set(final UUID id, final SerializableStorage storage) {
throw new UnsupportedOperationException();
}
@Override
- public Optional removeIfEmpty(final UUID id) {
+ public Optional removeIfEmpty(final UUID id) {
throw new UnsupportedOperationException();
}
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/FluidStorageType.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/FluidStorageType.java
index ad384439b..7c1c51cc2 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/FluidStorageType.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/FluidStorageType.java
@@ -1,115 +1,42 @@
package com.refinedmods.refinedstorage2.platform.common.storage;
-import com.refinedmods.refinedstorage2.api.resource.ResourceAmount;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
-import com.refinedmods.refinedstorage2.api.storage.InMemoryStorageImpl;
-import com.refinedmods.refinedstorage2.api.storage.Storage;
-import com.refinedmods.refinedstorage2.api.storage.limited.LimitedStorage;
-import com.refinedmods.refinedstorage2.api.storage.limited.LimitedStorageImpl;
-import com.refinedmods.refinedstorage2.api.storage.tracked.InMemoryTrackedStorageRepository;
-import com.refinedmods.refinedstorage2.api.storage.tracked.TrackedStorage;
-import com.refinedmods.refinedstorage2.api.storage.tracked.TrackedStorageImpl;
-import com.refinedmods.refinedstorage2.api.storage.tracked.TrackedStorageRepository;
-import com.refinedmods.refinedstorage2.platform.api.storage.PlayerActor;
+import com.refinedmods.refinedstorage2.platform.api.storage.SerializableStorage;
import com.refinedmods.refinedstorage2.platform.api.storage.StorageType;
import com.refinedmods.refinedstorage2.platform.common.Platform;
import com.refinedmods.refinedstorage2.platform.common.support.resource.FluidResource;
-import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceTypes;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceCodecs;
import javax.annotation.Nullable;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.nbt.ListTag;
-import net.minecraft.nbt.Tag;
+import com.mojang.serialization.MapCodec;
public class FluidStorageType implements StorageType {
- private static final String TAG_CAPACITY = "cap";
- private static final String TAG_STACKS = "stacks";
- private static final String TAG_AMOUNT = "amount";
- private static final String TAG_CHANGED_BY = "cb";
- private static final String TAG_CHANGED_AT = "ca";
-
FluidStorageType() {
}
@Override
- public Storage create(@Nullable final Long capacity, final Runnable listener) {
- return innerCreate(capacity, listener);
- }
-
- @Override
- public Storage fromTag(final CompoundTag tag, final Runnable listener) {
- final PlatformStorage storage = innerCreate(
- tag.contains(TAG_CAPACITY) ? tag.getLong(TAG_CAPACITY) : null,
- listener
- );
- final ListTag stacks = tag.getList(TAG_STACKS, Tag.TAG_COMPOUND);
- for (final Tag stackTag : stacks) {
- ResourceTypes.FLUID.fromTag((CompoundTag) stackTag).ifPresent(resource -> storage.load(
- resource,
- ((CompoundTag) stackTag).getLong(TAG_AMOUNT),
- ((CompoundTag) stackTag).getString(TAG_CHANGED_BY),
- ((CompoundTag) stackTag).getLong(TAG_CHANGED_AT)
- ));
- }
- return storage;
- }
-
- private PlatformStorage innerCreate(@Nullable final Long capacity, final Runnable listener) {
- final TrackedStorageRepository trackingRepository = new InMemoryTrackedStorageRepository();
- if (capacity != null) {
- final LimitedStorageImpl delegate = new LimitedStorageImpl(
- new TrackedStorageImpl(
- new InMemoryStorageImpl(),
- trackingRepository,
- System::currentTimeMillis
- ),
- capacity
- );
- return new LimitedPlatformStorage(
- delegate,
- StorageTypes.FLUID,
- trackingRepository,
- listener
- );
- }
- return new PlatformStorage(
- new TrackedStorageImpl(new InMemoryStorageImpl(), trackingRepository, System::currentTimeMillis),
+ public SerializableStorage create(@Nullable final Long capacity, final Runnable listener) {
+ return StorageTypes.createHomogeneousStorage(
StorageTypes.FLUID,
- trackingRepository,
+ StorageCodecs.StorageData.empty(capacity),
listener
);
}
@Override
- public CompoundTag toTag(final Storage storage) {
- final CompoundTag tag = new CompoundTag();
- if (storage instanceof LimitedStorage limitedStorage) {
- tag.putLong(TAG_CAPACITY, limitedStorage.getCapacity());
- }
- final ListTag stacks = new ListTag();
- for (final ResourceAmount resourceAmount : storage.getAll()) {
- stacks.add(toTag(storage, resourceAmount));
- }
- tag.put(TAG_STACKS, stacks);
- return tag;
- }
-
- private CompoundTag toTag(final Storage storage, final ResourceAmount resourceAmount) {
- if (!(resourceAmount.getResource() instanceof FluidResource fluidResource)) {
- throw new UnsupportedOperationException();
- }
- final CompoundTag tag = fluidResource.toTag();
- tag.putLong(TAG_AMOUNT, resourceAmount.getAmount());
- if (storage instanceof TrackedStorage trackedStorage) {
- trackedStorage
- .findTrackedResourceByActorType(resourceAmount.getResource(), PlayerActor.class)
- .ifPresent(trackedResource -> {
- tag.putString(TAG_CHANGED_BY, trackedResource.getSourceName());
- tag.putLong(TAG_CHANGED_AT, trackedResource.getTime());
- });
- }
- return tag;
+ public MapCodec getMapCodec(final Runnable listener) {
+ return StorageCodecs.homogeneousStorageData(
+ ResourceCodecs.FLUID_CODEC
+ ).xmap(storageData -> StorageTypes.createHomogeneousStorage(
+ StorageTypes.FLUID,
+ storageData,
+ listener
+ ), storage -> StorageCodecs.StorageData.ofHomogeneousStorage(
+ storage,
+ FluidStorageType.this::isAllowed,
+ FluidResource.class::cast
+ ));
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/ItemStorageType.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/ItemStorageType.java
index 7f8893887..9a5e8705c 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/ItemStorageType.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/ItemStorageType.java
@@ -1,114 +1,41 @@
package com.refinedmods.refinedstorage2.platform.common.storage;
-import com.refinedmods.refinedstorage2.api.resource.ResourceAmount;
import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
-import com.refinedmods.refinedstorage2.api.storage.InMemoryStorageImpl;
-import com.refinedmods.refinedstorage2.api.storage.Storage;
-import com.refinedmods.refinedstorage2.api.storage.limited.LimitedStorage;
-import com.refinedmods.refinedstorage2.api.storage.limited.LimitedStorageImpl;
-import com.refinedmods.refinedstorage2.api.storage.tracked.InMemoryTrackedStorageRepository;
-import com.refinedmods.refinedstorage2.api.storage.tracked.TrackedStorage;
-import com.refinedmods.refinedstorage2.api.storage.tracked.TrackedStorageImpl;
-import com.refinedmods.refinedstorage2.api.storage.tracked.TrackedStorageRepository;
-import com.refinedmods.refinedstorage2.platform.api.storage.PlayerActor;
+import com.refinedmods.refinedstorage2.platform.api.storage.SerializableStorage;
import com.refinedmods.refinedstorage2.platform.api.storage.StorageType;
import com.refinedmods.refinedstorage2.platform.common.support.resource.ItemResource;
-import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceTypes;
+import com.refinedmods.refinedstorage2.platform.common.support.resource.ResourceCodecs;
import javax.annotation.Nullable;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.nbt.ListTag;
-import net.minecraft.nbt.Tag;
+import com.mojang.serialization.MapCodec;
public class ItemStorageType implements StorageType {
- private static final String TAG_CAPACITY = "cap";
- private static final String TAG_STACKS = "stacks";
- private static final String TAG_AMOUNT = "amount";
- private static final String TAG_CHANGED_BY = "cb";
- private static final String TAG_CHANGED_AT = "ca";
-
ItemStorageType() {
}
@Override
- public Storage create(@Nullable final Long capacity, final Runnable listener) {
- return innerCreate(capacity, listener);
- }
-
- @Override
- public Storage fromTag(final CompoundTag tag, final Runnable listener) {
- final PlatformStorage storage = innerCreate(
- tag.contains(TAG_CAPACITY) ? tag.getLong(TAG_CAPACITY) : null,
- listener
- );
- final ListTag stacks = tag.getList(TAG_STACKS, Tag.TAG_COMPOUND);
- for (final Tag stackTag : stacks) {
- ResourceTypes.ITEM.fromTag((CompoundTag) stackTag).ifPresent(resource -> storage.load(
- resource,
- ((CompoundTag) stackTag).getLong(TAG_AMOUNT),
- ((CompoundTag) stackTag).getString(TAG_CHANGED_BY),
- ((CompoundTag) stackTag).getLong(TAG_CHANGED_AT)
- ));
- }
- return storage;
- }
-
- private PlatformStorage innerCreate(@Nullable final Long capacity, final Runnable listener) {
- final TrackedStorageRepository trackingRepository = new InMemoryTrackedStorageRepository();
- if (capacity != null) {
- final LimitedStorageImpl delegate = new LimitedStorageImpl(
- new TrackedStorageImpl(
- new InMemoryStorageImpl(),
- trackingRepository,
- System::currentTimeMillis
- ),
- capacity
- );
- return new LimitedPlatformStorage(
- delegate,
- StorageTypes.ITEM,
- trackingRepository,
- listener
- );
- }
- return new PlatformStorage(
- new TrackedStorageImpl(new InMemoryStorageImpl(), trackingRepository, System::currentTimeMillis),
+ public SerializableStorage create(@Nullable final Long capacity, final Runnable listener) {
+ return StorageTypes.createHomogeneousStorage(
StorageTypes.ITEM,
- trackingRepository,
+ StorageCodecs.StorageData.empty(capacity),
listener
);
}
@Override
- public CompoundTag toTag(final Storage storage) {
- final CompoundTag tag = new CompoundTag();
- if (storage instanceof LimitedStorage limitedStorage) {
- tag.putLong(TAG_CAPACITY, limitedStorage.getCapacity());
- }
- final ListTag stacks = new ListTag();
- for (final ResourceAmount resourceAmount : storage.getAll()) {
- stacks.add(toTag(storage, resourceAmount));
- }
- tag.put(TAG_STACKS, stacks);
- return tag;
- }
-
- private CompoundTag toTag(final Storage storage, final ResourceAmount resourceAmount) {
- if (!(resourceAmount.getResource() instanceof ItemResource itemResource)) {
- throw new UnsupportedOperationException();
- }
- final CompoundTag tag = itemResource.toTag();
- tag.putLong(TAG_AMOUNT, resourceAmount.getAmount());
- if (storage instanceof TrackedStorage trackedStorage) {
- trackedStorage
- .findTrackedResourceByActorType(resourceAmount.getResource(), PlayerActor.class)
- .ifPresent(trackedResource -> {
- tag.putString(TAG_CHANGED_BY, trackedResource.getSourceName());
- tag.putLong(TAG_CHANGED_AT, trackedResource.getTime());
- });
- }
- return tag;
+ public MapCodec getMapCodec(final Runnable listener) {
+ return StorageCodecs.homogeneousStorageData(
+ ResourceCodecs.ITEM_CODEC
+ ).xmap(storageData -> StorageTypes.createHomogeneousStorage(
+ StorageTypes.ITEM,
+ storageData,
+ listener
+ ), storage -> StorageCodecs.StorageData.ofHomogeneousStorage(
+ storage,
+ ItemStorageType.this::isAllowed,
+ ItemResource.class::cast
+ ));
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/PlatformStorage.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/PlatformStorage.java
index 1ac6a7184..e0496c73e 100644
--- a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/PlatformStorage.java
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/PlatformStorage.java
@@ -14,7 +14,6 @@
import com.refinedmods.refinedstorage2.platform.api.storage.StorageType;
import java.util.Optional;
-import javax.annotation.Nullable;
class PlatformStorage extends AbstractProxyStorage implements SerializableStorage, TrackedStorage {
private final StorageType type;
@@ -31,14 +30,15 @@ class PlatformStorage extends AbstractProxyStorage implements SerializableStorag
this.listener = listener;
}
- void load(final ResourceKey resource, final long amount, @Nullable final String changedBy, final long changedAt) {
+ void load(final StorageCodecs.StorageResource extends ResourceKey> storageResource) {
+ final ResourceKey resource = storageResource.resource();
if (!type.isAllowed(resource)) {
return;
}
- super.insert(resource, amount, Action.EXECUTE, EmptyActor.INSTANCE);
- if (changedBy != null && !changedBy.isBlank()) {
- trackingRepository.update(resource, new PlayerActor(changedBy), changedAt);
- }
+ super.insert(resource, storageResource.amount(), Action.EXECUTE, EmptyActor.INSTANCE);
+ storageResource.changed().ifPresent(
+ changed -> trackingRepository.update(resource, new PlayerActor(changed.changedBy()), changed.changedAt())
+ );
}
@Override
diff --git a/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/StorageCodecs.java b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/StorageCodecs.java
new file mode 100644
index 000000000..d7151cfb9
--- /dev/null
+++ b/refinedstorage2-platform-common/src/main/java/com/refinedmods/refinedstorage2/platform/common/storage/StorageCodecs.java
@@ -0,0 +1,106 @@
+package com.refinedmods.refinedstorage2.platform.common.storage;
+
+import com.refinedmods.refinedstorage2.api.resource.ResourceAmount;
+import com.refinedmods.refinedstorage2.api.resource.ResourceKey;
+import com.refinedmods.refinedstorage2.api.storage.Storage;
+import com.refinedmods.refinedstorage2.api.storage.limited.LimitedStorage;
+import com.refinedmods.refinedstorage2.api.storage.tracked.TrackedResource;
+import com.refinedmods.refinedstorage2.api.storage.tracked.TrackedStorage;
+import com.refinedmods.refinedstorage2.platform.api.storage.PlayerActor;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import javax.annotation.Nullable;
+
+import com.mojang.serialization.Codec;
+import com.mojang.serialization.MapCodec;
+import com.mojang.serialization.codecs.RecordCodecBuilder;
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraft.network.codec.ByteBufCodecs;
+import net.minecraft.network.codec.StreamCodec;
+
+public final class StorageCodecs {
+ private static final StreamCodec TRACKED_RESOURCE_STREAM_CODEC =
+ StreamCodec.composite(
+ ByteBufCodecs.STRING_UTF8, TrackedResource::getSourceName,
+ ByteBufCodecs.VAR_LONG, TrackedResource::getTime,
+ TrackedResource::new
+ );
+ private static final Codec